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 13503C87FC9 for ; Tue, 29 Jul 2025 14:53:29 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uglhN-0008Dd-AO; Tue, 29 Jul 2025 10:53:01 -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 1uglhC-00088J-Gp for grub-devel@gnu.org; Tue, 29 Jul 2025 10:52:53 -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 1uglh8-0007Bm-Kk for grub-devel@gnu.org; Tue, 29 Jul 2025 10:52:48 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56T4YuM0021832; Tue, 29 Jul 2025 14:52:42 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=GtCpo1+a6wKyg7TAsh0kqu8/cR67WdmGu dJXNXpOlCHNoU7U2Ai35vSwg3HtPLcWOF5pkOj0GwJMVnm0wAKB9Dd0tnN4sOFQ6 zIpV0kI2lSs6WRE6z+NiiLiZ5HHSUNsSnhlrWsP9+bnHCeNps18zj0qSNY5bDkMH syyeITPu5dq506rRIv8ObuOkYFcS8eutXofRyl2+eUZO7x5xEmgMo+XpIA62mJ9B spvcODzLuF2VzxlO8IgB1oqjv2Le6bv3m0wfoyYcCVlnHuhkutq/1RvCkP1TWMiT ev/0GQWkyOYFmulqB4xf6M0/Ce6wAyErQbIp50K2madelWiyrt4jQ== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 484qemqa33-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 29 Jul 2025 14:52:42 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 56TDkWtL018312; Tue, 29 Jul 2025 14:52:41 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 485abp2ub2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 29 Jul 2025 14:52:41 +0000 Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 56TEqbQR35717872 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 29 Jul 2025 14:52:37 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 21E9720043; Tue, 29 Jul 2025 14:52:37 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8E63C20040; Tue, 29 Jul 2025 14:52:34 +0000 (GMT) Received: from localhost.localdomain (unknown [9.39.21.169]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 29 Jul 2025 14:52:34 +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 20:21:42 +0530 Message-Id: <20250729145156.3522-7-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250729145156.3522-1-sudhakar@linux.ibm.com> References: <20250729145156.3522-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: CGAWSPh7hSlxMjgW9qPbd6_wlodcLHqU X-Proofpoint-GUID: CGAWSPh7hSlxMjgW9qPbd6_wlodcLHqU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzI5MDExMyBTYWx0ZWRfX5XV664t6DR50 /knkvPAjos80m7Oxv2+WDP3rJE93Y1NDbSQMiPOz18O31L8wWBqBMGWfWZb3R0Ba2LpTjjFmy3o rU6dfHnTERkfyzOoO4A8mYOA+DGzeUtZlXuiuDIo8sJgZGSfiYANE850BmGiJXzeLxUaTfffbsY Pz85yAhDVjgIBMjScN2gEwHJtZDSzW8u4qGdyfB2lnJgc+ekQNsWAh7doFeA05IOeGNFHaSSz9T loTp3ai1KcrJWtsBJynPkQnEItOM9vSA1D4UXPeLdzKqb35KvpHGfhDLhLR0rwEV1qXtn8nazTI y2iTnYJIhfx0eY3ZTyf7xCp5VqrSPToW7EpriN8B8OQk9AMi65pdFislp8d5B5RUFHghqWvPnIO mrDkzuGJdTDspf44YlPxDDugLMina3iDuc5mZDr2tj2RMfZYmUJAqSFaqEAGU0fZM1fkAO2P X-Authority-Analysis: v=2.4 cv=BJOzrEQG c=1 sm=1 tr=0 ts=6888e03a cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==: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-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 impostorscore=0 phishscore=0 suspectscore=0 spamscore=0 lowpriorityscore=0 mlxlogscore=999 priorityscore=1501 malwarescore=0 mlxscore=0 bulkscore=0 adultscore=0 clxscore=1015 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2507290113 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=