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 39B0AC83F26 for ; Tue, 29 Jul 2025 12:44:08 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ugjdz-0005n1-3L; Tue, 29 Jul 2025 08:41:23 -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 1ugjc8-0002jP-61 for grub-devel@gnu.org; Tue, 29 Jul 2025 08:39:30 -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 1ugjc0-0003Da-9W for grub-devel@gnu.org; Tue, 29 Jul 2025 08:39:23 -0400 Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56T4ZExf015698; Tue, 29 Jul 2025 12:39:15 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=z1t/5llJwkWjNW7t0 CHRbQZwKww86VPffpfpBT6SP5E=; b=YRgj73A1paRSAEwuLvLlJ8s8vk1IzcEJu fdONzMxQMeLq5SUOiaiB4ywz/PpXYIUscy9liLirmozSUt2Tv3kKKJedHvhE232q 2Mt8drvg30Z7wskc9OnAn+UaOZJXgq+1I8DtxX47cAaCk7VvoGNvfOCAzKR18oSJ txfDuFfZC80dxe3OEbeXWxXL+jpnaXLWcB/o26L35JbuLCI2ADj8jsKoZC1+heIL jaJmVYr2QIL7WIhwlJejJgxU1WviO65rCGHB6eBIdiz/2D4OuAZ6JZ0KHrK/bCF6 Jz0+ZA3ECQgzNRf7R3GOJDUxf7bgwa14BESducbA05rx9p7T3qmiA== 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 484qfqphvg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 29 Jul 2025 12:39:14 +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 56T8FgoW017464; Tue, 29 Jul 2025 12:39:13 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4859r02f0h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 29 Jul 2025 12:39:13 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 56TCd9e756230200 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 29 Jul 2025 12:39:09 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3A6432004E; Tue, 29 Jul 2025 12:39:08 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D58BB20040; Tue, 29 Jul 2025 12:39:05 +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:39:05 +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 Subject: [PATCH v6 16/20] appended signatures: Introduce GRUB commands to access db and dbx Date: Tue, 29 Jul 2025 18:07:05 +0530 Message-Id: <20250729123709.83349-17-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-Spam-Details-Enc: AW1haW4tMjUwNzI5MDA5NSBTYWx0ZWRfXxmbcRqdNWJLS tJ73GckjqV8pamyMpHShqxosv08X0fzB7sWrHRwW9GDURAtDDR9jGoAbq3ThLZ8XTr/HkHWMLRi aVk4sYI/pbBXYX4tdjS8gj6EmCfTp/KehQA4WNCbdzzhifVe8bHRfgr4aoBb8t+P2dnp1ySwS0A vyjg+WR1UOD6YEExKYXj5/9slOhx/LhGGj1VZ2rIa63SVJjnlhhj2thFO+0b4CJ1KMEeZwKuwa6 4618F6B0b/VRgYW4RW3ETg6ZJokZ6C2oFyF6nvfcRfQUTYQFazw+kpb7R66fKMCO66sOrHtJ3B8 siSHbA71ydDYpXYi//UJFXz4E8+yw6bR85xnWLYrojXt+Sjrk/vJcc5PpufLISGH+X8Mzlf/GuS qs5OhAoELmVAWssgj5FyzBkn7v9rywe2/kRoLPtQHfgiogSKcKx7CT5MxCmjFL17pOSGJ/VT X-Authority-Analysis: v=2.4 cv=Je28rVKV c=1 sm=1 tr=0 ts=6888c0f2 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=Wb1JkmetP80A:10 a=VnNF1IyMAAAA:8 a=LaQub0gFDTJ6eeYmJpYA:9 X-Proofpoint-GUID: XllzlyGPwJJMMVofVzWG9j0h9h7jKeue X-Proofpoint-ORIG-GUID: XllzlyGPwJJMMVofVzWG9j0h9h7jKeue 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 mlxlogscore=999 clxscore=1015 lowpriorityscore=0 spamscore=0 adultscore=0 suspectscore=0 bulkscore=0 malwarescore=0 priorityscore=1501 phishscore=0 mlxscore=0 impostorscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2507290095 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 SW50cm9kdWNpbmcgdGhlIGZvbGxvd2luZyBkYiBhbmQgZGJ4IGNvbW1hbmRzCgogIDEuIGFwcGVu ZF9saXN0X2RiOgogICAgICBTaG93IHRoZSBsaXN0IG9mIHRydXN0ZWQgY2VydGlmaWNhdGVzIGFu ZCBiaW5hcnkgaGFzaGVzCiAgICAgIGZyb20gdGhlIGRiIGxpc3QuCiAgMi4gYXBwZW5kX2xpc3Rf ZGJ4OgogICAgICBTaG93IHRoZSBsaXN0IG9mIGRpc3RydXN0ZWQgY2VydGlmaWNhdGVzIGFuZCBi aW5hcnkvY2VydGlmaWNhdGUKICAgICAgaGFzaGVzIGZyb20gdGhlIGRieCBsaXN0LgogIDMuIGFw cGVuZF9hZGRfZGJfY2VydDoKICAgICAgQWRkIHRoZSB0cnVzdGVkIGNlcnRpZmljYXRlIHRvIHRo ZSBkYiBsaXN0LgogIDQuIGFwcGVuZF9hZGRfZGJfaGFzaDoKICAgICAgQWRkIHRoZSB0cnVzdGVk IGJpbmFyeSBoYXNoIHRvIHRoZSBkYiBsaXN0LgogIDUuIGFwcGVuZF9hZGRfZGJ4X2NlcnQ6CiAg ICAgIEFkZCB0aGUgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZSB0byB0aGUgZGJ4IGxpc3QuCiAgNi4g YXBwZW5kX2FkZF9kYnhfaGFzaDoKICAgICAgQWRkIHRoZSBkaXN0cnVzdGVkIGNlcnRpZmljYXRl L2JpbmFyeSBoYXNoIHRvIHRoZSBkYnggbGlzdC4KCk5vdGUgdGhhdCBpZiBzaWduYXR1cmUgdmVy aWZpY2F0aW9uIChjaGVja19hcHBlbmRlZF9zaWduYXR1cmUpCmlzIHNldCB0byBlbmZvcmNlLAox LiBXaGVuIGFwcGVuZF9hZGRfZGJfY2VydCBvciBhcHBlbmRfYWRkX2RieF9jZXJ0IGV4ZWN1dGVz LAogICB0aGVuIHRoZSBjZXJ0aWZpY2F0ZSBmaWxlIG11c3QgYmUgcHJvcGVybHkgc2lnbmVkLgoy LiBXaGVuIGFwcGVuZF9hZGRfZGJfaGFzaCBleGVjdXRlcywgdGhlbiB0aGUgYmluYXJ5IGhhc2gg ZmlsZQogICBtdXN0IGJlIHByb3Blcmx5IHNpZ25lZC4KMy4gV2hlbiBhcHBlbmRfYWRkX2RieF9o YXNoIGV4ZWN1dGVzLCB0aGVuIHRoZSBjZXJ0aWZpY2F0ZS9iaW5hcnkKICAgaGFzaCBmaWxlIG11 c3QgYmUgc2lnbmVkLgoKU2lnbmVkLW9mZi1ieTogU3VkaGFrYXIgS3VwcHVzYW15IDxzdWRoYWth ckBsaW51eC5pYm0uY29tPgpSZXZpZXdlZC1ieTogQXZuaXNoIENob3VoYW4gPGF2bmlzaEBsaW51 eC5pYm0uY29tPgotLS0KIGdydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNp Zy5jIHwgMzc3ICsrKysrKysrKysrKysrKysrKy0KIGluY2x1ZGUvZ3J1Yi9maWxlLmggICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyICsKIDIgZmlsZXMgY2hhbmdlZCwgMzYyIGluc2VydGlv bnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dydWItY29yZS9jb21tYW5kcy9h cHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2ln L2FwcGVuZGVkc2lnLmMKaW5kZXggMTU0YTRjYTZlLi4zMTUwNTkxNTUgMTAwNjQ0Ci0tLSBhL2dy dWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCisrKyBiL2dydWItY29y ZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCkBAIC00Miw2ICs0Miw5IEBAIEdS VUJfTU9EX0xJQ0VOU0UgKCJHUEx2MysiKTsKIC8qIFB1YmxpYyBrZXkgdHlwZS4gKi8KICNkZWZp bmUgR1JVQl9QS0VZX0lEX1BLQ1M3IDIKIAorI2RlZmluZSBPUFRJT05fQklOQVJZX0hBU0ggMAor I2RlZmluZSBPUFRJT05fQ0VSVF9IQVNIICAgMQorCiAvKiBBcHBlbmRlZCBzaWduYXR1cmUgbWFn aWMgc3RyaW5nLiAqLwogc3RhdGljIGNvbnN0IGNoYXIgbWFnaWNbXSA9ICJ+TW9kdWxlIHNpZ25h dHVyZSBhcHBlbmRlZH5cbiI7CiAKQEAgLTEwNiw2ICsxMDksMTMgQEAgc3RhdGljIGdydWJfc2l6 ZV90IGFwcGVuZF9zaWdfbGVuID0gMDsKICAqLwogc3RhdGljIGJvb2wgY2hlY2tfc2lncyA9IGZh bHNlOwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGdydWJfYXJnX29wdGlvbiBvcHRpb25zW10gPQor eworICB7ImJpbmFyeS1oYXNoIiwgJ2InLCAwLCBOXygiaGFzaCBmaWxlIG9mIHRoZSBiaW5hcnku IiksIDAsIEFSR19UWVBFX1BBVEhOQU1FfSwKKyAgeyJjZXJ0LWhhc2giLCAnYycsIDEsIE5fKCJo YXNoIGZpbGUgb2YgdGhlIGNlcnRpZmljYXRlLiIpLCAwLCBBUkdfVFlQRV9QQVRITkFNRX0sCisg IHswLCAwLCAwLCAwLCAwLCAwfQorfTsKKwogc3RhdGljIGNvbnN0IGNoYXIgKgogZ3J1Yl9lbnZf cmVhZF9zZWMgKHN0cnVjdCBncnViX2Vudl92YXIgKnZhciBfX2F0dHJpYnV0ZV9fICgodW51c2Vk KSksCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmFsIF9fYXR0cmlidXRlX18gKCh1 bnVzZWQpKSkKQEAgLTY0OCw4ICs2NTgsOCBAQCBpc19jZXJ0X3ByZXNlbnRfaW5fZGIgKGNvbnN0 IHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpjZXJ0X2luKQogICByZXR1cm4gZmFsc2U7CiB9CiAK LXN0YXRpYyBib29sCi1pc19jZXJ0X3JlbW92ZWRfZnJvbV9kYiAoY29uc3Qgc3RydWN0IHg1MDlf Y2VydGlmaWNhdGUgKmNlcnQpCitzdGF0aWMgdm9pZAorcmVtb3ZlX2NlcnRfZnJvbV9kYiAoY29u c3Qgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKmNlcnQpCiB7CiAgIGludCBpID0gMTsKICAgc3Ry dWN0IHg1MDlfY2VydGlmaWNhdGUgKmN1cnJfY2VydCwgKnByZXZfY2VydDsKQEAgLTY2NCwxNyAr Njc0LDY0IEBAIGlzX2NlcnRfcmVtb3ZlZF9mcm9tX2RiIChjb25zdCBzdHJ1Y3QgeDUwOV9jZXJ0 aWZpY2F0ZSAqY2VydCkKICAgICAgICAgICAgIHByZXZfY2VydC0+bmV4dCA9IGN1cnJfY2VydC0+ bmV4dDsKIAogICAgICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICJyZW1vdmVkIGNlcnRpZmljYXRlIHdpdGggQ046ICVzIGZyb20gdGhl IGRiIGxpc3RcbiIsIGN1cnJfY2VydC0+c3ViamVjdCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAicmVtb3ZlZCBkaXN0cnVzZWQgY2VydGlmaWNhdGUgd2l0aCBDTjogJXMgZnJvbSB0aGUgZGIg bGlzdFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJfY2VydC0+c3ViamVjdCk7CiAg ICAgICAgICAgY3Vycl9jZXJ0LT5uZXh0ID0gTlVMTDsKICAgICAgICAgICBjZXJ0aWZpY2F0ZV9y ZWxlYXNlIChjdXJyX2NlcnQpOwogICAgICAgICAgIGdydWJfZnJlZSAoY3Vycl9jZXJ0KTsKLSAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICBicmVhazsKIAl9CiAgICAgICBlbHNlCiAg ICAgICAgIHByZXZfY2VydCA9IGN1cnJfY2VydDsKIAogICAgICAgaSsrOwogICAgIH0KK30KKwor LyoKKyAqIFdlIGNhbm5vdCB1c2UgaGV4ZHVtcCgpIHRvIGRpc3BsYXkgaGFzaCBkYXRhIGJlY2F1 c2UgaXQgaXMgdHlwaWNhbGx5CisgKiBkaXNwbGF5ZWQgaW4gaGV4YWRlY2ltYWwgZm9ybWF0LCBh bG9uZyB3aXRoIGFuIEFTQ0lJIHJlcHJlc2VudGF0aW9uIG9mCisgKiB0aGUgc2FtZSBkYXRhLgor ICogRXhhbXBsZTogc2hhMjU2IGhhc2ggZGF0YQorICogMDAwMDAwMDAgIDUyIGI1IDkwIDQ5IDY0 IGRlIDIyIGQ3ICA0ZSA1ZiA0ZiBiNCAxYiA1MSA5YyAzNCAgfFIuLklkLiIuTl9PLi5RLjR8Cisg KiAwMDAwMDAxMCAgYjEgOTYgMjEgN2MgOTEgNzggYTUgMGQgIDIwIDhjIGU5IDVjIDIyIDU0IDUz IGY3ICB8Li4hfC54Li4gLi5cIlRTLnwKKyAqCisgKiBBbiBhcHBlbmRlZCBzaWduYXR1cmUgb25s eSByZXF1aXJlZCB0byBkaXNwbGF5IHRoZSBoZXhhZGVjaW1hbCBvZiB0aGUgaGFzaCBkYXRhCisg KiBieSBzZXBhcmF0aW5nIGVhY2ggYnl0ZSB3aXRoICI6Ii4gU28sIHdlIGludHJvZHVjZWQgYSBu ZXcgbWV0aG9kIGR1bXBfYXNjaWlfdG9faGV4CisgKiB0byBkaXNwbGF5IGl0LgorICogRXhhbXBs ZTogU2hhMjU2IGhhc2ggZGF0YQorICogIDUyOmI1OjkwOjQ5OjY0OmRlOjIyOmQ3OjRlOjVmOjRm OmI0OjFiOjUxOjljOjM0OgorICogIGIxOjk2OjIxOjdjOjkxOjc4OmE1OjBkOjIwOjhjOmU5OjVj OjIyOjU0OjUzOmY3CisgKi8KK3N0YXRpYyB2b2lkCitkdW1wX2FzY2lpX3RvX2hleCAoY29uc3Qg Z3J1Yl91aW50OF90ICpkYXRhLCBjb25zdCBncnViX3NpemVfdCBsZW5ndGgpCit7CisgIGdydWJf c2l6ZV90IGksIGNvdW50ID0gMDsKKworICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoIC0gMTsgaSsr KQorICAgIHsKKyAgICAgIGdydWJfcHJpbnRmICgiJTAyeDoiLCBkYXRhW2ldKTsKKyAgICAgIGNv dW50Kys7CisgICAgICBpZiAoY291bnQgPT0gMTYpCisgICAgICAgIHsKKyAgICAgICAgICBncnVi X3ByaW50ZiAoIlxuXHQgICAgICAiKTsKKyAgICAgICAgICBjb3VudCA9IDA7CisgICAgICAgIH0K KyAgICB9CisKKyAgZ3J1Yl9wcmludGYgKCIlMDJ4XG4iLCBkYXRhW2ldKTsKK30KKworc3RhdGlj IGJvb2wKK2lzX2NlcnRfcHJlc2VudF9pbl9kYnggKGNvbnN0IHN0cnVjdCB4NTA5X2NlcnRpZmlj YXRlICpjZXJ0X2luKQoreworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydDsKKworICBm b3IgKGNlcnQgPSBkYnguY2VydHM7IGNlcnQ7IGNlcnQgPSBjZXJ0LT5uZXh0KQorICAgIHsKKyAg ICAgIGlmIChpc19jZXJ0X21hdGNoIChjZXJ0LCBjZXJ0X2luKSA9PSB0cnVlKQorICAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICB9CiAKICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNzM4LDEyICs3OTUs MjEgQEAgZ3J1Yl9jbWRfZGJfY2VydCAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18g KCh1bnVzZWQpKSwgaW50IGFyZ2MsIGNoYXIgKioKICAgICAgIHJldHVybiBlcnI7CiAgICAgfQog Ci0gIGlmIChpc19jZXJ0X3ByZXNlbnRfaW5fZGIgKGNlcnQpID09IHRydWUpCisgIGlmIChpc19j ZXJ0X3ByZXNlbnRfaW5fZGJ4IChjZXJ0KSA9PSBmYWxzZSkKKyAgICB7CisgICAgICBpZiAoaXNf Y2VydF9wcmVzZW50X2luX2RiIChjZXJ0KSA9PSB0cnVlKQorICAgICAgICBlcnIgPSBncnViX2Vy cm9yIChHUlVCX0VSUl9TVElMTF9SRUZFUkVOQ0VELAorICAgICAgICAgICAgICAgICAgICAgICAg ICAiY291bGQgbm90IGFkZCB0cnVzdGVkIGNlcnRpZmljYXRlLCBhcyBpdCBpcyBwcmVzZW50IGlu IHRoZSBkYiBsaXN0Iik7CisgICAgfQorICBlbHNlCisgICAgZXJyID0gZ3J1Yl9lcnJvciAoR1JV Ql9FUlJfU1RJTExfUkVGRVJFTkNFRCwKKyAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90 IGFkZCB0cnVzdGVkIGNlcnRpZmljYXRlLCBhcyBpdCBpcyBwcmVzZW50IGluIHRoZSBkYnggbGlz dCIpOworCisgIGlmIChlcnIgIT0gR1JVQl9FUlJfTk9ORSkKICAgICB7CiAgICAgICBjZXJ0aWZp Y2F0ZV9yZWxlYXNlIChjZXJ0KTsKICAgICAgIGdydWJfZnJlZSAoY2VydCk7Ci0gICAgICByZXR1 cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfU1RJTExfUkVGRVJFTkNFRCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAiY291bGQgbm90IGFkZCB0aGUgY2VydGlmaWNhdGUsIGFzIGl0IGlzIHByZXNl bnQgaW4gdGhlIGRiIGxpc3QiKTsKKyAgICAgIHJldHVybiBlcnI7CiAgICAgfQogCiAgIGdydWJf ZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgImFkZGVkIGNlcnRpZmljYXRlIHdpdGggQ046ICVzXG4i LCBjZXJ0LT5zdWJqZWN0KTsKQEAgLTc2NSw3ICs4MzEsNyBAQCBncnViX2NtZF9kYnhfY2VydCAo Z3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IGFyZ2MsIGNo YXIgKgogICBpZiAoYXJnYyAhPSAxKQogICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9C QURfQVJHVU1FTlQsCiAgICAgICAgICAgICAgICAgICAgICAgICJhIGRpc3RydXN0ZWQgWC41MDkg Y2VydGlmaWNhdGUgZmlsZSBpcyBleHBlY3RlZCBpbiBERVIgZm9ybWF0XG4iCi0gICAgICAgICAg ICAgICAgICAgICAgICJFeGFtcGxlOlxuXHRhcHBlbmRfcm1fZGJ4X2NlcnQgPFg1MDlfQ0VSVElG SUNBVEU+XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4YW1wbGU6XG5cdGFwcGVuZF9h ZGRfZGJ4X2NlcnQgPFg1MDlfQ0VSVElGSUNBVEU+XG4iKTsKIAogICBpZiAoKmFyZ3MgPT0gTlVM TCkKICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZJTEVOQU1FLCAibWlzc2lu ZyBkaXN0cnVzdGVkIFguNTA5IGNlcnRpZmljYXRlIGZpbGUiKTsKQEAgLTc4MCwxMiArODQ2LDI0 IEBAIGdydWJfY21kX2RieF9jZXJ0IChncnViX2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXyAo KHVudXNlZCkpLCBpbnQgYXJnYywgY2hhciAqCiAgIGlmIChlcnIgIT0gR1JVQl9FUlJfTk9ORSkK ICAgICBncnViX2ZyZWUgKGNlcnQpOwogCi0gIGlmIChpc19jZXJ0X3JlbW92ZWRfZnJvbV9kYiAo Y2VydCkgPT0gZmFsc2UpCi0gICAgZXJyID0gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfRU9GLAotICAg ICAgICAgICAgICAgICAgICAgICJub3QgZm91bmQgY2VydGlmaWNhdGUgd2l0aCBDTjolcyBpbiB0 aGUgZGIgbGlzdCIsIGNlcnQtPnN1YmplY3QpOworICBpZiAoaXNfY2VydF9wcmVzZW50X2luX2Ri eCAoY2VydCkgPT0gdHJ1ZSkKKyAgICB7CisgICAgICBjZXJ0aWZpY2F0ZV9yZWxlYXNlIChjZXJ0 KTsKKyAgICAgIGdydWJfZnJlZSAoY2VydCk7CisgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JV Ql9FUlJfU1RJTExfUkVGRVJFTkNFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQg bm90IGFkZCBkaXN0cnVzdGVkIGNlcnRpZmljYXRlLCBhcyBpdCBpcyBwcmVzZW50IGluIHRoZSBk YnggbGlzdCIpOworICAgIH0KKworICAvKiByZW1vdmUgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZSBm cm9tIHRoZSBkYiBsaXN0IGlmIHByZXNlbnQuICovCisgIHJlbW92ZV9jZXJ0X2Zyb21fZGIgKGNl cnQpOworCisgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgImFkZGVkIGRpc3RydXN0ZWQg Y2VydGlmaWNhdGUgd2l0aCBDTjogJXMgdG8gdGhlIGRieCBsaXN0XG4iLAorICAgICAgICAgICAg ICAgIGNlcnQtPnN1YmplY3QpOworCisgIGNlcnQtPm5leHQgPSBkYi5jZXJ0czsKKyAgZGIuY2Vy dHMgPSBjZXJ0OworICBkYi5jZXJ0X2VudHJpZXMrKzsKIAotICBjZXJ0aWZpY2F0ZV9yZWxlYXNl IChjZXJ0KTsKLSAgZ3J1Yl9mcmVlIChjZXJ0KTsKIAogICByZXR1cm4gZXJyOwogfQpAQCAtODEy LDkgKzg5MCwyNTUgQEAgZ3J1Yl9jbWRfbGlzdF9kYiAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0 cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IGFyZ2MgX19hdHRyaWIKICAgICAgIGNlcnRfbnVtKys7 CiAgICAgfQogCisgIGZvciAoaSA9IDA7IGkgPCBkYi5zaWduYXR1cmVfZW50cmllczsgaSsrKQor ICAgIHsKKyAgICAgIGlmIChkYi5zaWduYXR1cmVzW2ldICE9IE5VTEwpCisgICAgICAgIHsKKyAg ICAgICAgICBncnViX3ByaW50ZiAoIkJpbmFyeSBoYXNoICUiIFBSSXVHUlVCX1NJWkUgIjpcbiIs IGkgKyAxKTsKKyAgICAgICAgICBncnViX3ByaW50ZiAoIlx0aGFzaDogIik7CisgICAgICAgICAg ZHVtcF9hc2NpaV90b19oZXggKGRiLnNpZ25hdHVyZXNbaV0sIGRiLnNpZ25hdHVyZV9zaXplW2ld KTsKKyAgICAgICAgfQorICAgIH0KKwogICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKIH0KIAorc3Rh dGljIGdydWJfZXJyX3QKK2dydWJfY21kX2xpc3RfZGJ4IChncnViX2NvbW1hbmRfdCBjbWQgX19h dHRyaWJ1dGVfXygodW51c2VkKSksCisgICAgICAgICAgICAgICAgICAgaW50IGFyZ2MgX19hdHRy aWJ1dGVfXygodW51c2VkKSksIGNoYXIgKiphcmdzIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQor eworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydDsKKyAgZ3J1Yl9zaXplX3QgaSwgY2Vy dF9udW0gPSAxOworCisgIGZvciAoY2VydCA9IGRieC5jZXJ0czsgY2VydDsgY2VydCA9IGNlcnQt Pm5leHQpCisgICAgeworICAgICAgZ3J1Yl9wcmludGYgKCJDZXJ0aWZpY2F0ZSAlIiBQUkl1R1JV Ql9TSVpFICI6XG4iLCBjZXJ0X251bSk7CisgICAgICBncnViX3ByaW50ZiAoIlx0c2VyaWFsOiAi KTsKKworICAgICAgZm9yIChpID0gMDsgaSA8IGNlcnQtPnNlcmlhbF9sZW4gLSAxOyBpKyspCisg ICAgICAgIGdydWJfcHJpbnRmICgiJTAyeDoiLCBjZXJ0LT5zZXJpYWxbaV0pOworCisgICAgICBn cnViX3ByaW50ZiAoIiUwMnhcbiIsIGNlcnQtPnNlcmlhbFtjZXJ0LT5zZXJpYWxfbGVuIC0gMV0p OworICAgICAgZ3J1Yl9wcmludGYgKCJcdGlzc3VlcjogJXNcbiIsIGNlcnQtPmlzc3Vlcik7Cisg ICAgICBncnViX3ByaW50ZiAoIlx0Q046ICVzXG5cbiIsIGNlcnQtPnN1YmplY3QpOworICAgICAg Y2VydF9udW0rKzsKKyAgICB9CisKKyAgZm9yIChpID0gMDsgaSA8IGRieC5zaWduYXR1cmVfZW50 cmllczsgaSsrKQorICAgIHsKKyAgICAgIGlmIChkYnguc2lnbmF0dXJlc1tpXSAhPSBOVUxMKQor ICAgICAgICB7CisgICAgICAgICAgZ3J1Yl9wcmludGYgKCJDZXJ0aWZpY2F0ZS9CaW5hcnkgaGFz aCAlIiBQUkl1R1JVQl9TSVpFICI6XG4iLCBpICsgMSk7CisgICAgICAgICAgZ3J1Yl9wcmludGYg KCJcdGhhc2g6ICIpOworICAgICAgICAgIGR1bXBfYXNjaWlfdG9faGV4IChkYnguc2lnbmF0dXJl c1tpXSwgZGJ4LnNpZ25hdHVyZV9zaXplW2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICByZXR1 cm4gR1JVQl9FUlJfTk9ORTsKK30KKworc3RhdGljIGdydWJfZXJyX3QKK3JlYWRfaGFzaF9mcm9t X2ZpbGUgKGNoYXIgKmZpbGVfcGF0aCwgZ3J1Yl91aW50OF90ICoqaGFzaF9kYXRhLCBncnViX3Np emVfdCAqaGFzaF9kYXRhX3NpemUpCit7CisgIGdydWJfZXJyX3QgcmM7CisgIGdydWJfZmlsZV90 IGhhc2hfZmlsZTsKKworICBoYXNoX2ZpbGUgPSBncnViX2ZpbGVfb3BlbiAoZmlsZV9wYXRoLCBH UlVCX0ZJTEVfVFlQRV9IQVNIX1RSVVNUIHwgR1JVQl9GSUxFX1RZUEVfTk9fREVDT01QUkVTUyk7 CisgIGlmIChoYXNoX2ZpbGUgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9F UlJfRklMRV9OT1RfRk9VTkQsICJ1bmFibGUgdG8gb3BlbiAlcyBmaWxlIiwgZmlsZV9wYXRoKTsK KworICByYyA9IGZpbGVfcmVhZF93aG9sZSAoaGFzaF9maWxlLCBoYXNoX2RhdGEsIGhhc2hfZGF0 YV9zaXplKTsKKyAgZ3J1Yl9maWxlX2Nsb3NlIChoYXNoX2ZpbGUpOworCisgIGlmIChjaGVja19z aWdzID09IHRydWUpCisgICAgKmhhc2hfZGF0YV9zaXplIC09IGFwcGVuZF9zaWdfbGVuOworCisg IHJldHVybiByYzsKK30KKworc3RhdGljIGJvb2wKK2lzX2hhc2hfcHJlc2VudF9pbl9kYiAoY29u c3QgZ3J1Yl91aW50OF90ICpoYXNoX2RhdGEsIGNvbnN0IGdydWJfc2l6ZV90IGhhc2hfZGF0YV9z aXplKQoreworICBpbnQgaTsKKworICBmb3IgKGkgPSAwOyBpIDwgZGIuc2lnbmF0dXJlX2VudHJp ZXM7IGkrKykKKyAgICB7CisgICAgICBpZiAoZ3J1Yl9tZW1jbXAgKGRiLnNpZ25hdHVyZXNbaV0s IGhhc2hfZGF0YSwgaGFzaF9kYXRhX3NpemUpID09IDApCisgICAgICAgIHJldHVybiB0cnVlOwor ICAgIH0KKworICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sCitpc19oYXNoX3ByZXNl bnRfaW5fZGJ4IChjb25zdCBncnViX3VpbnQ4X3QgKmhhc2hfZGF0YSwgY29uc3QgZ3J1Yl9zaXpl X3QgaGFzaF9kYXRhX3NpemUpCit7CisgIGludCBpOworCisgIGZvciAoaSA9IDA7IGkgPCBkYngu c2lnbmF0dXJlX2VudHJpZXM7IGkrKykKKyAgICB7CisgICAgICBpZiAoZ3J1Yl9tZW1jbXAgKGRi eC5zaWduYXR1cmVzW2ldLCBoYXNoX2RhdGEsIGhhc2hfZGF0YV9zaXplKSA9PSAwKQorICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9p ZAorcmVtb3ZlX2hhc2hfZnJvbV9kYiAoY29uc3QgZ3J1Yl91aW50OF90ICpoYXNoX2RhdGEsIGNv bnN0IGdydWJfc2l6ZV90IGhhc2hfZGF0YV9zaXplKQoreworICBpbnQgaTsKKworICBmb3IgKGkg PSAwOyBpIDwgZGIuc2lnbmF0dXJlX2VudHJpZXM7IGkrKykKKyAgICB7CisgICAgICBpZiAoZ3J1 Yl9tZW1jbXAgKGRiLnNpZ25hdHVyZXNbaV0sIGhhc2hfZGF0YSwgaGFzaF9kYXRhX3NpemUpID09 IDApCisgICAgICAgIHsKKyAgICAgICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJy ZW1vdmVkIGRpc3RydXN0ZWQgaGFzaCAlMDJ4JTAyeCUwMnglMDJ4Li4gZnJvbSB0aGUgZGIgbGlz dFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRiLnNpZ25hdHVyZXNbaV1bMF0sIGRiLnNp Z25hdHVyZXNbaV1bMV0sIGRiLnNpZ25hdHVyZXNbaV1bMl0sCisgICAgICAgICAgICAgICAgICAg ICAgICBkYi5zaWduYXR1cmVzW2ldWzNdKTsKKyAgICAgICAgICBncnViX2ZyZWUgKGRiLnNpZ25h dHVyZXNbaV0pOworICAgICAgICAgIGRiLnNpZ25hdHVyZXNbaV0gPSBOVUxMOworICAgICAgICAg IGRiLnNpZ25hdHVyZV9zaXplW2ldID0gMDsKKyAgICAgICAgICBicmVhazsKKwl9CisgICAgfQor fQorCitzdGF0aWMgZ3J1Yl9lcnJfdAorZ3J1Yl9jbWRfZGJfaGFzaCAoZ3J1Yl9jb21tYW5kX3Qg Y21kIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLCBpbnQgYXJnYywgY2hhcioqYXJncykKK3sKKyAg Z3J1Yl9lcnJfdCByYzsKKyAgZ3J1Yl91aW50OF90ICpoYXNoX2RhdGEgPSBOVUxMOworICBncnVi X3NpemVfdCBoYXNoX2RhdGFfc2l6ZSA9IDA7CisKKyAgaWYgKGFyZ2MgIT0gMSkKKyAgICByZXR1 cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0FSR1VNRU5ULAorICAgICAgICAgICAgICAgICAg ICAgICAiYSB0cnVzdGVkIGJpbmFyeSBoYXNoIGZpbGUgaXMgZXhwZWN0ZWQgaW4gQVNDSUkgdGV4 dCBmb3JtYXRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4YW1wbGU6XG5cdGFwcGVuZF9h ZGRfZGJfaGFzaCA8QklOQVJZIEhBU0ggRklMRT5cbiIpOworCisgIGlmICgqYXJncyA9PSBOVUxM KQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfRklMRU5BTUUsICJtaXNzaW5n IHRydXN0ZWQgYmluYXJ5IGhhc2ggZmlsZSIpOworCisgIHJjID0gcmVhZF9oYXNoX2Zyb21fZmls ZSAoYXJnc1swXSwgJmhhc2hfZGF0YSwgJmhhc2hfZGF0YV9zaXplKTsKKyAgaWYgKHJjID09IEdS VUJfRVJSX05PTkUpCisgICAgeworICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLAor ICAgICAgICAgICAgICAgICAgICAiYWRkaW5nIGEgdHJ1c3RlZCBiaW5hcnkgaGFzaCAlMDJ4JTAy eCUwMnglMDJ4Li4uXG4gd2l0aCBzaXplIG9mICUiIFBSSXVHUlVCX1NJWkUgIlxuIiwKKyAgICAg ICAgICAgICAgICAgICAgaGFzaF9kYXRhWzBdLCBoYXNoX2RhdGFbMV0sIGhhc2hfZGF0YVsyXSwg aGFzaF9kYXRhWzNdLCBoYXNoX2RhdGFfc2l6ZSk7CisKKyAgICAgIC8qIE9ubHkgYWNjZXB0IFNI QTI1NiwgU0hBMzg0IGFuZCBTSEE1MTIgYmluYXJ5IGhhc2ggKi8KKyAgICAgIGlmIChoYXNoX2Rh dGFfc2l6ZSAhPSAzMiAmJiBoYXNoX2RhdGFfc2l6ZSAhPSA0OCAmJiBoYXNoX2RhdGFfc2l6ZSAh PSA2NCkKKyAgICAgICAgeworICAgICAgICAgIGdydWJfZnJlZSAoaGFzaF9kYXRhKTsKKyAgICAg ICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX1NJR05BVFVSRSwgInVuYWNjZXB0 YWJsZSB0cnVzdGVkIGJpbmFyeSBoYXNoIHR5cGUiKTsKKyAgICAgICAgfQorCisgICAgICBpZiAo aXNfaGFzaF9wcmVzZW50X2luX2RieCAoaGFzaF9kYXRhLCBoYXNoX2RhdGFfc2l6ZSkgPT0gdHJ1 ZSkKKyAgICAgICAgeworICAgICAgICAgIGdydWJfZnJlZSAoaGFzaF9kYXRhKTsKKyAgICAgICAg ICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfU1RJTExfUkVGRVJFTkNFRCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBhZGQgdHJ1c3RlZCBiaW5hcnkgaGFzaCwg YXMgaXQgaXMgcHJlc2VudCBpbiB0aGUgZGJ4IGxpc3QiKTsKKyAgICAgICAgfQorCisgICAgICBp ZiAoaXNfaGFzaF9wcmVzZW50X2luX2RiIChoYXNoX2RhdGEsIGhhc2hfZGF0YV9zaXplKSA9PSBm YWxzZSkKKyAgICAgICAgeworICAgICAgICAgIHJjID0gYWRkX2hhc2ggKChjb25zdCBncnViX3Vp bnQ4X3QgKiopICZoYXNoX2RhdGEsIGhhc2hfZGF0YV9zaXplLCAmZGIuc2lnbmF0dXJlcywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAmZGIuc2lnbmF0dXJlX3NpemUsICZkYi5zaWduYXR1cmVf ZW50cmllcyk7CisgICAgICAgICAgaWYgKHJjICE9IEdSVUJfRVJSX05PTkUpCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgIGZyZWVfZGJfbGlzdCAoKTsKKyAgICAgICAgICAgICAgZnJlZV9k YnhfbGlzdCAoKTsKKyAgICAgICAgICAgICAgcmMgPSBncnViX2Vycm9yIChyYywgImFkZGluZyBv ZiB0cnVzdGVkIGJpbmFyeSBoYXNoIGZhaWxlZCIpOworICAgICAgICAgICAgfQorICAgICAgICAg IGVsc2UKKyAgICAgICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgImFkZGVkIHRydXN0ZWQgYmluYXJ5IGhhc2ggJTAyeCUwMnglMDJ4 JTAyeC4uLlxuIHRvIHRoZSBkYiBsaXN0XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBo YXNoX2RhdGFbMF0sIGhhc2hfZGF0YVsxXSwgaGFzaF9kYXRhWzJdLCBoYXNoX2RhdGFbM10pOwor ICAgICAgICAgfQorICAgICAgIGVsc2UKKyAgICAgICAgIHJjID0gZ3J1Yl9lcnJvciAoR1JVQl9F UlJfU1RJTExfUkVGRVJFTkNFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5v dCBhZGQgdHJ1c3RlZCBiaW5hcnkgaGFzaCwgYXMgaXQgaXMgcHJlc2VudCBpbiB0aGUgZGIgbGlz dCIpOworICAgIH0KKworICBncnViX2ZyZWUgKGhhc2hfZGF0YSk7CisKKyAgcmV0dXJuIHJjOwor fQorCitzdGF0aWMgZ3J1Yl9lcnJfdAorZ3J1Yl9jbWRfZGJ4X2hhc2ggKGdydWJfZXh0Y21kX2Nv bnRleHRfdCBjdHh0LCBpbnQgYXJnYyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisgICAgICAg ICAgICAgICAgICAgY2hhciAqKmFyZ3MgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQoreworICBn cnViX2Vycl90IHJjOworICBncnViX3VpbnQ4X3QgKmhhc2hfZGF0YSA9IE5VTEw7CisgIGdydWJf c2l6ZV90IGhhc2hfZGF0YV9zaXplID0gMDsKKyAgY2hhciAqZmlsZV9wYXRoOworCisgIGlmICgh Y3R4dC0+c3RhdGVbT1BUSU9OX0JJTkFSWV9IQVNIXS5zZXQgJiYgIWN0eHQtPnN0YXRlW09QVElP Tl9DRVJUX0hBU0hdLnNldCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0FS R1VNRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAiYSBkaXN0cnVzdGVkIGNlcnRpZmljYXRl L2JpbmFyeSBoYXNoIGZpbGUgaXMgZXhwZWN0ZWQgaW4gQVNDSUkgdGV4dCBmb3JtYXRcbiIKKyAg ICAgICAgICAgICAgICAgICAgICAgIkV4YW1wbGU6XG5cdGFwcGVuZF9hZGRfZGJ4X2hhc2ggW29w dGlvbl0gPEZJTEU+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJvcHRpb246XG5bLWJ8LS1i aW5hcnktaGFzaF0gRklMRSBbQklOQVJZIEhBU0ggRklMRV1cbiIKKyAgICAgICAgICAgICAgICAg ICAgICAgIlstY3wtLWNlcnQtaGFzaF0gRklMRSBbQ0VSVEZJQ0FURSBIQVNIIEZJTEVdXG4iKTsK KworICBpZiAoY3R4dC0+c3RhdGVbT1BUSU9OX0JJTkFSWV9IQVNIXS5hcmcgPT0gTlVMTCAmJiBj dHh0LT5zdGF0ZVtPUFRJT05fQ0VSVF9IQVNIXS5hcmcgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1 Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZJTEVOQU1FLCAibWlzc2luZyBkaXN0cnVzdGVkIGNlcnRp ZmljYXRlL2JpbmFyeSBoYXNoIGZpbGUiKTsKKworICBpZiAoY3R4dC0+c3RhdGVbT1BUSU9OX0JJ TkFSWV9IQVNIXS5hcmcgIT0gTlVMTCkKKyAgICBmaWxlX3BhdGggPSBjdHh0LT5zdGF0ZVtPUFRJ T05fQklOQVJZX0hBU0hdLmFyZzsKKyAgZWxzZQorICAgIGZpbGVfcGF0aCA9IGN0eHQtPnN0YXRl W09QVElPTl9DRVJUX0hBU0hdLmFyZzsKKworICByYyA9IHJlYWRfaGFzaF9mcm9tX2ZpbGUgKGZp bGVfcGF0aCwgJmhhc2hfZGF0YSwgJmhhc2hfZGF0YV9zaXplKTsKKyAgaWYgKHJjID09IEdSVUJf RVJSX05PTkUpCisgICAgeworICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLAorICAg ICAgICAgICAgICAgICAgICAiYWRkaW5nIGEgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZS9iaW5hcnkg aGFzaCAlMDJ4JTAyeCUwMnglMDJ4Li4uXG4iCisgICAgICAgICAgICAgICAgICAgICIgd2l0aCBz aXplIG9mICUiIFBSSXVHUlVCX1NJWkUgIlxuIiwgaGFzaF9kYXRhWzBdLCBoYXNoX2RhdGFbMV0s CisgICAgICAgICAgICAgICAgICAgIGhhc2hfZGF0YVsyXSwgaGFzaF9kYXRhWzNdLCBoYXNoX2Rh dGFfc2l6ZSk7CisKKyAgICAgIGlmIChjdHh0LT5zdGF0ZVtPUFRJT05fQklOQVJZX0hBU0hdLnNl dCB8fCBjdHh0LT5zdGF0ZVtPUFRJT05fQ0VSVF9IQVNIXS5zZXQpCisgICAgICAgIHsKKyAgICAg ICAgICAvKiBPbmx5IGFjY2VwdCBTSEEyNTYsIFNIQTM4NCBhbmQgU0hBNTEyIGNlcnRpZmljYXRl L2JpbmFyeSBoYXNoICovCisgICAgICAgICAgaWYgKGhhc2hfZGF0YV9zaXplICE9IDMyICYmIGhh c2hfZGF0YV9zaXplICE9IDQ4ICYmIGhhc2hfZGF0YV9zaXplICE9IDY0KQorICAgICAgICAgICAg eworICAgICAgICAgICAgICByYyA9IGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9TSUdOQVRVUkUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuYWNjZXB0YWJsZSBkaXN0cnVzdGVk IGNlcnRpZmljYXRlL2JpbmFyeSBoYXNoIHR5cGUiKTsKKyAgICAgICAgICAgICAgZ290byBjbGVh bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICBpZiAoaXNfaGFzaF9wcmVzZW50 X2luX2RieCAoaGFzaF9kYXRhLCBoYXNoX2RhdGFfc2l6ZSkgPT0gdHJ1ZSkKKyAgICAgICAgewor ICAgICAgICAgIHJjID0gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfU1RJTExfUkVGRVJFTkNFRCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgYWRkIGRpc3RydXN0ZWQgY2VydGlm aWNhdGUvYmluYXJ5IGhhc2gsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcyBpdCBp cyBwcmVzZW50IGluIHRoZSBkYnggbGlzdCIpOworICAgICAgICAgIGdvdG8gY2xlYW47CisgICAg ICAgIH0KKworICAgICAgICAvKiByZW1vdmUgZGlzdHJ1c3RlZCBoYXNoIGZyb20gdGhlIGRiIGxp c3QgaWYgcHJlc2VudC4gKi8KKyAgICAgICAgcmVtb3ZlX2hhc2hfZnJvbV9kYiAoaGFzaF9kYXRh LCBoYXNoX2RhdGFfc2l6ZSk7CisKKyAgICAgIHJjID0gYWRkX2hhc2ggKChjb25zdCBncnViX3Vp bnQ4X3QgKiopICZoYXNoX2RhdGEsIGhhc2hfZGF0YV9zaXplLCAmZGJ4LnNpZ25hdHVyZXMsCisg ICAgICAgICAgICAgICAgICAgICAmZGJ4LnNpZ25hdHVyZV9zaXplLCAmZGJ4LnNpZ25hdHVyZV9l bnRyaWVzKTsKKyAgICAgIGlmIChyYyAhPSBHUlVCX0VSUl9OT05FKQorICAgICAgICB7CisgICAg ICAgICAgZnJlZV9kYl9saXN0ICgpOworICAgICAgICAgIGZyZWVfZGJ4X2xpc3QgKCk7CisgICAg ICAgICAgcmMgPSBncnViX2Vycm9yIChyYywgImFkZGluZyBvZiBkaXN0cnVzdGVkIGJpbmFyeS9j ZXJ0aWZpY2F0ZSBoYXNoIGZhaWxlZCIpOworICAgICAgICB9CisgICAgICBlbHNlCisgICAgICAg IGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwKKyAgICAgICAgICAgICAgICAgICAgICAiYWRk ZWQgZGlzdHJ1c3RlZCBiaW5hcnkvY2VydGlmaWNhdGUgaGFzaCAlMDJ4JTAyeCUwMnglMDJ4Li4u XG4gdG8gdGhlIGRieCBsaXN0XG4iLAorICAgICAgICAgICAgICAgICAgICAgIGhhc2hfZGF0YVsw XSwgaGFzaF9kYXRhWzFdLCBoYXNoX2RhdGFbMl0sIGhhc2hfZGF0YVszXSk7CisgICAgfQorCisg Y2xlYW46CisgIGdydWJfZnJlZSAoaGFzaF9kYXRhKTsKKworICByZXR1cm4gcmM7Cit9CisKIHN0 YXRpYyBncnViX2Vycl90CiBhcHBlbmRlZHNpZ19pbml0IChncnViX2ZpbGVfdCBpbyBfX2F0dHJp YnV0ZV9fICgodW51c2VkKSksIGVudW0gZ3J1Yl9maWxlX3R5cGUgdHlwZSwKICAgICAgICAgICAg ICAgICAgIHZvaWQgKipjb250ZXh0IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgZW51bSBncnVi X3ZlcmlmeV9mbGFncyAqZmxhZ3MpCkBAIC04MzUsNiArMTE1OSwxMSBAQCBhcHBlbmRlZHNpZ19p bml0IChncnViX2ZpbGVfdCBpbyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGVudW0gZ3J1Yl9m aWxlX3R5cGUgdAogICAgICAgICAgKiB2ZXJpZmllciwgYnV0IHdlIGxhY2sgdGhlIGh1YnJpcyBy ZXF1aXJlZCB0byB0YWtlIHRoaXMgb24uIEluc3RlYWQsCiAgICAgICAgICAqIHJlcXVpcmUgdGhh dCBpdCBoYXZlIGFuIGFwcGVuZGVkIHNpZ25hdHVyZS4KICAgICAgICAgICovCisgICAgICBjYXNl IEdSVUJfRklMRV9UWVBFX0hBU0hfVFJVU1Q6CisgICAgICAgIC8qCisgICAgICAgICAqIFRoaXMg aXMgYSBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCB0byBhZGQgdG8gZGIvZGJ4LgorICAgICAgICAg KiBUaGlzIG5lZWRzIHRvIGJlIHZlcmlmaWVkIG9yIGJsb2NrZWQuCisgICAgICAgICAqLwogICAg ICAgY2FzZSBHUlVCX0ZJTEVfVFlQRV9MSU5VWF9LRVJORUw6CiAgICAgICBjYXNlIEdSVUJfRklM RV9UWVBFX0dSVUJfTU9EVUxFOgogICAgICAgICAvKgpAQCAtODg4LDggKzEyMTcsNiBAQCBzdGF0 aWMgc3RydWN0IGdydWJfZnMgcHNldWRvX2ZzID0gewogICAuZnNfcmVhZCA9IHBzZXVkb19yZWFk CiB9OwogCi1zdGF0aWMgZ3J1Yl9jb21tYW5kX3QgY21kX3ZlcmlmeSwgY21kX2xpc3RfZGIsIGNt ZF9kYnhfY2VydCwgY21kX2RiX2NlcnQ7Ci0KIC8qIENoZWNrIHRoZSBjZXJ0aWZpY2F0ZSBoYXNo IHByZXNlbmNlIGluIHRoZSBQS1MgZGJ4IGxpc3QuICovCiBzdGF0aWMgYm9vbAogaXNfZGJ4X2Nl cnRfaGFzaCAoY29uc3QgZ3J1Yl91aW50OF90ICpkYXRhLCBjb25zdCBncnViX3NpemVfdCBkYXRh X3NpemUpCkBAIC0xMTQ3LDYgKzE0NzQsMTAgQEAgbG9hZF9zdGF0aWNfa2V5cyAoY29uc3Qgc3Ry dWN0IGdydWJfbW9kdWxlX2hlYWRlciAqaGVhZGVyLCBjb25zdCBib29sIGlzX3BrcykKICAgcmV0 dXJuIHJjOwogfQogCitzdGF0aWMgZ3J1Yl9leHRjbWRfdCBjbWRfZGJ4X2hhc2g7CitzdGF0aWMg Z3J1Yl9jb21tYW5kX3QgY21kX3ZlcmlmeSwgY21kX2xpc3RfZGIsIGNtZF9kYl9jZXJ0LCBjbWRf ZGJfaGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICBjbWRfbGlzdF9kYngsIGNtZF9kYnhfY2Vy dDsKKwogR1JVQl9NT0RfSU5JVCAoYXBwZW5kZWRzaWcpCiB7CiAgIGludCByYzsKQEAgLTEyMjEs MTIgKzE1NTIsMjEgQEAgR1JVQl9NT0RfSU5JVCAoYXBwZW5kZWRzaWcpCiAKICAgY21kX2RiX2Nl cnQgPSBncnViX3JlZ2lzdGVyX2NvbW1hbmQgKCJhcHBlbmRfYWRkX2RiX2NlcnQiLCBncnViX2Nt ZF9kYl9jZXJ0LCBOXygiWDUwOV9DRVJUSUZJQ0FURSIpLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTl8oIkFkZCB0cnVzdGVkIFg1MDlfQ0VSVElGSUNBVEUgdG8gdGhl IGRiIGxpc3QiKSk7Ci0gIGNtZF9kYnhfY2VydCA9IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImFw cGVuZF9ybV9kYnhfY2VydCIsIGdydWJfY21kX2RieF9jZXJ0LCBOXygiWDUwOV9DRVJUSUZJQ0FU RSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5fKCJSZW1vdmUg ZGlzdHJ1c3RlZCBYNTA5X0NFUlRJRklDQVRFIGZyb20gdGhlIGRiIGxpc3QiKSk7CisgIGNtZF9k YnhfY2VydCA9IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImFwcGVuZF9hZGRfZGJ4X2NlcnQiLCBn cnViX2NtZF9kYnhfY2VydCwgTl8oIlg1MDlfQ0VSVElGSUNBVEUiKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOXygiQWRkIGRpc3RydXN0ZWQgWDUwOV9DRVJUSUZJ Q0FURSB0byB0aGUgZGJ4IGxpc3QiKSk7CiAgIGNtZF9saXN0X2RiID0gZ3J1Yl9yZWdpc3Rlcl9j b21tYW5kICgiYXBwZW5kX2xpc3RfZGIiLCBncnViX2NtZF9saXN0X2RiLCAwLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIlNob3cgdGhlIGxpc3Qgb2YgdHJ1c3Rl ZCBYLjUwOSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgZGIgbGlzdCIpKTsKICAgY21kX3ZlcmlmeSA9 IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImFwcGVuZF92ZXJpZnkiLCBncnViX2NtZF92ZXJpZnlf c2lnbmF0dXJlLCBOXygiU0lHTkVEX0ZJTEUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTl8oIlZlcmlmeSBTSUdORURfRklMRSBhZ2FpbnN0IHRoZSB0cnVzdGVkIFgu NTA5IGNlcnRpZmljYXRlcyBpbiB0aGUgZGIgbGlzdCIpKTsKKyAgY21kX2xpc3RfZGJ4ID0gZ3J1 Yl9yZWdpc3Rlcl9jb21tYW5kICgiYXBwZW5kX2xpc3RfZGJ4IiwgZ3J1Yl9jbWRfbGlzdF9kYngs IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIlNob3cgdGhl IGxpc3Qgb2YgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgYW5kIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIgY2VydGlmaWNhdGUvYmluYXJ5IGhhc2hlcyBmcm9t IHRoZSBkYnggbGlzdCIpKTsKKyAgY21kX2RiX2hhc2ggPSBncnViX3JlZ2lzdGVyX2NvbW1hbmQg KCJhcHBlbmRfYWRkX2RiX2hhc2giLCBncnViX2NtZF9kYl9oYXNoLCBOXygiQklOQVJZIEhBU0gg RklMRSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIkFkZCB0 cnVzdGVkIEJJTkFSWSBIQVNIIHRvIHRoZSBkYiBsaXN0LiIpKTsKKyAgY21kX2RieF9oYXNoID0g Z3J1Yl9yZWdpc3Rlcl9leHRjbWQgKCJhcHBlbmRfYWRkX2RieF9oYXNoIiwgZ3J1Yl9jbWRfZGJ4 X2hhc2gsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOXygiWy1i fC0tYmluYXJ5LWhhc2hdIEZJTEUgW0JJTkFSWSBIQVNIIEZJTEVdXG4iCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWy1jfC0tY2VydC1oYXNoXSBGSUxFIFtDRVJU RklDQVRFIEhBU0ggRklMRV0iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5fKCJBZGQgZGlzdHJ1c3RlZCBDRVJURklDQVRFL0JJTkFSWSBIQVNIIHRvIHRoZSBkYngg bGlzdC4iKSwgb3B0aW9ucyk7CiAKICAgZ3J1Yl92ZXJpZmllcl9yZWdpc3RlciAoJmdydWJfYXBw ZW5kZWRzaWdfdmVyaWZpZXIpOwogICBncnViX2RsX3NldF9wZXJzaXN0ZW50IChtb2QpOwpAQCAt MTI0Myw0ICsxNTgzLDcgQEAgR1JVQl9NT0RfRklOSSAoYXBwZW5kZWRzaWcpCiAgIGdydWJfdW5y ZWdpc3Rlcl9jb21tYW5kIChjbWRfbGlzdF9kYik7CiAgIGdydWJfdW5yZWdpc3Rlcl9jb21tYW5k IChjbWRfZGJfY2VydCk7CiAgIGdydWJfdW5yZWdpc3Rlcl9jb21tYW5kIChjbWRfZGJ4X2NlcnQp OworICBncnViX3VucmVnaXN0ZXJfY29tbWFuZCAoY21kX2xpc3RfZGJ4KTsKKyAgZ3J1Yl91bnJl Z2lzdGVyX2NvbW1hbmQgKGNtZF9kYl9oYXNoKTsKKyAgZ3J1Yl91bnJlZ2lzdGVyX2V4dGNtZCAo Y21kX2RieF9oYXNoKTsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9maWxlLmggYi9pbmNs dWRlL2dydWIvZmlsZS5oCmluZGV4IGQ2NzhkZTA2My4uMTZhNGI3ZDI2IDEwMDY0NAotLS0gYS9p bmNsdWRlL2dydWIvZmlsZS5oCisrKyBiL2luY2x1ZGUvZ3J1Yi9maWxlLmgKQEAgLTExNSw2ICsx MTUsOCBAQCBlbnVtIGdydWJfZmlsZV90eXBlCiAgICAgR1JVQl9GSUxFX1RZUEVfSEFTSExJU1Qs CiAgICAgLyogRmlsZSBoYXNoZWQgYnkgaGFzaHN1bS4gICovCiAgICAgR1JVQl9GSUxFX1RZUEVf VE9fSEFTSCwKKyAgICAvKiBGaWxlIGhvbGRpbmcgY2VydGlmaWNpYXRlL2JpbmFyeSBoYXNoIHRv IGFkZCB0byBkYi9kYnguICovCisgICAgR1JVQl9GSUxFX1RZUEVfSEFTSF9UUlVTVCwKICAgICAv KiBLZXlib2FyZCBsYXlvdXQuICAqLwogICAgIEdSVUJfRklMRV9UWVBFX0tFWUJPQVJEX0xBWU9V VCwKICAgICAvKiBQaWN0dXJlIGZpbGUuICAqLwotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkdydWItZGV2 ZWwgbWFpbGluZyBsaXN0CkdydWItZGV2ZWxAZ251Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcv bWFpbG1hbi9saXN0aW5mby9ncnViLWRldmVsCg==