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 CC793CAC5B8 for ; Thu, 2 Oct 2025 16:51:03 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v4MUh-0004Ap-U4; Thu, 02 Oct 2025 12:49:28 -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 1v4MUg-0004AR-Gx for grub-devel@gnu.org; Thu, 02 Oct 2025 12:49:26 -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 1v4MUT-0004Yy-IF for grub-devel@gnu.org; Thu, 02 Oct 2025 12:49:26 -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 592D6iCV004749; Thu, 2 Oct 2025 16:49:07 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=/Wv02xMX+p9OveQZJ lzK1njg8DA7OtIEvdk8o5vpp70=; b=rBndlJmi4PyRLK/XH1bUTTcDp3cmZJ5Sd gvjSgFrgJzEogjD24ht14zBaJDcnk1O0uFx3EP2z7mRXnnJAyLBZ1/tN0fPU+f/Q jJreZ7rKvAPeLAmQUZH3zQGmX+JVR3zVmIjzGskoW1KK1pR9FmghyOhevuWNxc0J 2Q1sc8p15hDW+qgZIWuHx8jPCuDsFYpYkBYH585qIhPi6F+FV7NsVGQDqfbY5dzn 5A3EqgxUZADq5PmLs7+93oJ0+2CSj8Fk+06AaRDtxmLv5ZK0wRqt6PuBBPsAWr+8 NDB0oESyr3Dp+up6fjUdDtajOmJ0edmLi7+Wl0oTSWoadaBKO5n7A== Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 49e7e7prds-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 02 Oct 2025 16:49:06 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 592GIiHS003325; Thu, 2 Oct 2025 16:49:05 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 49etmy72eb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 02 Oct 2025 16:49:05 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 592Gn1OG58393062 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 2 Oct 2025 16:49:01 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4FE7D20043; Thu, 2 Oct 2025 16:49:01 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 375DD20040; Thu, 2 Oct 2025 16:48:58 +0000 (GMT) Received: from localhost.localdomain (unknown [9.124.211.77]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 2 Oct 2025 16:48:58 +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 , sridharm@linux.ibm.com, Daniel Kiper Subject: [PATCH v15 06/20] appended signatures: Parse ASN1 node Date: Thu, 2 Oct 2025 22:15:19 +0530 Message-ID: <20251002164535.65728-7-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20251002164535.65728-1-sudhakar@linux.ibm.com> References: <20251002164535.65728-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: oHtbADQZwk3aGQKCdNoMQRq35cpWN0gX X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTI3MDAyMCBTYWx0ZWRfX22+d+t0rOvJY RIPpLb4Y48J3QBys5uJi6BSs1OUXafs0P69Lir7LPVzR8kExmTz0Fz8EuP0WrWpbaROJtW1iEdR rSotONq979H/214Z3JLky1xDHMX47jjHWke09WR7LEA8gBKl4Byg5M9TCL+sjfBC8PFOVQiZ8n3 lox78eoPOi1RDm9uUdSri3hq5yekV+XIMLQjt8KH+lQ9dnWlPbplFQBulOyvQlNjk5nLv+J2Z7X GNKu2r2bOQBNLqLkNmyWq2MhMsJ4HTJ4or9pRJ8mIaexJU0cQruX+LHvt5Cy0nVn6Bpbly6FGPk ixlo8hT/qzZIj/Mdsgd6v+/Uohj3KVtrv2KF3WIYxOn+g+97BvAHDnHWNsTFHUrhnhTJz3xdPTP rSPFr9s1fvprd998ywVn7/VUpBuHLQ== X-Proofpoint-GUID: oHtbADQZwk3aGQKCdNoMQRq35cpWN0gX X-Authority-Analysis: v=2.4 cv=Jvj8bc4C c=1 sm=1 tr=0 ts=68dead02 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=x6icFKpwvdMA:10 a=mDV3o1hIAAAA:8 a=JuTF4qcAAAAA:8 a=VnNF1IyMAAAA:8 a=yPCof4ZbAAAA:8 a=QQTzU-B8HNZ-fe_KibsA:9 a=WlT8qwTXB_Kj6um4hl3b:22 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-02_06,2025-10-02_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 impostorscore=0 suspectscore=0 phishscore=0 bulkscore=0 clxscore=1015 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2509150000 definitions=main-2509270020 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 IC0gREVSIGVuY29kaW5nIG9mIG90aGVyIHN0cnVjdHVyZXMKCkl0IHdpbGwgX25vdF8gd29yayBm b3IgdGhpbmdzIHdoZXJlIGxpYnRhc24xIHNpemUgcmVxdWlyZXMgYWRqdXN0bWVudDoKIC0gU3Ry aW5ncyB0aGF0IHJlcXVpcmUgYW4gZXh0cmEgTlVMTCBieXRlIGF0IHRoZSBlbmQKIC0gQml0IHN0 cmluZ3MgYmVjYXVzZSBsaWJ0YXNuMSByZXR1cm5zIHRoZSBsZW5ndGggaW4gYml0cywgbm90IGJ5 dGVzLgoKSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBub24tTlVMTCB2YWx1ZSwgdGhlIGNhbGxl ciBtdXN0IGZyZWUgaXQuCgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgQXh0ZW5zIDxkamFAYXh0ZW5z Lm5ldD4KU2lnbmVkLW9mZi1ieTogU3VkaGFrYXIgS3VwcHVzYW15IDxzdWRoYWthckBsaW51eC5p Ym0uY29tPgpSZXZpZXdlZC1ieTogU3RlZmFuIEJlcmdlciA8c3RlZmFuYkBsaW51eC5pYm0uY29t PgpSZXZpZXdlZC1ieTogQXZuaXNoIENob3VoYW4gPGF2bmlzaEBsaW51eC5pYm0uY29tPgpSZXZp ZXdlZC1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4KLS0tCiBncnVi LWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuaCB8IDQ0ICsrKysrKysrKwog Z3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FzbjF1dGlsLmMgICAgfCA5OSArKysrKysr KysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxNDMgaW5zZXJ0aW9ucygrKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGdydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FzbjF1 dGlsLmMKCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5k ZWRzaWcuaCBiL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNjAxZDYxNjRmCi0tLSAvZGV2L251 bGwKKysrIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmgKQEAg LTAsMCArMSw0NCBAQAorLyoKKyAqICBHUlVCICAtLSAgR1JhbmQgVW5pZmllZCBCb290bG9hZGVy CisgKiAgQ29weXJpZ2h0IChDKSAyMDIwLCAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorICogIENvcHlyaWdodCAoQykgMjAyMCwgMjAyMiwgMjAyNSBJQk0gQ29ycG9yYXRpb24K KyAqCisgKiAgR1JVQiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIEdSVUIgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICogIGFsb25nIHdpdGggR1JVQi4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8bGlidGFzbjEuaD4KKworZXh0 ZXJuIGFzbjFfbm9kZSBncnViX2dudXRsc19nbnV0bHNfYXNuOworZXh0ZXJuIGFzbjFfbm9kZSBn cnViX2dudXRsc19wa2l4X2FzbjsKKworLyogRG8gbGlidGFzbjEgaW5pdC4gKi8KK2V4dGVybiBp bnQKK2dydWJfYXNuMV9pbml0ICh2b2lkKTsKKworLyoKKyAqIFJlYWQgYSB2YWx1ZSBmcm9tIGFu IEFTTjEgbm9kZSwgYWxsb2NhdGluZyBtZW1vcnkgdG8gc3RvcmUgaXQuIEl0IHdpbGwgd29yawor ICogZm9yIGFueXRoaW5nIHdoZXJlIHRoZSBzaXplIGxpYnRhc24xIHJldHVybnMgaXMgcmlnaHQ6 CisgKiAgLSBJbnRlZ2VycworICogIC0gT2N0ZXQgc3RyaW5ncworICogIC0gREVSIGVuY29kaW5n IG9mIG90aGVyIHN0cnVjdHVyZXMKKyAqCisgKiBJdCB3aWxsIF9ub3RfIHdvcmsgZm9yIHRoaW5n cyB3aGVyZSBsaWJ0YXNuMSBzaXplIHJlcXVpcmVzIGFkanVzdG1lbnQ6CisgKiAgLSBTdHJpbmdz IHRoYXQgcmVxdWlyZSBhbiBleHRyYSBudWxsIGJ5dGUgYXQgdGhlIGVuZAorICogIC0gQml0IHN0 cmluZ3MgYmVjYXVzZSBsaWJ0YXNuMSByZXR1cm5zIHRoZSBsZW5ndGggaW4gYml0cywgbm90IGJ5 dGVzLgorICoKKyAqIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbm9uLU5VTEwgdmFsdWUsIHRo ZSBjYWxsZXIgbXVzdCBmcmVlIGl0LgorICovCitleHRlcm4gdm9pZCAqCitncnViX2FzbjFfYWxs b2NhdGVfYW5kX3JlYWQgKGFzbjFfbm9kZSBub2RlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBj aGFyICpmcmllbmRseV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnViX2lu dDMyX3QgKmNvbnRlbnRfc2l6ZSk7CmRpZmYgLS1naXQgYS9ncnViLWNvcmUvY29tbWFuZHMvYXBw ZW5kZWRzaWcvYXNuMXV0aWwuYyBiL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hc24x dXRpbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uOWRkNzg5OGVhCi0t LSAvZGV2L251bGwKKysrIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FzbjF1dGls LmMKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqICBHUlVCICAtLSAgR1JhbmQgVW5pZmllZCBCb290 bG9hZGVyCisgKiAgQ29weXJpZ2h0IChDKSAyMDIwLCAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorICogIENvcHlyaWdodCAoQykgMjAyMCwgMjAyMiwgMjAyNSBJQk0gQ29ycG9y YXRpb24KKyAqCisgKiAgR1JVQiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIEdSVUIgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor ICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggR1JVQi4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8bGlidGFzbjEuaD4K KyNpbmNsdWRlIDxncnViL3R5cGVzLmg+CisjaW5jbHVkZSA8Z3J1Yi9lcnIuaD4KKyNpbmNsdWRl IDxncnViL21tLmg+CisjaW5jbHVkZSA8Z3J1Yi9jcnlwdG8uaD4KKyNpbmNsdWRlIDxncnViL21p c2MuaD4KKyNpbmNsdWRlIDxncnViL2djcnlwdC9nY3J5cHQuaD4KKworI2luY2x1ZGUgImFwcGVu ZGVkc2lnLmgiCisKK2FzbjFfbm9kZSBncnViX2dudXRsc19nbnV0bHNfYXNuID0gTlVMTDsKK2Fz bjFfbm9kZSBncnViX2dudXRsc19wa2l4X2FzbiA9IE5VTEw7CisKK2V4dGVybiBjb25zdCBhc24x X3N0YXRpY19ub2RlIGdydWJfZ251dGxzX2FzbjFfdGFiW107CitleHRlcm4gY29uc3QgYXNuMV9z dGF0aWNfbm9kZSBncnViX3BraXhfYXNuMV90YWJbXTsKKworLyoKKyAqIFJlYWQgYSB2YWx1ZSBm cm9tIGFuIEFTTjEgbm9kZSwgYWxsb2NhdGluZyBtZW1vcnkgdG8gc3RvcmUgaXQuIEl0IHdpbGwg d29yaworICogZm9yIGFueXRoaW5nIHdoZXJlIHRoZSBzaXplIGxpYnRhc24xIHJldHVybnMgaXMg cmlnaHQ6CisgKiAgLSBJbnRlZ2VycworICogIC0gT2N0ZXQgc3RyaW5ncworICogIC0gREVSIGVu Y29kaW5nIG9mIG90aGVyIHN0cnVjdHVyZXMKKyAqCisgKiBJdCB3aWxsIF9ub3RfIHdvcmsgZm9y IHRoaW5ncyB3aGVyZSBsaWJ0YXNuMSBzaXplIHJlcXVpcmVzIGFkanVzdG1lbnQ6CisgKiAgLSBT dHJpbmdzIHRoYXQgcmVxdWlyZSBhbiBleHRyYSBOVUxMIGJ5dGUgYXQgdGhlIGVuZAorICogIC0g Qml0IHN0cmluZ3MgYmVjYXVzZSBsaWJ0YXNuMSByZXR1cm5zIHRoZSBsZW5ndGggaW4gYml0cywg bm90IGJ5dGVzLgorICoKKyAqIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbm9uLU5VTEwgdmFs dWUsIHRoZSBjYWxsZXIgbXVzdCBmcmVlIGl0LgorICovCit2b2lkICoKK2dydWJfYXNuMV9hbGxv Y2F0ZV9hbmRfcmVhZCAoYXNuMV9ub2RlIG5vZGUsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNo YXIgKmZyaWVuZGx5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfaW50 MzJfdCAqY29udGVudF9zaXplKQoreworICBncnViX2ludDMyX3QgcmVzdWx0OworICBncnViX3Vp bnQ4X3QgKnRtcHN0ciA9IE5VTEw7CisgIGdydWJfaW50MzJfdCB0bXBzdHJfc2l6ZSA9IDA7CisK KyAgcmVzdWx0ID0gYXNuMV9yZWFkX3ZhbHVlIChub2RlLCBuYW1lLCBOVUxMLCAmdG1wc3RyX3Np emUpOworICBpZiAocmVzdWx0ICE9IEFTTjFfTUVNX0VSUk9SKQorICAgIHsKKyAgICAgIGdydWJf ZXJyb3IgKEdSVUJfRVJSX0JBRF9GSUxFX1RZUEUsICJyZWFkaW5nIHNpemUgb2YgJXMgZGlkIG5v dCByZXR1cm4gZXhwZWN0ZWQgc3RhdHVzOiAlcyIsCisgICAgICAgICAgICAgICAgICBmcmllbmRs eV9uYW1lLCBhc24xX3N0cmVycm9yIChyZXN1bHQpKSA7CisgICAgICByZXR1cm4gTlVMTDsKKyAg ICB9CisKKyAgdG1wc3RyID0gZ3J1Yl9tYWxsb2MgKHRtcHN0cl9zaXplKTsKKyAgaWYgKHRtcHN0 ciA9PSBOVUxMKQorICAgIHsKKyAgICAgIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1P UlksICJjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IHRvIHN0b3JlICVzIiwKKyAgICAgICAgICAg ICAgICAgIGZyaWVuZGx5X25hbWUpIDsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICBy ZXN1bHQgPSBhc24xX3JlYWRfdmFsdWUgKG5vZGUsIG5hbWUsIHRtcHN0ciwgJnRtcHN0cl9zaXpl KTsKKyAgaWYgKHJlc3VsdCAhPSBBU04xX1NVQ0NFU1MpCisgICAgeworICAgICAgZ3J1Yl9mcmVl ICh0bXBzdHIpOworICAgICAgZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZJTEVfVFlQRSwgImVy cm9yIHJlYWRpbmcgJXM6ICVzIiwgZnJpZW5kbHlfbmFtZSwKKyAgICAgICAgICAgICAgICAgIGFz bjFfc3RyZXJyb3IgKHJlc3VsdCkpIDsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAq Y29udGVudF9zaXplID0gdG1wc3RyX3NpemU7CisKKyAgcmV0dXJuIHRtcHN0cjsKK30KKworaW50 CitncnViX2FzbjFfaW5pdCAodm9pZCkKK3sKKyAgaW50IHJlczsKKworICByZXMgPSBhc24xX2Fy cmF5MnRyZWUgKGdydWJfZ251dGxzX2FzbjFfdGFiLCAmZ3J1Yl9nbnV0bHNfZ251dGxzX2Fzbiwg TlVMTCk7CisgIGlmIChyZXMgIT0gQVNOMV9TVUNDRVNTKQorICAgIHJldHVybiByZXM7CisKKyAg cmVzID0gYXNuMV9hcnJheTJ0cmVlIChncnViX3BraXhfYXNuMV90YWIsICZncnViX2dudXRsc19w a2l4X2FzbiwgTlVMTCk7CisKKyAgcmV0dXJuIHJlczsKK30KLS0gCjIuNTAuMSAoQXBwbGUgR2l0 LTE1NSkKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpH cnViLWRldmVsIG1haWxpbmcgbGlzdApHcnViLWRldmVsQGdudS5vcmcKaHR0cHM6Ly9saXN0cy5n bnUub3JnL21haWxtYW4vbGlzdGluZm8vZ3J1Yi1kZXZlbAo=