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 2AA29C83F0A for ; Wed, 9 Jul 2025 11:50:23 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uZTIK-0006Gd-OP; Wed, 09 Jul 2025 07:49:00 -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 1uZTI3-0006BG-62 for grub-devel@gnu.org; Wed, 09 Jul 2025 07:48:44 -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 1uZTHy-0006s0-5S for grub-devel@gnu.org; Wed, 09 Jul 2025 07:48:42 -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 5696P70A006587; Wed, 9 Jul 2025 11:48:33 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=BKacC5Rvujtp7S7SkuSbkiL6TJlOe1orD Wh57BaB9kJXfmUKa6XBVAQ2zhrnIi4/6XFfS+JkZlvw2esCUzSKzX4SFigAzDaUF Ix2lP9R+DHY9ikZ41+o0ZQ6yOuFWdPtok5GPWekFJVbrPE+fdBdoSNpgcL9PzIrE lm5MYrkZ7Ektz2/xxUtuggVPFA7yCaXM5bWTLZMHviHb1cBG/9macpH0EV2m40GX d63tVvIHW/kdt1f5VtwhsyLtcxFdqCSpPvvGk3tgkz+efz1rQqSb4hLeDQQ1bMhL oZ9vE8m/G9Cj+VcREwudfRlgigIFFIMcO+LZYHRItJaAfmyDlLpIw== 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 47puk462de-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Jul 2025 11:48:33 +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 569AVWAe025618; Wed, 9 Jul 2025 11:48:31 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 47qfcp8188-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Jul 2025 11:48:31 +0000 Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 569BmR6e35127594 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 9 Jul 2025 11:48:28 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D47D52004F; Wed, 9 Jul 2025 11:48:27 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 447B420043; Wed, 9 Jul 2025 11:48:25 +0000 (GMT) Received: from localhost.localdomain (unknown [9.39.27.9]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 9 Jul 2025 11:48:25 +0000 (GMT) From: Sudhakar Kuppusamy To: grub-devel@gnu.org Cc: jan.setjeeilers@oracle.com, julian.klode@canonical.com, mate.kukri@canonical.com, pjones@redhat.com, msuchanek@suse.com, mlewando@redhat.com, nayna@linux.ibm.com, ltcgcw@linux.vnet.ibm.com, ssrish@linux.ibm.com, stefanb@linux.ibm.com, avnish@linux.ibm.com, Sudhakar Kuppusamy , dja@axtens.net, Daniel Kiper Subject: [PATCH v4 09/23] appended signatures: Parse ASN1 node Date: Wed, 9 Jul 2025 17:15:26 +0530 Message-Id: <20250709114540.58608-10-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250709114540.58608-1-sudhakar@linux.ibm.com> References: <20250709114540.58608-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA5MDEwNiBTYWx0ZWRfX7lzLX5hHb3EY tH78kUHJcQd0wDQFKRFLfREERCH8DzWOObGabSTcxChfGfzUBCyg3ZA6J67AY+Kp1dPplCEeHA8 91XgKyEHV9ndOhW50xaCptsegu8Q3Fgp2/Nh5/7NPCa8XMIHIBG34HMer3El6dlb3O7WdYssTf9 ynZMmzCJL+xfsqAi1TdqjG2jE0dygFlDP+2D+Q+fguFO9M4wTbabM1gMtt53rhJb4rST8Hkf5eQ f7zVKY7yxtSWczRV6i7v1YDtUu0zGppMvfH1SatMfmjBA2HcnDobk5UJcvPIcSs3iJojujuRSsC QbcWXCr8lPAcjrhFVz/ZnXyY2WnqLDgUMuKo4U6IGcejDgStuPTr03791KfNJgYz+WlvYgFUdkj dYQ1QAVaxowriNcLB6HlGA+G6670nDaIJarh1yCP2cFzTjZ8Hkagp1pFWWUr+lccXfOGP1Op X-Authority-Analysis: v=2.4 cv=XYeJzJ55 c=1 sm=1 tr=0 ts=686e5711 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-ORIG-GUID: dIfqiNbeVuKTRQZS3ALrDBtI1GDV7Seh X-Proofpoint-GUID: dIfqiNbeVuKTRQZS3ALrDBtI1GDV7Seh X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-09_02,2025-07-08_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 lowpriorityscore=0 adultscore=0 priorityscore=1501 suspectscore=0 mlxscore=0 impostorscore=0 phishscore=0 bulkscore=0 clxscore=1015 spamscore=0 mlxlogscore=999 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2507090106 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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=