From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 23FCDC87FC9 for ; Tue, 29 Jul 2025 12:39:55 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ugjcL-00036t-7X; Tue, 29 Jul 2025 08:39:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ugjbC-00021W-BA for grub-devel@gnu.org; Tue, 29 Jul 2025 08:38:33 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ugjb6-00037W-Lb for grub-devel@gnu.org; Tue, 29 Jul 2025 08:38:28 -0400 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56T4YthC001739; Tue, 29 Jul 2025 12:38:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=3qIQ8UOtSSb+r0IBx TN/3zHSWvLqNATuMkh82GQqw7w=; b=UXc/Oa/afuaJwwh4Z+9crzbGBHJ9lEwob XHJT+NeN2M80zfSCLpo0yRGmRAsKDm/fhG3px2TEjXAjrGQUqtPtw8ccIIiNat/a 5RXzq7xpSYMynHW/yueQioHhFfy70VzovJWrXfeyFz/X6BUvHBROAoCehLA2wXgL eomeVu57im6NaPoL+/qMd5gqIUiEqjcoMRm3onePIVBTh06cQm4v6npriaUpNw5z 58L6y4YG1ZkL+Y6ErCDuEbaeJ3Yl96GML0TTYeCwZBDs3u0ae7vFvcCIzvBPiV6k jenT4cSFV2h1l/LvYcfLjv8un45fZmo9/vjab3tQHoD+YYAuGfrAQ== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 486c6hmmp1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 29 Jul 2025 12:38:19 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 56T93POA015952; Tue, 29 Jul 2025 12:38:18 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 485aumj8d4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 29 Jul 2025 12:38:18 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 56TCcEVP48300538 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 29 Jul 2025 12:38:14 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 99D922004B; Tue, 29 Jul 2025 12:38:14 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0F15120040; Tue, 29 Jul 2025 12:38:12 +0000 (GMT) Received: from localhost.localdomain (unknown [9.39.21.169]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 29 Jul 2025 12:38:11 +0000 (GMT) From: Sudhakar Kuppusamy To: grub-devel@gnu.org Cc: dja@axtens.net, jan.setjeeilers@oracle.com, julian.klode@canonical.com, mate.kukri@canonical.com, pjones@redhat.com, msuchanek@suse.com, mlewando@redhat.com, stefanb@linux.ibm.com, avnish@linux.ibm.com, nayna@linux.ibm.com, ssrish@linux.ibm.com, Sudhakar Kuppusamy , Daniel Kiper Subject: [PATCH v6 06/20] appended signatures: Parse ASN1 node Date: Tue, 29 Jul 2025 18:06:55 +0530 Message-Id: <20250729123709.83349-7-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250729123709.83349-1-sudhakar@linux.ibm.com> References: <20250729123709.83349-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: 0F_LmBRW5f6sS3voM7_951qzAwfMqZoL X-Authority-Analysis: v=2.4 cv=Mbtsu4/f c=1 sm=1 tr=0 ts=6888c0bb cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=Wb1JkmetP80A:10 a=mDV3o1hIAAAA:8 a=JuTF4qcAAAAA:8 a=VnNF1IyMAAAA:8 a=yPCof4ZbAAAA:8 a=QQTzU-B8HNZ-fe_KibsA:9 a=WlT8qwTXB_Kj6um4hl3b:22 X-Proofpoint-ORIG-GUID: 0F_LmBRW5f6sS3voM7_951qzAwfMqZoL X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzI5MDA5MiBTYWx0ZWRfX1KCQKhmITaj6 K2pypbUaSjdY9POiCQZwKIs9TPlIS+2njcLWs600AyHV9tEuPzwTGkfTaWbMLyHHWu2Rhysh7M+ FPO0B7eRaQ4GThQr0Qdm20bkjbgY+clU9U5G3fQ4/Ex1YWKpLvVD1guOblAKCsK1DosIWhfj4HH vDiq5wiRGKGTbJjKV73/we6kJMDs11RcbUta/kbWO9iogYoon1IybZwFM+aAYnsUefl3RefEyVq PDRYZ081BFGdaaf6LWqOiJMU95bBVmJCJ2y7Ksr15UadMn3am4Nut1r3giXd/ggS+HO/Cp+lQjZ rJvgpQmgQirorFJQnOqGPmJfN+n5ZeiZr2l/sd5lqA4I7tyagjjBipW0mJO+Q146WgjQIFXGJjD 9kcOvC8kj6qgD445RfUNshJwrPeud7e0WG08xAgBbOG2bIOOsbaCA9jj71aqJeJWHb4yLIwJ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-29_03,2025-07-28_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 adultscore=0 bulkscore=0 suspectscore=0 priorityscore=1501 spamscore=0 mlxscore=0 impostorscore=0 phishscore=0 mlxlogscore=999 lowpriorityscore=0 malwarescore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2507290092 Received-SPF: pass client-ip=148.163.156.1; envelope-from=sudhakar@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The development of GNU GRUB Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org VGhpcyBjb2RlIGFsbG93cyB1cyB0byBwYXJzZSBBU04xIG5vZGUgYW5kIGFsbG9jYXRpbmcgbWVt b3J5IHRvIHN0b3JlIGl0LgpJdCB3aWxsIHdvcmsgZm9yIGFueXRoaW5nIHdoZXJlIHRoZSBzaXpl IGxpYnRhc24xIHJldHVybnMgaXMgcmlnaHQ6CiAtIEludGVnZXJzCiAtIE9jdGV0IHN0cmluZ3MK IC0gREVSIGVuY29kaW5nIG9mIG90aGVyIHN0cnVjdHVyZXMKSXQgd2lsbCBfbm90XyB3b3JrIGZv ciB0aGluZ3Mgd2hlcmUgbGlidGFzbjEgc2l6ZSByZXF1aXJlcyBhZGp1c3RtZW50OgogLSBTdHJp bmdzIHRoYXQgcmVxdWlyZSBhbiBleHRyYSBOVUxMIGJ5dGUgYXQgdGhlIGVuZAogLSBCaXQgc3Ry aW5ncyBiZWNhdXNlIGxpYnRhc24xIHJldHVybnMgdGhlIGxlbmd0aCBpbiBiaXRzLCBub3QgYnl0 ZXMuCklmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbm9uLU5VTEwgdmFsdWUsIHRoZSBjYWxsZXIg bXVzdCBmcmVlIGl0LgoKU2lnbmVkLW9mZi1ieTogRGFuaWVsIEF4dGVucyA8ZGphQGF4dGVucy5u ZXQ+ClNpZ25lZC1vZmYtYnk6IFN1ZGhha2FyIEt1cHB1c2FteSA8c3VkaGFrYXJAbGludXguaWJt LmNvbT4KUmV2aWV3ZWQtYnk6IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXguaWJtLmNvbT4K UmV2aWV3ZWQtYnk6IEF2bmlzaCBDaG91aGFuIDxhdm5pc2hAbGludXguaWJtLmNvbT4KUmV2aWV3 ZWQtYnk6IERhbmllbCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+Ci0tLQogZ3J1Yi1j b3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmggfCA0MiArKysrKysrKysKIGdy dWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hc24xdXRpbC5jICAgIHwgOTYgKysrKysrKysr KysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTM4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGdydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hc24xdXRp bC5jCgpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVk c2lnLmggYi9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjkxY2MwNDBiYgotLS0gL2Rldi9udWxs CisrKyBiL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5oCkBAIC0w LDAgKzEsNDIgQEAKKy8qCisgKiAgR1JVQiAgLS0gIEdSYW5kIFVuaWZpZWQgQm9vdGxvYWRlcgor ICogIENvcHlyaWdodCAoQykgMjAyMCwgMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMjAsIDIwMjIsIDIwMjUgSUJNIENvcnBvcmF0aW9uCisg KgorICogIEdSVUIgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBHUlVCIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisg KiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIEdSVUIuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPGxpYnRhc24xLmg+CisKK2V4dGVy biBhc24xX25vZGUgZ3J1Yl9nbnV0bHNfZ251dGxzX2FzbjsKK2V4dGVybiBhc24xX25vZGUgZ3J1 Yl9nbnV0bHNfcGtpeF9hc247CisKKy8qIERvIGxpYnRhc24xIGluaXQuICovCitleHRlcm4gaW50 Cithc24xX2luaXQgKHZvaWQpOworCisvKgorICogUmVhZCBhIHZhbHVlIGZyb20gYW4gQVNOMSBu b2RlLCBhbGxvY2F0aW5nIG1lbW9yeSB0byBzdG9yZSBpdC4KKyAqIEl0IHdpbGwgd29yayBmb3Ig YW55dGhpbmcgd2hlcmUgdGhlIHNpemUgbGlidGFzbjEgcmV0dXJucyBpcyByaWdodDoKKyAqICAt IEludGVnZXJzCisgKiAgLSBPY3RldCBzdHJpbmdzCisgKiAgLSBERVIgZW5jb2Rpbmcgb2Ygb3Ro ZXIgc3RydWN0dXJlcworICogSXQgd2lsbCBfbm90XyB3b3JrIGZvciB0aGluZ3Mgd2hlcmUgbGli dGFzbjEgc2l6ZSByZXF1aXJlcyBhZGp1c3RtZW50OgorICogIC0gU3RyaW5ncyB0aGF0IHJlcXVp cmUgYW4gZXh0cmEgbnVsbCBieXRlIGF0IHRoZSBlbmQKKyAqICAtIEJpdCBzdHJpbmdzIGJlY2F1 c2UgbGlidGFzbjEgcmV0dXJucyB0aGUgbGVuZ3RoIGluIGJpdHMsIG5vdCBieXRlcy4KKyAqCisg KiBJZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIG5vbi1OVUxMIHZhbHVlLCB0aGUgY2FsbGVyIG11 c3QgZnJlZSBpdC4KKyAqLworZXh0ZXJuIHZvaWQgKgorZ3J1Yl9hc24xX2FsbG9jYXRlX2FuZF9y ZWFkIChhc24xX25vZGUgbm9kZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnJpZW5k bHlfbmFtZSwgaW50ICpjb250ZW50X3NpemUpOwpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2NvbW1h bmRzL2FwcGVuZGVkc2lnL2FzbjF1dGlsLmMgYi9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRz aWcvYXNuMXV0aWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjdlN2Vl MjY0YgotLS0gL2Rldi9udWxsCisrKyBiL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9h c24xdXRpbC5jCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiAgR1JVQiAgLS0gIEdSYW5kIFVuaWZp ZWQgQm9vdGxvYWRlcgorICogIENvcHlyaWdodCAoQykgMjAyMCwgMjAyMiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMjAsIDIwMjIsIDIwMjUgSUJN IENvcnBvcmF0aW9uCisgKgorICogIEdSVUIgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBHUlVCIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIEdSVUIuICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPGxpYnRh c24xLmg+CisjaW5jbHVkZSA8Z3J1Yi90eXBlcy5oPgorI2luY2x1ZGUgPGdydWIvZXJyLmg+Cisj aW5jbHVkZSA8Z3J1Yi9tbS5oPgorI2luY2x1ZGUgPGdydWIvY3J5cHRvLmg+CisjaW5jbHVkZSA8 Z3J1Yi9taXNjLmg+CisjaW5jbHVkZSA8Z3J1Yi9nY3J5cHQvZ2NyeXB0Lmg+CisKKyNpbmNsdWRl ICJhcHBlbmRlZHNpZy5oIgorCithc24xX25vZGUgZ3J1Yl9nbnV0bHNfZ251dGxzX2FzbiA9IE5V TEw7Cithc24xX25vZGUgZ3J1Yl9nbnV0bHNfcGtpeF9hc24gPSBOVUxMOworCitleHRlcm4gY29u c3QgYXNuMV9zdGF0aWNfbm9kZSBncnViX2dudXRsc19hc24xX3RhYltdOworZXh0ZXJuIGNvbnN0 IGFzbjFfc3RhdGljX25vZGUgZ3J1Yl9wa2l4X2FzbjFfdGFiW107CisKKy8qCisgKiBSZWFkIGEg dmFsdWUgZnJvbSBhbiBBU04xIG5vZGUsIGFsbG9jYXRpbmcgbWVtb3J5IHRvIHN0b3JlIGl0Lgor ICogSXQgd2lsbCB3b3JrIGZvciBhbnl0aGluZyB3aGVyZSB0aGUgc2l6ZSBsaWJ0YXNuMSByZXR1 cm5zIGlzIHJpZ2h0OgorICogIC0gSW50ZWdlcnMKKyAqICAtIE9jdGV0IHN0cmluZ3MKKyAqICAt IERFUiBlbmNvZGluZyBvZiBvdGhlciBzdHJ1Y3R1cmVzCisgKiBJdCB3aWxsIF9ub3RfIHdvcmsg Zm9yIHRoaW5ncyB3aGVyZSBsaWJ0YXNuMSBzaXplIHJlcXVpcmVzIGFkanVzdG1lbnQ6CisgKiAg LSBTdHJpbmdzIHRoYXQgcmVxdWlyZSBhbiBleHRyYSBOVUxMIGJ5dGUgYXQgdGhlIGVuZAorICog IC0gQml0IHN0cmluZ3MgYmVjYXVzZSBsaWJ0YXNuMSByZXR1cm5zIHRoZSBsZW5ndGggaW4gYml0 cywgbm90IGJ5dGVzLgorICogSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBub24tTlVMTCB2YWx1 ZSwgdGhlIGNhbGxlciBtdXN0IGZyZWUgaXQuCisgKi8KK3ZvaWQgKgorZ3J1Yl9hc24xX2FsbG9j YXRlX2FuZF9yZWFkIChhc24xX25vZGUgbm9kZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hh ciAqZnJpZW5kbHlfbmFtZSwgaW50ICpjb250ZW50X3NpemUpCit7CisgIGludCByZXN1bHQ7Cisg IGdydWJfdWludDhfdCAqdG1wc3RyID0gTlVMTDsKKyAgaW50IHRtcHN0cl9zaXplID0gMDsKKwor ICByZXN1bHQgPSBhc24xX3JlYWRfdmFsdWUgKG5vZGUsIG5hbWUsIE5VTEwsICZ0bXBzdHJfc2l6 ZSk7CisgIGlmIChyZXN1bHQgIT0gQVNOMV9NRU1fRVJST1IpCisgICAgeworICAgICAgZ3J1Yl9l cnJvciAoR1JVQl9FUlJfQkFEX0ZJTEVfVFlQRSwgInJlYWRpbmcgc2l6ZSBvZiAlcyBkaWQgbm90 IHJldHVybiBleHBlY3RlZCBzdGF0dXM6ICVzIiwKKyAgICAgICAgICAgICAgICAgIGZyaWVuZGx5 X25hbWUsIGFzbjFfc3RyZXJyb3IgKHJlc3VsdCkpIDsKKyAgICAgIHJldHVybiBOVUxMOworICAg IH0KKworICB0bXBzdHIgPSBncnViX21hbGxvYyAodG1wc3RyX3NpemUpOworICBpZiAodG1wc3Ry ID09IE5VTEwpCisgICAgeworICAgICAgZ3J1Yl9lcnJvciAoR1JVQl9FUlJfT1VUX09GX01FTU9S WSwgImNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgdG8gc3RvcmUgJXMiLAorICAgICAgICAgICAg ICAgICAgZnJpZW5kbHlfbmFtZSkgOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgIHJl c3VsdCA9IGFzbjFfcmVhZF92YWx1ZSAobm9kZSwgbmFtZSwgdG1wc3RyLCAmdG1wc3RyX3NpemUp OworICBpZiAocmVzdWx0ICE9IEFTTjFfU1VDQ0VTUykKKyAgICB7CisgICAgICBncnViX2ZyZWUg KHRtcHN0cik7CisgICAgICBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfRklMRV9UWVBFLCAiZXJy b3IgcmVhZGluZyAlczogJXMiLCBmcmllbmRseV9uYW1lLAorICAgICAgICAgICAgICAgICAgYXNu MV9zdHJlcnJvciAocmVzdWx0KSkgOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICpj b250ZW50X3NpemUgPSB0bXBzdHJfc2l6ZTsKKworICByZXR1cm4gdG1wc3RyOworfQorCitpbnQK K2FzbjFfaW5pdCAodm9pZCkKK3sKKyAgaW50IHJlczsKKworICByZXMgPSBhc24xX2FycmF5MnRy ZWUgKGdydWJfZ251dGxzX2FzbjFfdGFiLCAmZ3J1Yl9nbnV0bHNfZ251dGxzX2FzbiwgTlVMTCk7 CisgIGlmIChyZXMgIT0gQVNOMV9TVUNDRVNTKQorICAgIHJldHVybiByZXM7CisKKyAgcmVzID0g YXNuMV9hcnJheTJ0cmVlIChncnViX3BraXhfYXNuMV90YWIsICZncnViX2dudXRsc19wa2l4X2Fz biwgTlVMTCk7CisKKyAgcmV0dXJuIHJlczsKK30KLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpHcnViLWRl dmVsIG1haWxpbmcgbGlzdApHcnViLWRldmVsQGdudS5vcmcKaHR0cHM6Ly9saXN0cy5nbnUub3Jn L21haWxtYW4vbGlzdGluZm8vZ3J1Yi1kZXZlbAo=