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 B5576C87FC9 for ; Tue, 29 Jul 2025 14:56:13 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uglhx-0000TA-5d; Tue, 29 Jul 2025 10:53:37 -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 1uglhn-0000BI-PR for grub-devel@gnu.org; Tue, 29 Jul 2025 10:53:29 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uglhk-0007EK-I8 for grub-devel@gnu.org; Tue, 29 Jul 2025 10:53:26 -0400 Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56TDmEqo022959; Tue, 29 Jul 2025 14:53:22 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=1Bc1ffNq97TXkYFFS T+bPts2SxnpNUopgvx4RMq/kCA=; b=RBawisN5aQ1dJSLTrt9+2bcZIR3Ae80E8 L+oET8E4n+oeMupT6KS3FtQOqvu+MJJ9CmE3L3UGGG8Kg85hm+XtPCj5DrPj5nxM etxNs+3vmxMn+D8guWuachihFWNbCtxD2CMzaU/ApYTP9duJFUNDodlFRqQiUvwF 7PRoM4Hfl1fr930Us+w01/0FnKWPxGuQqzkCeAE0KqpObCWBN2mbSrINe4Fu+M4M uN1OnPqtzedXcL5vsouQKjEfvczabf6jI2Sqov44RjCBMTmq9iT5xpU788Di8OrB 4ALoNeP7sb/F9HxmBLCqlBHtLsOvjDh/Z5nkkJ5sbDOh7c0lw0kZg== 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 484qd5fbgp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 29 Jul 2025 14:53:21 +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 56TE0iH1018665; Tue, 29 Jul 2025 14:53:21 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 485abp2ucp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 29 Jul 2025 14:53:21 +0000 Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 56TErHAp44499354 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 29 Jul 2025 14:53:17 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 23DDA20043; Tue, 29 Jul 2025 14:53:17 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B7A6F20040; Tue, 29 Jul 2025 14:53:14 +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:53:14 +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 20:21:52 +0530 Message-Id: <20250729145156.3522-17-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-Spam-Details-Enc: AW1haW4tMjUwNzI5MDExMyBTYWx0ZWRfX482uwdPzFugc xQzFekND2F7H6menWUtvUn1ihisjUX8p4ecHXds/9uTTKk9vanuahVGgZh2TiCbJR2XZ8B2rArT O3/0yR6VUtK8pVpbeIxHdtS2U4CocrbZPRvqL4nEDByZSaCWGIBujVLkt5wT//W5tCgrxmLyjBI 8FGRgvvw5k/J7PaYD8O/oExy8Vog0BLbqCZzXo/jl7FxRJLT3tvMI7DyNY2nduVRIpKtTvpsFB4 W/nNmj2oJwib9WmP9wPCRq/XWhlze4QGItDfupRh3uA4jqx+5lOlpkIocxnsd9CQJi60LNbRq3M rBMUN0+KLe1xegpwGksq2A6VbpgRXuWnEmE5fJC4HKEWQshzVh7zo7NXIMVFdMCu/hXKB4lOlGT AgZ4VD9X+gcoEL6TUbVC06xf67U6wBfPPACKOri/KF/ZVuk3DATLRhMhnHJ7QA6MVIcBNjoa X-Proofpoint-ORIG-GUID: UN_zpXtsu_WVzQ0PrIKF32gjV-hD_sZn X-Authority-Analysis: v=2.4 cv=B9q50PtM c=1 sm=1 tr=0 ts=6888e061 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=Wb1JkmetP80A:10 a=VnNF1IyMAAAA:8 a=LaQub0gFDTJ6eeYmJpYA:9 X-Proofpoint-GUID: UN_zpXtsu_WVzQ0PrIKF32gjV-hD_sZn 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 phishscore=0 priorityscore=1501 mlxscore=0 spamscore=0 mlxlogscore=999 suspectscore=0 clxscore=1015 impostorscore=0 bulkscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 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.158.5; envelope-from=sudhakar@linux.ibm.com; helo=mx0b-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 L2FwcGVuZGVkc2lnLmMKaW5kZXggZmE5MDhiOTYzLi4xZDdkYzdiYTEgMTAwNjQ0Ci0tLSBhL2dy 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 ICAgIGNlcnQtPnN1YmplY3QpOworCisgIGNlcnQtPm5leHQgPSBkYnguY2VydHM7CisgIGRieC5j ZXJ0cyA9IGNlcnQ7CisgIGRieC5jZXJ0X2VudHJpZXMrKzsKIAotICBjZXJ0aWZpY2F0ZV9yZWxl YXNlIChjZXJ0KTsKLSAgZ3J1Yl9mcmVlIChjZXJ0KTsKIAogICByZXR1cm4gZXJyOwogfQpAQCAt ODEyLDkgKzg5MCwyNTUgQEAgZ3J1Yl9jbWRfbGlzdF9kYiAoZ3J1Yl9jb21tYW5kX3QgY21kIF9f YXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IGFyZ2MgX19hdHRyaWIKICAgICAgIGNlcnRfbnVt Kys7CiAgICAgfQogCisgIGZvciAoaSA9IDA7IGkgPCBkYi5zaWduYXR1cmVfZW50cmllczsgaSsr KQorICAgIHsKKyAgICAgIGlmIChkYi5zaWduYXR1cmVzW2ldICE9IE5VTEwpCisgICAgICAgIHsK KyAgICAgICAgICBncnViX3ByaW50ZiAoIkJpbmFyeSBoYXNoICUiIFBSSXVHUlVCX1NJWkUgIjpc biIsIGkgKyAxKTsKKyAgICAgICAgICBncnViX3ByaW50ZiAoIlx0aGFzaDogIik7CisgICAgICAg ICAgZHVtcF9hc2NpaV90b19oZXggKGRiLnNpZ25hdHVyZXNbaV0sIGRiLnNpZ25hdHVyZV9zaXpl W2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKK30KKwor c3RhdGljIGdydWJfZXJyX3QKK2dydWJfY21kX2xpc3RfZGJ4IChncnViX2NvbW1hbmRfdCBjbWQg X19hdHRyaWJ1dGVfXygodW51c2VkKSksCisgICAgICAgICAgICAgICAgICAgaW50IGFyZ2MgX19h dHRyaWJ1dGVfXygodW51c2VkKSksIGNoYXIgKiphcmdzIF9fYXR0cmlidXRlX18oKHVudXNlZCkp KQoreworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydDsKKyAgZ3J1Yl9zaXplX3QgaSwg Y2VydF9udW0gPSAxOworCisgIGZvciAoY2VydCA9IGRieC5jZXJ0czsgY2VydDsgY2VydCA9IGNl cnQtPm5leHQpCisgICAgeworICAgICAgZ3J1Yl9wcmludGYgKCJDZXJ0aWZpY2F0ZSAlIiBQUkl1 R1JVQl9TSVpFICI6XG4iLCBjZXJ0X251bSk7CisgICAgICBncnViX3ByaW50ZiAoIlx0c2VyaWFs OiAiKTsKKworICAgICAgZm9yIChpID0gMDsgaSA8IGNlcnQtPnNlcmlhbF9sZW4gLSAxOyBpKysp CisgICAgICAgIGdydWJfcHJpbnRmICgiJTAyeDoiLCBjZXJ0LT5zZXJpYWxbaV0pOworCisgICAg ICBncnViX3ByaW50ZiAoIiUwMnhcbiIsIGNlcnQtPnNlcmlhbFtjZXJ0LT5zZXJpYWxfbGVuIC0g MV0pOworICAgICAgZ3J1Yl9wcmludGYgKCJcdGlzc3VlcjogJXNcbiIsIGNlcnQtPmlzc3Vlcik7 CisgICAgICBncnViX3ByaW50ZiAoIlx0Q046ICVzXG5cbiIsIGNlcnQtPnN1YmplY3QpOworICAg ICAgY2VydF9udW0rKzsKKyAgICB9CisKKyAgZm9yIChpID0gMDsgaSA8IGRieC5zaWduYXR1cmVf ZW50cmllczsgaSsrKQorICAgIHsKKyAgICAgIGlmIChkYnguc2lnbmF0dXJlc1tpXSAhPSBOVUxM KQorICAgICAgICB7CisgICAgICAgICAgZ3J1Yl9wcmludGYgKCJDZXJ0aWZpY2F0ZS9CaW5hcnkg aGFzaCAlIiBQUkl1R1JVQl9TSVpFICI6XG4iLCBpICsgMSk7CisgICAgICAgICAgZ3J1Yl9wcmlu dGYgKCJcdGhhc2g6ICIpOworICAgICAgICAgIGR1bXBfYXNjaWlfdG9faGV4IChkYnguc2lnbmF0 dXJlc1tpXSwgZGJ4LnNpZ25hdHVyZV9zaXplW2ldKTsKKyAgICAgICAgfQorICAgIH0KKwogICBy ZXR1cm4gR1JVQl9FUlJfTk9ORTsKIH0KIAorc3RhdGljIGdydWJfZXJyX3QKK3JlYWRfaGFzaF9m cm9tX2ZpbGUgKGNoYXIgKmZpbGVfcGF0aCwgZ3J1Yl91aW50OF90ICoqaGFzaF9kYXRhLCBncnVi X3NpemVfdCAqaGFzaF9kYXRhX3NpemUpCit7CisgIGdydWJfZXJyX3QgcmM7CisgIGdydWJfZmls ZV90IGhhc2hfZmlsZTsKKworICBoYXNoX2ZpbGUgPSBncnViX2ZpbGVfb3BlbiAoZmlsZV9wYXRo LCBHUlVCX0ZJTEVfVFlQRV9IQVNIX1RSVVNUIHwgR1JVQl9GSUxFX1RZUEVfTk9fREVDT01QUkVT Uyk7CisgIGlmIChoYXNoX2ZpbGUgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JV Ql9FUlJfRklMRV9OT1RfRk9VTkQsICJ1bmFibGUgdG8gb3BlbiAlcyBmaWxlIiwgZmlsZV9wYXRo KTsKKworICByYyA9IGZpbGVfcmVhZF93aG9sZSAoaGFzaF9maWxlLCBoYXNoX2RhdGEsIGhhc2hf ZGF0YV9zaXplKTsKKyAgZ3J1Yl9maWxlX2Nsb3NlIChoYXNoX2ZpbGUpOworCisgIGlmIChjaGVj a19zaWdzID09IHRydWUpCisgICAgKmhhc2hfZGF0YV9zaXplIC09IGFwcGVuZF9zaWdfbGVuOwor CisgIHJldHVybiByYzsKK30KKworc3RhdGljIGJvb2wKK2lzX2hhc2hfcHJlc2VudF9pbl9kYiAo Y29uc3QgZ3J1Yl91aW50OF90ICpoYXNoX2RhdGEsIGNvbnN0IGdydWJfc2l6ZV90IGhhc2hfZGF0 YV9zaXplKQoreworICBpbnQgaTsKKworICBmb3IgKGkgPSAwOyBpIDwgZGIuc2lnbmF0dXJlX2Vu dHJpZXM7IGkrKykKKyAgICB7CisgICAgICBpZiAoZ3J1Yl9tZW1jbXAgKGRiLnNpZ25hdHVyZXNb aV0sIGhhc2hfZGF0YSwgaGFzaF9kYXRhX3NpemUpID09IDApCisgICAgICAgIHJldHVybiB0cnVl OworICAgIH0KKworICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sCitpc19oYXNoX3By ZXNlbnRfaW5fZGJ4IChjb25zdCBncnViX3VpbnQ4X3QgKmhhc2hfZGF0YSwgY29uc3QgZ3J1Yl9z aXplX3QgaGFzaF9kYXRhX3NpemUpCit7CisgIGludCBpOworCisgIGZvciAoaSA9IDA7IGkgPCBk Ynguc2lnbmF0dXJlX2VudHJpZXM7IGkrKykKKyAgICB7CisgICAgICBpZiAoZ3J1Yl9tZW1jbXAg KGRieC5zaWduYXR1cmVzW2ldLCBoYXNoX2RhdGEsIGhhc2hfZGF0YV9zaXplKSA9PSAwKQorICAg ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMg dm9pZAorcmVtb3ZlX2hhc2hfZnJvbV9kYiAoY29uc3QgZ3J1Yl91aW50OF90ICpoYXNoX2RhdGEs IGNvbnN0IGdydWJfc2l6ZV90IGhhc2hfZGF0YV9zaXplKQoreworICBpbnQgaTsKKworICBmb3Ig KGkgPSAwOyBpIDwgZGIuc2lnbmF0dXJlX2VudHJpZXM7IGkrKykKKyAgICB7CisgICAgICBpZiAo Z3J1Yl9tZW1jbXAgKGRiLnNpZ25hdHVyZXNbaV0sIGhhc2hfZGF0YSwgaGFzaF9kYXRhX3NpemUp ID09IDApCisgICAgICAgIHsKKyAgICAgICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIs ICJyZW1vdmVkIGRpc3RydXN0ZWQgaGFzaCAlMDJ4JTAyeCUwMnglMDJ4Li4gZnJvbSB0aGUgZGIg bGlzdFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRiLnNpZ25hdHVyZXNbaV1bMF0sIGRi LnNpZ25hdHVyZXNbaV1bMV0sIGRiLnNpZ25hdHVyZXNbaV1bMl0sCisgICAgICAgICAgICAgICAg ICAgICAgICBkYi5zaWduYXR1cmVzW2ldWzNdKTsKKyAgICAgICAgICBncnViX2ZyZWUgKGRiLnNp Z25hdHVyZXNbaV0pOworICAgICAgICAgIGRiLnNpZ25hdHVyZXNbaV0gPSBOVUxMOworICAgICAg ICAgIGRiLnNpZ25hdHVyZV9zaXplW2ldID0gMDsKKyAgICAgICAgICBicmVhazsKKwl9CisgICAg fQorfQorCitzdGF0aWMgZ3J1Yl9lcnJfdAorZ3J1Yl9jbWRfZGJfaGFzaCAoZ3J1Yl9jb21tYW5k X3QgY21kIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLCBpbnQgYXJnYywgY2hhcioqYXJncykKK3sK KyAgZ3J1Yl9lcnJfdCByYzsKKyAgZ3J1Yl91aW50OF90ICpoYXNoX2RhdGEgPSBOVUxMOworICBn cnViX3NpemVfdCBoYXNoX2RhdGFfc2l6ZSA9IDA7CisKKyAgaWYgKGFyZ2MgIT0gMSkKKyAgICBy ZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0FSR1VNRU5ULAorICAgICAgICAgICAgICAg ICAgICAgICAiYSB0cnVzdGVkIGJpbmFyeSBoYXNoIGZpbGUgaXMgZXhwZWN0ZWQgaW4gQVNDSUkg dGV4dCBmb3JtYXRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4YW1wbGU6XG5cdGFwcGVu ZF9hZGRfZGJfaGFzaCA8QklOQVJZIEhBU0ggRklMRT5cbiIpOworCisgIGlmICgqYXJncyA9PSBO VUxMKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfRklMRU5BTUUsICJtaXNz aW5nIHRydXN0ZWQgYmluYXJ5IGhhc2ggZmlsZSIpOworCisgIHJjID0gcmVhZF9oYXNoX2Zyb21f ZmlsZSAoYXJnc1swXSwgJmhhc2hfZGF0YSwgJmhhc2hfZGF0YV9zaXplKTsKKyAgaWYgKHJjID09 IEdSVUJfRVJSX05PTkUpCisgICAgeworICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWci LAorICAgICAgICAgICAgICAgICAgICAiYWRkaW5nIGEgdHJ1c3RlZCBiaW5hcnkgaGFzaCAlMDJ4 JTAyeCUwMnglMDJ4Li4uXG4gd2l0aCBzaXplIG9mICUiIFBSSXVHUlVCX1NJWkUgIlxuIiwKKyAg ICAgICAgICAgICAgICAgICAgaGFzaF9kYXRhWzBdLCBoYXNoX2RhdGFbMV0sIGhhc2hfZGF0YVsy XSwgaGFzaF9kYXRhWzNdLCBoYXNoX2RhdGFfc2l6ZSk7CisKKyAgICAgIC8qIE9ubHkgYWNjZXB0 IFNIQTI1NiwgU0hBMzg0IGFuZCBTSEE1MTIgYmluYXJ5IGhhc2ggKi8KKyAgICAgIGlmIChoYXNo X2RhdGFfc2l6ZSAhPSAzMiAmJiBoYXNoX2RhdGFfc2l6ZSAhPSA0OCAmJiBoYXNoX2RhdGFfc2l6 ZSAhPSA2NCkKKyAgICAgICAgeworICAgICAgICAgIGdydWJfZnJlZSAoaGFzaF9kYXRhKTsKKyAg ICAgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX1NJR05BVFVSRSwgInVuYWNj ZXB0YWJsZSB0cnVzdGVkIGJpbmFyeSBoYXNoIHR5cGUiKTsKKyAgICAgICAgfQorCisgICAgICBp ZiAoaXNfaGFzaF9wcmVzZW50X2luX2RieCAoaGFzaF9kYXRhLCBoYXNoX2RhdGFfc2l6ZSkgPT0g dHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgIGdydWJfZnJlZSAoaGFzaF9kYXRhKTsKKyAgICAg ICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfU1RJTExfUkVGRVJFTkNFRCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBhZGQgdHJ1c3RlZCBiaW5hcnkgaGFz aCwgYXMgaXQgaXMgcHJlc2VudCBpbiB0aGUgZGJ4IGxpc3QiKTsKKyAgICAgICAgfQorCisgICAg ICBpZiAoaXNfaGFzaF9wcmVzZW50X2luX2RiIChoYXNoX2RhdGEsIGhhc2hfZGF0YV9zaXplKSA9 PSBmYWxzZSkKKyAgICAgICAgeworICAgICAgICAgIHJjID0gYWRkX2hhc2ggKChjb25zdCBncnVi X3VpbnQ4X3QgKiopICZoYXNoX2RhdGEsIGhhc2hfZGF0YV9zaXplLCAmZGIuc2lnbmF0dXJlcywK KyAgICAgICAgICAgICAgICAgICAgICAgICAmZGIuc2lnbmF0dXJlX3NpemUsICZkYi5zaWduYXR1 cmVfZW50cmllcyk7CisgICAgICAgICAgaWYgKHJjICE9IEdSVUJfRVJSX05PTkUpCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgIGZyZWVfZGJfbGlzdCAoKTsKKyAgICAgICAgICAgICAgZnJl ZV9kYnhfbGlzdCAoKTsKKyAgICAgICAgICAgICAgcmMgPSBncnViX2Vycm9yIChyYywgImFkZGlu ZyBvZiB0cnVzdGVkIGJpbmFyeSBoYXNoIGZhaWxlZCIpOworICAgICAgICAgICAgfQorICAgICAg ICAgIGVsc2UKKyAgICAgICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgImFkZGVkIHRydXN0ZWQgYmluYXJ5IGhhc2ggJTAyeCUwMngl MDJ4JTAyeC4uLlxuIHRvIHRoZSBkYiBsaXN0XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAg ICBoYXNoX2RhdGFbMF0sIGhhc2hfZGF0YVsxXSwgaGFzaF9kYXRhWzJdLCBoYXNoX2RhdGFbM10p OworICAgICAgICAgfQorICAgICAgIGVsc2UKKyAgICAgICAgIHJjID0gZ3J1Yl9lcnJvciAoR1JV Ql9FUlJfU1RJTExfUkVGRVJFTkNFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxk IG5vdCBhZGQgdHJ1c3RlZCBiaW5hcnkgaGFzaCwgYXMgaXQgaXMgcHJlc2VudCBpbiB0aGUgZGIg bGlzdCIpOworICAgIH0KKworICBncnViX2ZyZWUgKGhhc2hfZGF0YSk7CisKKyAgcmV0dXJuIHJj OworfQorCitzdGF0aWMgZ3J1Yl9lcnJfdAorZ3J1Yl9jbWRfZGJ4X2hhc2ggKGdydWJfZXh0Y21k X2NvbnRleHRfdCBjdHh0LCBpbnQgYXJnYyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisgICAg ICAgICAgICAgICAgICAgY2hhciAqKmFyZ3MgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQorewor ICBncnViX2Vycl90IHJjOworICBncnViX3VpbnQ4X3QgKmhhc2hfZGF0YSA9IE5VTEw7CisgIGdy dWJfc2l6ZV90IGhhc2hfZGF0YV9zaXplID0gMDsKKyAgY2hhciAqZmlsZV9wYXRoOworCisgIGlm ICghY3R4dC0+c3RhdGVbT1BUSU9OX0JJTkFSWV9IQVNIXS5zZXQgJiYgIWN0eHQtPnN0YXRlW09Q VElPTl9DRVJUX0hBU0hdLnNldCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFE X0FSR1VNRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAiYSBkaXN0cnVzdGVkIGNlcnRpZmlj YXRlL2JpbmFyeSBoYXNoIGZpbGUgaXMgZXhwZWN0ZWQgaW4gQVNDSUkgdGV4dCBmb3JtYXRcbiIK KyAgICAgICAgICAgICAgICAgICAgICAgIkV4YW1wbGU6XG5cdGFwcGVuZF9hZGRfZGJ4X2hhc2gg W29wdGlvbl0gPEZJTEU+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJvcHRpb246XG5bLWJ8 LS1iaW5hcnktaGFzaF0gRklMRSBbQklOQVJZIEhBU0ggRklMRV1cbiIKKyAgICAgICAgICAgICAg ICAgICAgICAgIlstY3wtLWNlcnQtaGFzaF0gRklMRSBbQ0VSVEZJQ0FURSBIQVNIIEZJTEVdXG4i KTsKKworICBpZiAoY3R4dC0+c3RhdGVbT1BUSU9OX0JJTkFSWV9IQVNIXS5hcmcgPT0gTlVMTCAm JiBjdHh0LT5zdGF0ZVtPUFRJT05fQ0VSVF9IQVNIXS5hcmcgPT0gTlVMTCkKKyAgICByZXR1cm4g Z3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZJTEVOQU1FLCAibWlzc2luZyBkaXN0cnVzdGVkIGNl cnRpZmljYXRlL2JpbmFyeSBoYXNoIGZpbGUiKTsKKworICBpZiAoY3R4dC0+c3RhdGVbT1BUSU9O X0JJTkFSWV9IQVNIXS5hcmcgIT0gTlVMTCkKKyAgICBmaWxlX3BhdGggPSBjdHh0LT5zdGF0ZVtP UFRJT05fQklOQVJZX0hBU0hdLmFyZzsKKyAgZWxzZQorICAgIGZpbGVfcGF0aCA9IGN0eHQtPnN0 YXRlW09QVElPTl9DRVJUX0hBU0hdLmFyZzsKKworICByYyA9IHJlYWRfaGFzaF9mcm9tX2ZpbGUg KGZpbGVfcGF0aCwgJmhhc2hfZGF0YSwgJmhhc2hfZGF0YV9zaXplKTsKKyAgaWYgKHJjID09IEdS VUJfRVJSX05PTkUpCisgICAgeworICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLAor ICAgICAgICAgICAgICAgICAgICAiYWRkaW5nIGEgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZS9iaW5h cnkgaGFzaCAlMDJ4JTAyeCUwMnglMDJ4Li4uXG4iCisgICAgICAgICAgICAgICAgICAgICIgd2l0 aCBzaXplIG9mICUiIFBSSXVHUlVCX1NJWkUgIlxuIiwgaGFzaF9kYXRhWzBdLCBoYXNoX2RhdGFb MV0sCisgICAgICAgICAgICAgICAgICAgIGhhc2hfZGF0YVsyXSwgaGFzaF9kYXRhWzNdLCBoYXNo X2RhdGFfc2l6ZSk7CisKKyAgICAgIGlmIChjdHh0LT5zdGF0ZVtPUFRJT05fQklOQVJZX0hBU0hd LnNldCB8fCBjdHh0LT5zdGF0ZVtPUFRJT05fQ0VSVF9IQVNIXS5zZXQpCisgICAgICAgIHsKKyAg ICAgICAgICAvKiBPbmx5IGFjY2VwdCBTSEEyNTYsIFNIQTM4NCBhbmQgU0hBNTEyIGNlcnRpZmlj YXRlL2JpbmFyeSBoYXNoICovCisgICAgICAgICAgaWYgKGhhc2hfZGF0YV9zaXplICE9IDMyICYm IGhhc2hfZGF0YV9zaXplICE9IDQ4ICYmIGhhc2hfZGF0YV9zaXplICE9IDY0KQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICByYyA9IGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9TSUdOQVRV UkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuYWNjZXB0YWJsZSBkaXN0cnVz dGVkIGNlcnRpZmljYXRlL2JpbmFyeSBoYXNoIHR5cGUiKTsKKyAgICAgICAgICAgICAgZ290byBj bGVhbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICBpZiAoaXNfaGFzaF9wcmVz ZW50X2luX2RieCAoaGFzaF9kYXRhLCBoYXNoX2RhdGFfc2l6ZSkgPT0gdHJ1ZSkKKyAgICAgICAg eworICAgICAgICAgIHJjID0gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfU1RJTExfUkVGRVJFTkNFRCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgYWRkIGRpc3RydXN0ZWQgY2Vy dGlmaWNhdGUvYmluYXJ5IGhhc2gsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcyBp dCBpcyBwcmVzZW50IGluIHRoZSBkYnggbGlzdCIpOworICAgICAgICAgIGdvdG8gY2xlYW47Cisg ICAgICAgIH0KKworICAgICAgICAvKiByZW1vdmUgZGlzdHJ1c3RlZCBoYXNoIGZyb20gdGhlIGRi IGxpc3QgaWYgcHJlc2VudC4gKi8KKyAgICAgICAgcmVtb3ZlX2hhc2hfZnJvbV9kYiAoaGFzaF9k YXRhLCBoYXNoX2RhdGFfc2l6ZSk7CisKKyAgICAgIHJjID0gYWRkX2hhc2ggKChjb25zdCBncnVi X3VpbnQ4X3QgKiopICZoYXNoX2RhdGEsIGhhc2hfZGF0YV9zaXplLCAmZGJ4LnNpZ25hdHVyZXMs CisgICAgICAgICAgICAgICAgICAgICAmZGJ4LnNpZ25hdHVyZV9zaXplLCAmZGJ4LnNpZ25hdHVy ZV9lbnRyaWVzKTsKKyAgICAgIGlmIChyYyAhPSBHUlVCX0VSUl9OT05FKQorICAgICAgICB7Cisg ICAgICAgICAgZnJlZV9kYl9saXN0ICgpOworICAgICAgICAgIGZyZWVfZGJ4X2xpc3QgKCk7Cisg ICAgICAgICAgcmMgPSBncnViX2Vycm9yIChyYywgImFkZGluZyBvZiBkaXN0cnVzdGVkIGJpbmFy eS9jZXJ0aWZpY2F0ZSBoYXNoIGZhaWxlZCIpOworICAgICAgICB9CisgICAgICBlbHNlCisgICAg ICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwKKyAgICAgICAgICAgICAgICAgICAgICAi YWRkZWQgZGlzdHJ1c3RlZCBiaW5hcnkvY2VydGlmaWNhdGUgaGFzaCAlMDJ4JTAyeCUwMnglMDJ4 Li4uXG4gdG8gdGhlIGRieCBsaXN0XG4iLAorICAgICAgICAgICAgICAgICAgICAgIGhhc2hfZGF0 YVswXSwgaGFzaF9kYXRhWzFdLCBoYXNoX2RhdGFbMl0sIGhhc2hfZGF0YVszXSk7CisgICAgfQor CisgY2xlYW46CisgIGdydWJfZnJlZSAoaGFzaF9kYXRhKTsKKworICByZXR1cm4gcmM7Cit9CisK IHN0YXRpYyBncnViX2Vycl90CiBhcHBlbmRlZHNpZ19pbml0IChncnViX2ZpbGVfdCBpbyBfX2F0 dHJpYnV0ZV9fICgodW51c2VkKSksIGVudW0gZ3J1Yl9maWxlX3R5cGUgdHlwZSwKICAgICAgICAg ICAgICAgICAgIHZvaWQgKipjb250ZXh0IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgZW51bSBn cnViX3ZlcmlmeV9mbGFncyAqZmxhZ3MpCkBAIC04MzUsNiArMTE1OSwxMSBAQCBhcHBlbmRlZHNp Z19pbml0IChncnViX2ZpbGVfdCBpbyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGVudW0gZ3J1 Yl9maWxlX3R5cGUgdAogICAgICAgICAgKiB2ZXJpZmllciwgYnV0IHdlIGxhY2sgdGhlIGh1YnJp cyByZXF1aXJlZCB0byB0YWtlIHRoaXMgb24uIEluc3RlYWQsCiAgICAgICAgICAqIHJlcXVpcmUg dGhhdCBpdCBoYXZlIGFuIGFwcGVuZGVkIHNpZ25hdHVyZS4KICAgICAgICAgICovCisgICAgICBj YXNlIEdSVUJfRklMRV9UWVBFX0hBU0hfVFJVU1Q6CisgICAgICAgIC8qCisgICAgICAgICAqIFRo aXMgaXMgYSBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCB0byBhZGQgdG8gZGIvZGJ4LgorICAgICAg ICAgKiBUaGlzIG5lZWRzIHRvIGJlIHZlcmlmaWVkIG9yIGJsb2NrZWQuCisgICAgICAgICAqLwog ICAgICAgY2FzZSBHUlVCX0ZJTEVfVFlQRV9MSU5VWF9LRVJORUw6CiAgICAgICBjYXNlIEdSVUJf RklMRV9UWVBFX0dSVUJfTU9EVUxFOgogICAgICAgICAvKgpAQCAtODg4LDggKzEyMTcsNiBAQCBz dGF0aWMgc3RydWN0IGdydWJfZnMgcHNldWRvX2ZzID0gewogICAuZnNfcmVhZCA9IHBzZXVkb19y ZWFkCiB9OwogCi1zdGF0aWMgZ3J1Yl9jb21tYW5kX3QgY21kX3ZlcmlmeSwgY21kX2xpc3RfZGIs IGNtZF9kYnhfY2VydCwgY21kX2RiX2NlcnQ7Ci0KIC8qIENoZWNrIHRoZSBjZXJ0aWZpY2F0ZSBo YXNoIHByZXNlbmNlIGluIHRoZSBQS1MgZGJ4IGxpc3QuICovCiBzdGF0aWMgYm9vbAogaXNfZGJ4 X2NlcnRfaGFzaCAoY29uc3QgZ3J1Yl91aW50OF90ICpkYXRhLCBjb25zdCBncnViX3NpemVfdCBk YXRhX3NpemUpCkBAIC0xMTQ3LDYgKzE0NzQsMTAgQEAgbG9hZF9zdGF0aWNfa2V5cyAoY29uc3Qg c3RydWN0IGdydWJfbW9kdWxlX2hlYWRlciAqaGVhZGVyLCBjb25zdCBib29sIGlzX3BrcykKICAg cmV0dXJuIHJjOwogfQogCitzdGF0aWMgZ3J1Yl9leHRjbWRfdCBjbWRfZGJ4X2hhc2g7CitzdGF0 aWMgZ3J1Yl9jb21tYW5kX3QgY21kX3ZlcmlmeSwgY21kX2xpc3RfZGIsIGNtZF9kYl9jZXJ0LCBj bWRfZGJfaGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICBjbWRfbGlzdF9kYngsIGNtZF9kYnhf Y2VydDsKKwogR1JVQl9NT0RfSU5JVCAoYXBwZW5kZWRzaWcpCiB7CiAgIGludCByYzsKQEAgLTEy MjEsMTIgKzE1NTIsMjEgQEAgR1JVQl9NT0RfSU5JVCAoYXBwZW5kZWRzaWcpCiAKICAgY21kX2Ri X2NlcnQgPSBncnViX3JlZ2lzdGVyX2NvbW1hbmQgKCJhcHBlbmRfYWRkX2RiX2NlcnQiLCBncnVi X2NtZF9kYl9jZXJ0LCBOXygiWDUwOV9DRVJUSUZJQ0FURSIpLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTl8oIkFkZCB0cnVzdGVkIFg1MDlfQ0VSVElGSUNBVEUgdG8g dGhlIGRiIGxpc3QiKSk7Ci0gIGNtZF9kYnhfY2VydCA9IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAo ImFwcGVuZF9ybV9kYnhfY2VydCIsIGdydWJfY21kX2RieF9jZXJ0LCBOXygiWDUwOV9DRVJUSUZJ Q0FURSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5fKCJSZW1v dmUgZGlzdHJ1c3RlZCBYNTA5X0NFUlRJRklDQVRFIGZyb20gdGhlIGRiIGxpc3QiKSk7CisgIGNt ZF9kYnhfY2VydCA9IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImFwcGVuZF9hZGRfZGJ4X2NlcnQi LCBncnViX2NtZF9kYnhfY2VydCwgTl8oIlg1MDlfQ0VSVElGSUNBVEUiKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOXygiQWRkIGRpc3RydXN0ZWQgWDUwOV9DRVJU SUZJQ0FURSB0byB0aGUgZGJ4IGxpc3QiKSk7CiAgIGNtZF9saXN0X2RiID0gZ3J1Yl9yZWdpc3Rl cl9jb21tYW5kICgiYXBwZW5kX2xpc3RfZGIiLCBncnViX2NtZF9saXN0X2RiLCAwLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIlNob3cgdGhlIGxpc3Qgb2YgdHJ1 c3RlZCBYLjUwOSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgZGIgbGlzdCIpKTsKICAgY21kX3Zlcmlm eSA9IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImFwcGVuZF92ZXJpZnkiLCBncnViX2NtZF92ZXJp Znlfc2lnbmF0dXJlLCBOXygiU0lHTkVEX0ZJTEUiKSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTl8oIlZlcmlmeSBTSUdORURfRklMRSBhZ2FpbnN0IHRoZSB0cnVzdGVk IFguNTA5IGNlcnRpZmljYXRlcyBpbiB0aGUgZGIgbGlzdCIpKTsKKyAgY21kX2xpc3RfZGJ4ID0g Z3J1Yl9yZWdpc3Rlcl9jb21tYW5kICgiYXBwZW5kX2xpc3RfZGJ4IiwgZ3J1Yl9jbWRfbGlzdF9k YngsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIlNob3cg dGhlIGxpc3Qgb2YgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgYW5kIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgY2VydGlmaWNhdGUvYmluYXJ5IGhhc2hlcyBm cm9tIHRoZSBkYnggbGlzdCIpKTsKKyAgY21kX2RiX2hhc2ggPSBncnViX3JlZ2lzdGVyX2NvbW1h bmQgKCJhcHBlbmRfYWRkX2RiX2hhc2giLCBncnViX2NtZF9kYl9oYXNoLCBOXygiQklOQVJZIEhB U0ggRklMRSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIkFk ZCB0cnVzdGVkIEJJTkFSWSBIQVNIIHRvIHRoZSBkYiBsaXN0LiIpKTsKKyAgY21kX2RieF9oYXNo ID0gZ3J1Yl9yZWdpc3Rlcl9leHRjbWQgKCJhcHBlbmRfYWRkX2RieF9oYXNoIiwgZ3J1Yl9jbWRf ZGJ4X2hhc2gsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOXygi Wy1ifC0tYmluYXJ5LWhhc2hdIEZJTEUgW0JJTkFSWSBIQVNIIEZJTEVdXG4iCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWy1jfC0tY2VydC1oYXNoXSBGSUxFIFtD RVJURklDQVRFIEhBU0ggRklMRV0iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE5fKCJBZGQgZGlzdHJ1c3RlZCBDRVJURklDQVRFL0JJTkFSWSBIQVNIIHRvIHRoZSBk YnggbGlzdC4iKSwgb3B0aW9ucyk7CiAKICAgZ3J1Yl92ZXJpZmllcl9yZWdpc3RlciAoJmdydWJf YXBwZW5kZWRzaWdfdmVyaWZpZXIpOwogICBncnViX2RsX3NldF9wZXJzaXN0ZW50IChtb2QpOwpA QCAtMTI0Myw0ICsxNTgzLDcgQEAgR1JVQl9NT0RfRklOSSAoYXBwZW5kZWRzaWcpCiAgIGdydWJf dW5yZWdpc3Rlcl9jb21tYW5kIChjbWRfbGlzdF9kYik7CiAgIGdydWJfdW5yZWdpc3Rlcl9jb21t YW5kIChjbWRfZGJfY2VydCk7CiAgIGdydWJfdW5yZWdpc3Rlcl9jb21tYW5kIChjbWRfZGJ4X2Nl cnQpOworICBncnViX3VucmVnaXN0ZXJfY29tbWFuZCAoY21kX2xpc3RfZGJ4KTsKKyAgZ3J1Yl91 bnJlZ2lzdGVyX2NvbW1hbmQgKGNtZF9kYl9oYXNoKTsKKyAgZ3J1Yl91bnJlZ2lzdGVyX2V4dGNt ZCAoY21kX2RieF9oYXNoKTsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9maWxlLmggYi9p bmNsdWRlL2dydWIvZmlsZS5oCmluZGV4IGQ2NzhkZTA2My4uMTZhNGI3ZDI2IDEwMDY0NAotLS0g YS9pbmNsdWRlL2dydWIvZmlsZS5oCisrKyBiL2luY2x1ZGUvZ3J1Yi9maWxlLmgKQEAgLTExNSw2 ICsxMTUsOCBAQCBlbnVtIGdydWJfZmlsZV90eXBlCiAgICAgR1JVQl9GSUxFX1RZUEVfSEFTSExJ U1QsCiAgICAgLyogRmlsZSBoYXNoZWQgYnkgaGFzaHN1bS4gICovCiAgICAgR1JVQl9GSUxFX1RZ UEVfVE9fSEFTSCwKKyAgICAvKiBGaWxlIGhvbGRpbmcgY2VydGlmaWNpYXRlL2JpbmFyeSBoYXNo IHRvIGFkZCB0byBkYi9kYnguICovCisgICAgR1JVQl9GSUxFX1RZUEVfSEFTSF9UUlVTVCwKICAg ICAvKiBLZXlib2FyZCBsYXlvdXQuICAqLwogICAgIEdSVUJfRklMRV9UWVBFX0tFWUJPQVJEX0xB WU9VVCwKICAgICAvKiBQaWN0dXJlIGZpbGUuICAqLwotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0 KQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkdydWIt ZGV2ZWwgbWFpbGluZyBsaXN0CkdydWItZGV2ZWxAZ251Lm9yZwpodHRwczovL2xpc3RzLmdudS5v cmcvbWFpbG1hbi9saXN0aW5mby9ncnViLWRldmVsCg==