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 79BBFCA0EFA for ; Mon, 25 Aug 2025 11:17:48 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uqVC2-0000Kq-TQ; Mon, 25 Aug 2025 07:16:57 -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 1uqVB3-0007dg-9S for grub-devel@gnu.org; Mon, 25 Aug 2025 07:16:05 -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 1uqVAz-0003hT-9k for grub-devel@gnu.org; Mon, 25 Aug 2025 07:15:52 -0400 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57OJvRLl006095; Mon, 25 Aug 2025 11:15:44 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=0ajHVhE34d/s0QGxc WeJs1mzRl+2fM3iVMGXQ40xIgk=; b=Nu8+m9b3h7Izvs81fK1uhK74yTTOk6zPE tPzSAvtR6rnFvLep7bT7jIg/xMHJ0L/R8NXKfkO5F7BKzZevQJ2p40h/1jCLnCd0 k01IMjA06s23bXfLNiiBnsHnbflDYh592ts9PN0CVH40dcVzZK0QIuoPbYSTI6e7 HC9J3fsm6JDPlhPxzH3XlbLwjw6SqPn686Fbb2wGBCFIdY3Fmk+BzzIwraogniXK DnIbdfZZjBDouXFkzyo10c3iSSuCE8ZF1nopW1rAt+h9o1ndq/0oZrHGpD2mvKEO W/XxN4a0yREi1MXVERF3j9IcYuR5dpv9pTstFx1HV4+EToeL79GhQ== 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 48q974yve7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 25 Aug 2025 11:15:44 +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 57P9WKS2020803; Mon, 25 Aug 2025 11:15:43 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 48qrc0dky6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 25 Aug 2025 11:15:42 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 57PBFcwa44106186 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 25 Aug 2025 11:15:39 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E02522004F; Mon, 25 Aug 2025 11:15:38 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0164320040; Mon, 25 Aug 2025 11:15:36 +0000 (GMT) Received: from localhost.localdomain (unknown [9.39.23.29]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 25 Aug 2025 11:15:35 +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 Subject: [PATCH v9 17/21] appended signatures: Introduce GRUB commands to access db and dbx Date: Mon, 25 Aug 2025 16:38:39 +0530 Message-Id: <20250825110843.82675-18-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250825110843.82675-1-sudhakar@linux.ibm.com> References: <20250825110843.82675-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: 2NgZXkJEal6VmwsNBraIMK50dZoI_hzC X-Proofpoint-ORIG-GUID: 2NgZXkJEal6VmwsNBraIMK50dZoI_hzC X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODIzMDA3MSBTYWx0ZWRfX6GfMi4zWVXxR V4nz59J/UHaJwYXcTtUAy+Ur8/3NM4+j1mlg7ntm6zHiCNDSlnSka5Y6VayMfVTPTLvyysOx7Fe i7HNeJN07L5dcpXC2F0Ct5fZj/e8huetZOkl8tcuaDCWyUQyt3e3gi++vXEtS8cRLUz6fUQMZwG aWafwFsyOr2RhCte8fIu0Ks4MjgZWXAo6o9XOkpfMHKO6Bp+uIiM3FByaiD2C7m7J5+ManK4cNv u9Kc4UP4KjzdLO2Q3I00nSZQCgBYFomiLy1LnuTVBIOvqoPv53hozqVc3SM4W7aAS0t69BqCgOU ltTFE4B09Mts9wQ2aLeG+CtzD9dptY8MBlQ29FN+as4m3btHzjbaa9pjteHP35amyj+mw5yJa+V oA05VUeK X-Authority-Analysis: v=2.4 cv=RtDFLDmK c=1 sm=1 tr=0 ts=68ac45e0 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=2OwXVqhp2XgA:10 a=VnNF1IyMAAAA:8 a=MVqkXQm-Ugn3RqlySXAA:9 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-08-25_05,2025-08-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 malwarescore=0 spamscore=0 priorityscore=1501 bulkscore=0 clxscore=1015 phishscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508230071 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 aWZpY2F0aW9uIChjaGVja19hcHBlbmRlZF9zaWduYXR1cmUpIGlzIHNldCB0byBlbmZvcmNlLAox LiBXaGVuIGFwcGVuZF9hZGRfZGJfY2VydCBvciBhcHBlbmRfYWRkX2RieF9jZXJ0IGV4ZWN1dGVz LAogICB0aGVuIHRoZSBjZXJ0aWZpY2F0ZSBmaWxlIG11c3QgYmUgc2lnbmVkIHdpdGggYW4gYXBw ZW5kZWQgc2lnbmF0dXJlLgoyLiBXaGVuIGFwcGVuZF9hZGRfZGJfaGFzaCBleGVjdXRlcywgdGhl biB0aGUgYmluYXJ5IGhhc2ggZmlsZQogICBtdXN0IGJlIHNpZ25lZCB3aXRoIGFuIGFwcGVuZGVk IHNpZ25hdHVyZS4KMy4gV2hlbiBhcHBlbmRfYWRkX2RieF9oYXNoIGV4ZWN1dGVzLCB0aGVuIHRo ZSBjZXJ0aWZpY2F0ZS9iaW5hcnkKICAgaGFzaCBmaWxlIG11c3QgYmUgc2lnbmVkIHdpdGggYW4g YXBwZW5kZWQgc2lnbmF0dXJlLgoKU2lnbmVkLW9mZi1ieTogU3VkaGFrYXIgS3VwcHVzYW15IDxz dWRoYWthckBsaW51eC5pYm0uY29tPgpSZXZpZXdlZC1ieTogQXZuaXNoIENob3VoYW4gPGF2bmlz aEBsaW51eC5pYm0uY29tPgotLS0KIGdydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBl bmRlZHNpZy5jIHwgMzE5ICsrKysrKysrKysrKysrKysrKy0KIGluY2x1ZGUvZ3J1Yi9maWxlLmgg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIDIgZmlsZXMgY2hhbmdlZCwgMzEyIGlu c2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2NvbW1h bmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMgYi9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5k ZWRzaWcvYXBwZW5kZWRzaWcuYwppbmRleCA1ZGE2MDNlYjYuLmVhMTkzN2E3ZSAxMDA2NDQKLS0t IGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMKKysrIGIvZ3J1 Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMKQEAgLTQ5LDYgKzQ5LDkg QEAgR1JVQl9NT0RfTElDRU5TRSAoIkdQTHYzKyIpOwogI2RlZmluZSBTSUdfTUFHSUMgICAgICAg ICAgIn5Nb2R1bGUgc2lnbmF0dXJlIGFwcGVuZGVkflxuIgogI2RlZmluZSBTSUdfTUFHSUNfU0la RSAgICAgKChzaXplb2YoU0lHX01BR0lDKSAtIDEpKQogCisjZGVmaW5lIE9QVElPTl9CSU5BUllf SEFTSCAwCisjZGVmaW5lIE9QVElPTl9DRVJUX0hBU0ggICAxCisKIC8qCiAgKiBUaGlzIHN0cnVj dHVyZSBpcyBleHRyYWN0ZWQgZnJvbSBzY3JpcHRzL3NpZ24tZmlsZS5jIGluIHRoZSBsaW51eCBr ZXJuZWwKICAqIHNvdXJjZS4gSXQgd2FzIGxpY2Vuc2VkIGFzIExHUEx2Mi4xKywgd2hpY2ggaXMg R1BMdjMrIGNvbXBhdGlibGUuCkBAIC0xMTAsNiArMTEzLDEzIEBAIHN0YXRpYyBib29sIGNoZWNr X3NpZ3MgPSBmYWxzZTsKIC8qIEFwcGVuZGVkIHNpZ25hdHVyZSBzaXplLiAqLwogc3RhdGljIGdy dWJfc2l6ZV90IGFwcGVuZF9zaWdfbGVuID0gMDsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBncnVi X2FyZ19vcHRpb24gb3B0aW9uc1tdID0KK3sKKyAgeyJiaW5hcnktaGFzaCIsICdiJywgMCwgTl8o Imhhc2ggZmlsZSBvZiB0aGUgYmluYXJ5LiIpLCAwLCBBUkdfVFlQRV9QQVRITkFNRX0sCisgIHsi Y2VydC1oYXNoIiwgJ2MnLCAxLCBOXygiaGFzaCBmaWxlIG9mIHRoZSBjZXJ0aWZpY2F0ZS4iKSwg MCwgQVJHX1RZUEVfUEFUSE5BTUV9LAorICB7MCwgMCwgMCwgMCwgMCwgMH0KK307CisKIHN0YXRp YyB2b2lkCiByZWdpc3Rlcl9hcHBlbmRlZF9zaWduYXR1cmVzX2NtZCAodm9pZCk7CiBzdGF0aWMg dm9pZApAQCAtNTkzLDYgKzYwMyw1MyBAQCByZW1vdmVfY2VydF9mcm9tX2RiIChjb25zdCBncnVi X3VpbnQ4X3QgKmRhdGEsIGNvbnN0IGdydWJfc2l6ZV90IGRhdGFfc2l6ZSkKICAgcmV0dXJuIHJj OwogfQogCitzdGF0aWMgYm9vbAoraXNfY2VydF9maW5nZXJwcmludF9tYXRjaCAoY29uc3QgZ3J1 Yl91aW50OF90ICpoYXNoX2RhdGEsIGNvbnN0IGdydWJfc2l6ZV90IGhhc2hfZGF0YV9zaXplLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUg KmNlcnQpCit7CisgIGlmIChncnViX21lbWNtcCAoY2VydC0+ZmluZ2VycHJpbnRbMF0sIGhhc2hf ZGF0YSwgaGFzaF9kYXRhX3NpemUpID09IDAKKyAgICAgIHx8IGdydWJfbWVtY21wIChjZXJ0LT5m aW5nZXJwcmludFsxXSwgaGFzaF9kYXRhLCBoYXNoX2RhdGFfc2l6ZSkgPT0gMAorICAgICAgfHwg Z3J1Yl9tZW1jbXAgKGNlcnQtPmZpbmdlcnByaW50WzJdLCBoYXNoX2RhdGEsIGhhc2hfZGF0YV9z aXplKSA9PSAwKQorICAgIHJldHVybiB0cnVlOworCisgIHJldHVybiBmYWxzZTsKK30KKworc3Rh dGljIHZvaWQKK3JlbW92ZV9oYXNoX2Zyb21fZGIgKGNvbnN0IGdydWJfdWludDhfdCAqaGFzaF9k YXRhLCBjb25zdCBncnViX3NpemVfdCBoYXNoX2RhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGJvb2wgaXNfYmluYXJ5X2hhc2gpCit7CisgIGdydWJfdWludDMyX3QgaTsKKyAg c3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKmNlcnQ7CisKKyAgaWYgKGlzX2JpbmFyeV9oYXNoID09 IHRydWUpCisgICAgeworICAgICAgZm9yIChpID0gMDsgaSA8IGRiLmhhc2hfZW50cmllczsgaSsr KQorICAgICAgICB7CisgICAgICAgICAgaWYgKGdydWJfbWVtY21wIChkYi5oYXNoZXNbaV0sIGhh c2hfZGF0YSwgaGFzaF9kYXRhX3NpemUpID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInJlbW92ZWQgZGlzdHJ1c3RlZCBoYXNo ICUwMnglMDJ4JTAyeCUwMnguLiBmcm9tIHRoZSBkYiBsaXN0XG4iLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRiLmhhc2hlc1tpXVswXSwgZGIuaGFzaGVzW2ldWzFdLCBkYi5oYXNoZXNb aV1bMl0sIGRiLmhhc2hlc1tpXVszXSk7CisgICAgICAgICAgICAgIGdydWJfZnJlZSAoZGIuaGFz aGVzW2ldKTsKKyAgICAgICAgICAgICAgZGIuaGFzaGVzW2ldID0gTlVMTDsKKyAgICAgICAgICAg ICAgZGIuaGFzaF9zaXplW2ldID0gMDsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg ICB9CisgICAgICAgIH0KKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBmb3IgKGNlcnQgPSBk Yi5jZXJ0czsgY2VydCAhPSBOVUxMOyBjZXJ0ID0gY2VydC0+bmV4dCkKKyAgICAgICAgeworICAg ICAgICAgIGlmIChpc19jZXJ0X2ZpbmdlcnByaW50X21hdGNoIChoYXNoX2RhdGEsIGhhc2hfZGF0 YV9zaXplLCBjZXJ0KSA9PSB0cnVlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBfcmVt b3ZlX2NlcnRfZnJvbV9kYiAoY2VydCk7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg ICAgfQorICAgICAgICB9CisgICAgfQorfQorCiBzdGF0aWMgZ3J1Yl9lcnJfdAogZmlsZV9yZWFk X3dob2xlIChncnViX2ZpbGVfdCBmaWxlLCBncnViX3VpbnQ4X3QgKipidWYsIGdydWJfc2l6ZV90 ICpsZW4pCiB7CkBAIC05MTMsNiArOTcwLDggQEAgZ3J1Yl9jbWRfdmVyaWZ5X3NpZ25hdHVyZSAo Z3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IGFyZ2MKIAog LyoKICAqIEFkZCB0aGUgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSB0byB0aGUgZGIgbGlzdCBpZiBpdCBp cyBub3QgYWxyZWFkeSBwcmVzZW50LgorICogQ2hlY2tzIHRoZSB0cnVzdGVkIGNlcnRpZmljYXRl IGFnYWluc3QgZGJ4IGxpc3QgaWYgZHluYW1pYyBrZXkgbWFuYWdlbWVudCBpcyBlbmFibGVkLgor ICogQW5kIGFkZCBpdCB0byB0aGUgZGIgbGlzdCBpZiBpdCBpcyBub3QgYWxyZWFkeSBwcmVzZW50 LgogICogTm90ZTotIFdoZW4gc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBpcyBlbmFibGVkLCB0aGlz IGNvbW1hbmQgb25seSBhY2NlcHRzIHRoZQogICogdHJ1c3RlZCBjZXJ0aWZpY2F0ZSB0aGF0IGlz IHNpZ25lZCB3aXRoIGFuIGFwcGVuZGVkIHNpZ25hdHVyZS4KICAqIFRoZSBzaWduYXR1cmUgaXMg dmVyaWZpZWQgYnkgdGhlIGFwcGVuZGVkc2lnIG1vZHVsZS4gSWYgdmVyaWZpY2F0aW9uIHN1Y2Nl ZWRzLApAQCAtOTcwLDYgKzEwMjksOCBAQCBncnViX2NtZF9kYl9jZXJ0IChncnViX2NvbW1hbmRf dCBjbWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLCBpbnQgYXJnYywgY2hhciAqKgogCiAvKgog ICogUmVtb3ZlIHRoZSBkaXN0cnVzdGVkIGNlcnRpZmljYXRlIGZyb20gdGhlIGRiIGxpc3QgaWYg aXQgaXMgYWxyZWFkeSBwcmVzZW50LgorICogQW5kIGFkZCBpdCB0byB0aGUgZGJ4IGxpc3QgaWYg bm90IHByZXNlbnQgd2hlbiBkeW5hbWljIGtleSBtYW5hZ2VtZW50IGlzCisgKiBlbmFibGVkLgog ICogTm90ZTotIFdoZW4gc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBpcyBlbmFibGVkLCB0aGlzIGNv bW1hbmQgb25seSBhY2NlcHRzIHRoZQogICogZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZSB0aGF0IGlz IHNpZ25lZCB3aXRoIGFuIGFwcGVuZGVkIHNpZ25hdHVyZS4KICAqIFRoZSBzaWduYXR1cmUgaXMg dmVyaWZpZWQgYnkgdGhlIGFwcGVuZGVkIHNpZyBtb2R1bGUuIElmIHZlcmlmaWNhdGlvbiBzdWNj ZWVkcywKQEAgLTk3OSw3ICsxMDQwLDkgQEAgZ3J1Yl9jbWRfZGJfY2VydCAoZ3J1Yl9jb21tYW5k X3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IGFyZ2MsIGNoYXIgKioKICAqIHdp dGhvdXQgYW4gYXBwZW5kZWQgc2lnbmF0dXJlIGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIGRiIGxp c3QuCiAgKgogICogQWxzbywgbm90ZSB0aGF0IHRoZSByZW1vdmFsIG9mIHRoZSBkaXN0cnVzdGVk IGNlcnRpZmljYXRlIHVzaW5nIHRoaXMgY29tbWFuZAotICogZG9lcyBub3QgcGVyc2lzdCBhY3Jv c3MgcmVib290cy4KKyAqIGRvZXMgbm90IHBlcnNpc3QgYWNyb3NzIHJlYm9vdHMuIElmIHN0YXRp YyBrZXkgbWFuYWdlbWVudCBpcyBlbmFibGVkLCB0aGUKKyAqIGFwcGVuZF9ybV9kYnhfY2VydCBj b21tYW5kIGlzIG9ubHkgYXZhaWxhYmxlIGluIHRoZSBHUlVCIGNvbnNvbGUuIEVsc2UgdGhlCisg KiBhcHBlbmRfYWRkX2RieF9jZXJ0IGNvbW1hbmQgaXMgYXZhaWxhYmxlIGluIHRoZSBHUlVCIGNv bnNvbGUuCiAgKi8KIHN0YXRpYyBncnViX2Vycl90CiBncnViX2NtZF9kYnhfY2VydCAoZ3J1Yl9j b21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IGFyZ2MsIGNoYXIgKiph cmdzKQpAQCAtOTkxLDggKzEwNTQsMTAgQEAgZ3J1Yl9jbWRfZGJ4X2NlcnQgKGdydWJfY29tbWFu ZF90IGNtZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGludCBhcmdjLCBjaGFyICoKIAogICBp ZiAoYXJnYyAhPSAxKQogICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfQVJHVU1F TlQsCi0gICAgICAgICAgICAgICAgICAgICAgICJhIGRpc3RydXN0ZWQgWC41MDkgY2VydGlmaWNh dGUgZmlsZSBpcyBleHBlY3RlZCBpbiBERVIgZm9ybWF0XG4iCi0gICAgICAgICAgICAgICAgICAg ICAgICJFeGFtcGxlOlxuXHRhcHBlbmRfcm1fZGJ4X2NlcnQgPFg1MDlfQ0VSVElGSUNBVEU+XG4i KTsKKyAgICAgICAgICAgICAgICAgICAgICAgImEgZGlzdHJ1c3RlZCBYLjUwOSBjZXJ0aWZpY2F0 ZSBmaWxlIGlzIGV4cGVjdGVkIGluIERFUiBmb3JtYXRcbiVzIiwKKyAgICAgICAgICAgICAgICAg ICAgICAgKChncnViX3Brc19rZXlzdG9yZS51c2Vfa2V5c3RvcmUgPT0gdHJ1ZSkgPworICAgICAg ICAgICAgICAgICAgICAgICAiRXhhbXBsZTpcblx0YXBwZW5kX2FkZF9kYnhfY2VydCA8WDUwOV9D RVJUSUZJQ0FURT5cbiIgOgorICAgICAgICAgICAgICAgICAgICAgICAiRXhhbXBsZTpcblx0YXBw ZW5kX3JtX2RieF9jZXJ0IDxYNTA5X0NFUlRJRklDQVRFPlxuIikpOwogCiAgIGlmICghZ3J1Yl9z dHJsZW4gKGFyZ3NbMF0pKQogICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfRklM RU5BTUUsICJtaXNzaW5nIGRpc3RydXN0ZWQgWC41MDkgY2VydGlmaWNhdGUgZmlsZSIpOwpAQCAt MTAxOSw5ICsxMDg0LDIxIEBAIGdydWJfY21kX2RieF9jZXJ0IChncnViX2NvbW1hbmRfdCBjbWQg X19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLCBpbnQgYXJnYywgY2hhciAqCiAKICAgLyogUmVtb3Zl IGRpc3RydXN0ZWQgY2VydGlmaWNhdGUgZnJvbSB0aGUgZGIgbGlzdCBpZiBwcmVzZW50LiAqLwog ICBlcnIgPSByZW1vdmVfY2VydF9mcm9tX2RiIChjZXJ0X2RhdGEsIGNlcnRfZGF0YV9zaXplKTsK LSAgZ3J1Yl9mcmVlIChjZXJ0X2RhdGEpOwogICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCi0g ICAgcmV0dXJuIGVycjsKKyAgICB7CisgICAgICBncnViX2ZyZWUgKGNlcnRfZGF0YSk7CisgICAg ICByZXR1cm4gZXJyOworICAgIH0KKworICAvKiBPbmx5IGFkZCB0aGUgY2VydGlmaWNhdGUgdG8g dGhlIGRieCBsaXN0IGlmIGR5bmFtaWMga2V5IG1hbmFnZW1lbnQgaXMgZW5hYmxlZC4gKi8KKyAg aWYgKGdydWJfcGtzX2tleXN0b3JlLnVzZV9rZXlzdG9yZSA9PSB0cnVlKQorICAgIHsKKyAgICAg IGVyciA9IGFkZF9jZXJ0aWZpY2F0ZSAoY2VydF9kYXRhLCBjZXJ0X2RhdGFfc2l6ZSwgJmRieCwg ZmFsc2UpOworICAgICAgaWYgKGVyciAhPSBHUlVCX0VSUl9OT05FKQorICAgICAgICByZXR1cm4g ZXJyOworICAgIH0KKworICBncnViX2ZyZWUgKGNlcnRfZGF0YSk7CiAKICAgcmV0dXJuIEdSVUJf RVJSX05PTkU7CiB9CkBAIC0xMDM2LDkgKzExMTMsMTk2IEBAIGdydWJfY21kX2xpc3RfZGIgKGdy dWJfY29tbWFuZF90IGNtZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGludCBhcmdjIF9fYXR0 cmliCiAgIGZvciAoY2VydCA9IGRiLmNlcnRzOyBjZXJ0ICE9IE5VTEw7IGNlcnQgPSBjZXJ0LT5u ZXh0LCBjZXJ0X251bSsrKQogICAgIHByaW50X2NlcnRpZmljYXRlIChjZXJ0LCBjZXJ0X251bSk7 CiAKKyAgLyogT25seSBsaXN0IHRoZSBiaW5hcnkgaGFzaCBpZiBkeW5hbWljIGtleSBtYW5hZ2Vt ZW50IGlzIGVuYWJsZWQuICovCisgIGlmIChncnViX3Brc19rZXlzdG9yZS51c2Vfa2V5c3RvcmUg PT0gdHJ1ZSkKKyAgICB7CisgICAgICBmb3IgKGkgPSAwOyBpIDwgZGIuaGFzaF9lbnRyaWVzOyBp KyspCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoZGIuaGFzaGVzW2ldICE9IE5VTEwpCisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgIGdydWJfcHJpbnRmICgiXG5CaW5hcnkgaGFzaDogJXVc biIsIGkgKyAxKTsKKyAgICAgICAgICAgICAgZ3J1Yl9wcmludGYgKCIgICAgSGFzaDogc2hhJSIg UFJJdUdSVUJfU0laRSAiXG4gICAgICAgICAiLCBkYi5oYXNoX3NpemVbaV0gKiA4KTsKKyAgICAg ICAgICAgICAgZHVtcF9kYXRhX3RvX2hleCAoZGIuaGFzaGVzW2ldLCBkYi5oYXNoX3NpemVbaV0p OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgIHJldHVybiBHUlVCX0VSUl9O T05FOwogfQogCitzdGF0aWMgZ3J1Yl9lcnJfdAorZ3J1Yl9jbWRfbGlzdF9kYnggKGdydWJfY29t bWFuZF90IGNtZCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKKyAgICAgICAgICAgICAgICAgICBp bnQgYXJnYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwgY2hhciAqKmFyZ3MgX19hdHRyaWJ1dGVf XygodW51c2VkKSkpCit7CisgIHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpjZXJ0OworICBncnVi X3VpbnQzMl90IGksIGNlcnRfbnVtID0gMTsKKworICBmb3IgKGNlcnQgPSBkYnguY2VydHM7IGNl cnQgIT0gTlVMTDsgY2VydCA9IGNlcnQtPm5leHQsIGNlcnRfbnVtKyspCisgICAgcHJpbnRfY2Vy dGlmaWNhdGUgKGNlcnQsIGNlcnRfbnVtKTsKKworICBmb3IgKGkgPSAwOyBpIDwgZGJ4Lmhhc2hf ZW50cmllczsgaSsrKQorICAgIHsKKyAgICAgIGlmIChkYnguaGFzaGVzW2ldICE9IE5VTEwpCisg ICAgICAgIHsKKyAgICAgICAgICBncnViX3ByaW50ZiAoIlxuQ2VydGlmaWNhdGUvQmluYXJ5IGhh c2g6ICV1XG4iLCBpICsgMSk7CisgICAgICAgICAgZ3J1Yl9wcmludGYgKCIgICAgSGFzaDogc2hh JSIgUFJJdUdSVUJfU0laRSAiXG4gICAgICAgICAiLCBkYnguaGFzaF9zaXplW2ldICogOCk7Cisg ICAgICAgICAgZHVtcF9kYXRhX3RvX2hleCAoZGJ4Lmhhc2hlc1tpXSwgZGJ4Lmhhc2hfc2l6ZVtp XSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7Cit9CisKKy8q CisgKiBSZW1vdmUgdGhlIHRydXN0ZWQgYmluYXJ5IGhhc2ggZnJvbSB0aGUgZGJ4IGxpc3QgaWYg cHJlc2VudC4KKyAqIEFuZCBhZGQgdGhlbSB0byB0aGUgZGIgbGlzdCBpZiBpdCBpcyBub3QgYWxy ZWFkeSBwcmVzZW50LgorICogTm90ZTotIFdoZW4gc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBpcyBl bmFibGVkLCB0aGlzIGNvbW1hbmQgb25seSBhY2NlcHRzCisgKiB0aGUgYmluYXJ5IGhhc2ggZmls ZSB0aGF0IGlzIHNpZ25lZCB3aXRoIGFuIGFwcGVuZGVkIHNpZ25hdHVyZS4KKyAqIFRoZSBzaWdu YXR1cmUgaXMgdmVyaWZpZWQgYnkgdGhlIGFwcGVuZGVkc2lnIG1vZHVsZS4gSWYgdmVyaWZpY2F0 aW9uIHN1Y2NlZWRzLAorICogdGhlIGJpbmFyeSBoYXNoIGlzIGFkZGVkIHRvIHRoZSBkYiBsaXN0 LiBPdGhlcndpc2UsIGFuIGVycm9yIGlzIHBvc3RlZCBhbmQKKyAqIHRoZSBiaW5hcnkgaGFzaCBp cyBub3QgYWRkZWQuCisgKiBXaGVuIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQs IGl0IGFjY2VwdHMgdGhlIGJpbmFyeSBoYXNoIGZpbGUgd2l0aG91dAorICogYW4gYXBwZW5kZWQg c2lnbmF0dXJlIGFuZCBhZGRzIGl0IHRvIHRoZSBkYiBsaXN0LgorICoKKyAqIEFsc28sIG5vdGUg dGhhdCB0aGUgYWRkaW5nIG9mIHRoZSB0cnVzdGVkIGJpbmFyeSBoYXNoIHVzaW5nIHRoaXMgY29t bWFuZCBkb2VzCisgKiBub3QgcGVyc2lzdCBhY3Jvc3MgcmVib290cy4KKyAqLworc3RhdGljIGdy dWJfZXJyX3QKK2dydWJfY21kX2RiX2hhc2ggKGdydWJfY29tbWFuZF90IGNtZCBfX2F0dHJpYnV0 ZV9fKCh1bnVzZWQpKSwgaW50IGFyZ2MsIGNoYXIqKmFyZ3MpCit7CisgIGdydWJfZXJyX3QgcmM7 CisgIGdydWJfZmlsZV90IGhhc2hfZmlsZTsKKyAgZ3J1Yl91aW50OF90ICpoYXNoX2RhdGEgPSBO VUxMOworICBncnViX3NpemVfdCBoYXNoX2RhdGFfc2l6ZSA9IDA7CisKKyAgaWYgKGFyZ2MgIT0g MSkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0FSR1VNRU5ULAorICAgICAg ICAgICAgICAgICAgICAgICAiYSB0cnVzdGVkIGJpbmFyeSBoYXNoIGZpbGUgaXMgZXhwZWN0ZWQg aW4gQVNDSUkgdGV4dCBmb3JtYXRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4YW1wbGU6 XG5cdGFwcGVuZF9hZGRfZGJfaGFzaCA8QklOQVJZIEhBU0ggRklMRT5cbiIpOworCisgIGlmICgh Z3J1Yl9zdHJsZW4gKGFyZ3NbMF0pKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9C QURfRklMRU5BTUUsICJtaXNzaW5nIHRydXN0ZWQgYmluYXJ5IGhhc2ggZmlsZSIpOworCisgIGhh c2hfZmlsZSA9IGdydWJfZmlsZV9vcGVuIChhcmdzWzBdLCBHUlVCX0ZJTEVfVFlQRV9IQVNIX1RS VVNUIHwgR1JVQl9GSUxFX1RZUEVfTk9fREVDT01QUkVTUyk7CisgIGlmIChoYXNoX2ZpbGUgPT0g TlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfRklMRV9OT1RfRk9VTkQsICJ1 bmFibGUgdG8gb3BlbiAlcyBmaWxlIiwgYXJnc1swXSk7CisKKyAgcmMgPSBmaWxlX3JlYWRfd2hv bGUgKGhhc2hfZmlsZSwgJmhhc2hfZGF0YSwgJmhhc2hfZGF0YV9zaXplKTsKKyAgZ3J1Yl9maWxl X2Nsb3NlIChoYXNoX2ZpbGUpOworICBpZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICByZXR1 cm4gcmM7CisKKyAgLyoKKyAgICogSWYgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBpcyBlbmFibGVk IGFuZCBHUlVCIGlzIGxvY2tlZCBkb3duLAorICAgKiBvYnRhaW4gdGhlIGFjdHVhbCBoYXNoIGRh dGEgc2l6ZSBieSBzdWJ0cmFjdGluZyB0aGUgYXBwZW5kZWQKKyAgICogc2lnbmF0dXJlIHNpemUg ZnJvbSB0aGUgaGFzaCBkYXRhIHNpemUgYmVjYXVzZQorICAgKiB0aGUgaGFzaCBoYXMgYW4gYXBw ZW5kZWQgc2lnbmF0dXJlLCBhbmQgdGhpcyBhY3R1YWwgaGFzaCBkYXRhIHNpemUgaXMKKyAgICog dXNlZCB0byBnZXQgdGhlIGhhc2ggZGF0YS4KKyAgICovCisgIGlmIChjaGVja19zaWdzID09IHRy dWUgJiYgZ3J1Yl9pc19sb2NrZG93biAoKSA9PSBHUlVCX0xPQ0tET1dOX0VOQUJMRUQpCisgICAg aGFzaF9kYXRhX3NpemUgLT0gYXBwZW5kX3NpZ19sZW47CisKKyAgZ3J1Yl9kcHJpbnRmICgiYXBw ZW5kZWRzaWciLAorICAgICAgICAgICAgICAgICJhZGRpbmcgYSB0cnVzdGVkIGJpbmFyeSBoYXNo ICUwMnglMDJ4JTAyeCUwMnguLi5cbiB3aXRoIHNpemUgb2YgJSIgUFJJdUdSVUJfU0laRSAiXG4i LAorICAgICAgICAgICAgICAgIGhhc2hfZGF0YVswXSwgaGFzaF9kYXRhWzFdLCBoYXNoX2RhdGFb Ml0sIGhhc2hfZGF0YVszXSwgaGFzaF9kYXRhX3NpemUpOworCisgIC8qIE9ubHkgYWNjZXB0IFNI QTI1NiwgU0hBMzg0IGFuZCBTSEE1MTIgYmluYXJ5IGhhc2ggKi8KKyAgaWYgKGhhc2hfZGF0YV9z aXplICE9IDMyICYmIGhhc2hfZGF0YV9zaXplICE9IDQ4ICYmIGhhc2hfZGF0YV9zaXplICE9IDY0 KQorICAgIHsKKyAgICAgIGdydWJfZnJlZSAoaGFzaF9kYXRhKTsKKyAgICAgIHJldHVybiBncnVi X2Vycm9yIChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAidW5hY2NlcHRhYmxlIHRydXN0ZWQgYmlu YXJ5IGhhc2ggdHlwZSIpOworICAgIH0KKworICByYyA9IGFkZF9oYXNoIChoYXNoX2RhdGEsIGhh c2hfZGF0YV9zaXplLCAmZGIsIHRydWUpOworICBncnViX2ZyZWUgKGhhc2hfZGF0YSk7CisKKyAg cmV0dXJuIHJjOworfQorCisvKgorICogUmVtb3ZlIHRoZSBkaXN0cnVzdGVkIGJpbmFyeS9jZXJ0 aWZpY2F0ZSBoYXNoIGZyb20gdGhlIGRiIGxpc3QgaWYgcHJlc2VudC4KKyAqIEFuZCBhZGQgdGhl bSB0byB0aGUgZGJ4IGxpc3QgaWYgaXQgaXMgbm90IGFscmVhZHkgcHJlc2VudC4KKyAqIE5vdGU6 LSBXaGVuIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMgZW5hYmxlZCwgdGhpcyBjb21tYW5kIG9u bHkgYWNjZXB0cworICogdGhlIGJpbmFyeS9jZXJ0aWZpY2F0ZSBoYXNoIGZpbGUgdGhhdCBpcyBz aWduZWQgd2l0aCBhbiBhcHBlbmRlZCBzaWduYXR1cmUuCisgKiBUaGUgc2lnbmF0dXJlIGlzIHZl cmlmaWVkIGJ5IHRoZSBhcHBlbmRlZHNpZyBtb2R1bGUuIElmIHZlcmlmaWNhdGlvbiBzdWNjZWVk cywKKyAqIHRoZSBiaW5hcnkvY2VydGlmaWNhdGUgaGFzaCBpcyBhZGRlZCB0byB0aGUgZGJ4IGxp c3QuIE90aGVyd2lzZSwgYW4gZXJyb3IgaXMgcG9zdGVkIGFuZAorICogdGhlIGJpbmFyeS9jZXJ0 aWZpY2F0ZSBoYXNoIGlzIG5vdCBhZGRlZC4KKyAqIFdoZW4gc2lnbmF0dXJlIHZlcmlmaWNhdGlv biBpcyBkaXNhYmxlZCwgaXQgYWNjZXB0cyB0aGUgYmluYXJ5L2NlcnRpZmljYXRlIGhhc2ggZmls ZSB3aXRob3V0CisgKiBhbiBhcHBlbmRlZCBzaWduYXR1cmUgYW5kIGFkZHMgaXQgdG8gdGhlIGRi eCBsaXN0LgorICoKKyAqIEFsc28sIG5vdGUgdGhhdCB0aGUgYWRkaW5nIG9mIHRoZSBkaXN0cnVz dGVkIGJpbmFyeS9jZXJ0aWZpY2F0ZSBoYXNoIHVzaW5nIHRoaXMgY29tbWFuZCBkb2VzCisgKiBu b3QgcGVyc2lzdCBhY3Jvc3MgcmVib290cy4KKyAqLworc3RhdGljIGdydWJfZXJyX3QKK2dydWJf Y21kX2RieF9oYXNoIChncnViX2V4dGNtZF9jb250ZXh0X3QgY3R4dCwgaW50IGFyZ2MgX19hdHRy aWJ1dGVfXyAoKHVudXNlZCkpLAorICAgICAgICAgICAgICAgICAgIGNoYXIgKiphcmdzIF9fYXR0 cmlidXRlX18gKCh1bnVzZWQpKSkKK3sKKyAgZ3J1Yl9lcnJfdCByYzsKKyAgZ3J1Yl9maWxlX3Qg aGFzaF9maWxlOworICBncnViX3VpbnQ4X3QgKmhhc2hfZGF0YSA9IE5VTEw7CisgIGdydWJfc2l6 ZV90IGhhc2hfZGF0YV9zaXplID0gMDsKKyAgY2hhciAqZmlsZV9wYXRoOworCisgIGlmICghY3R4 dC0+c3RhdGVbT1BUSU9OX0JJTkFSWV9IQVNIXS5zZXQgJiYgIWN0eHQtPnN0YXRlW09QVElPTl9D RVJUX0hBU0hdLnNldCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0FSR1VN RU5ULAorICAgICAgICAgICAgICAgICAgICAgICAiYSBkaXN0cnVzdGVkIGNlcnRpZmljYXRlL2Jp bmFyeSBoYXNoIGZpbGUgaXMgZXhwZWN0ZWQgaW4gQVNDSUkgdGV4dCBmb3JtYXRcbiIKKyAgICAg ICAgICAgICAgICAgICAgICAgIkV4YW1wbGU6XG5cdGFwcGVuZF9hZGRfZGJ4X2hhc2ggW29wdGlv bl0gPEZJTEU+XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJvcHRpb246XG5bLWJ8LS1iaW5h cnktaGFzaF0gRklMRSBbQklOQVJZIEhBU0ggRklMRV1cbiIKKyAgICAgICAgICAgICAgICAgICAg ICAgIlstY3wtLWNlcnQtaGFzaF0gRklMRSBbQ0VSVEZJQ0FURSBIQVNIIEZJTEVdXG4iKTsKKwor ICBpZiAoY3R4dC0+c3RhdGVbT1BUSU9OX0JJTkFSWV9IQVNIXS5hcmcgPT0gTlVMTCAmJiBjdHh0 LT5zdGF0ZVtPUFRJT05fQ0VSVF9IQVNIXS5hcmcgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9l cnJvciAoR1JVQl9FUlJfQkFEX0ZJTEVOQU1FLCAibWlzc2luZyBkaXN0cnVzdGVkIGNlcnRpZmlj YXRlL2JpbmFyeSBoYXNoIGZpbGUiKTsKKworICBpZiAoY3R4dC0+c3RhdGVbT1BUSU9OX0JJTkFS WV9IQVNIXS5hcmcgIT0gTlVMTCkKKyAgICBmaWxlX3BhdGggPSBjdHh0LT5zdGF0ZVtPUFRJT05f QklOQVJZX0hBU0hdLmFyZzsKKyAgZWxzZQorICAgIGZpbGVfcGF0aCA9IGN0eHQtPnN0YXRlW09Q VElPTl9DRVJUX0hBU0hdLmFyZzsKKworICBoYXNoX2ZpbGUgPSBncnViX2ZpbGVfb3BlbiAoZmls ZV9wYXRoLCBHUlVCX0ZJTEVfVFlQRV9IQVNIX1RSVVNUIHwgR1JVQl9GSUxFX1RZUEVfTk9fREVD T01QUkVTUyk7CisgIGlmIChoYXNoX2ZpbGUgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJv ciAoR1JVQl9FUlJfRklMRV9OT1RfRk9VTkQsICJ1bmFibGUgdG8gb3BlbiAlcyBmaWxlIiwgZmls ZV9wYXRoKTsKKworICByYyA9IGZpbGVfcmVhZF93aG9sZSAoaGFzaF9maWxlLCAmaGFzaF9kYXRh LCAmaGFzaF9kYXRhX3NpemUpOworICBncnViX2ZpbGVfY2xvc2UgKGhhc2hfZmlsZSk7CisgIGlm IChyYyAhPSBHUlVCX0VSUl9OT05FKQorICAgIHJldHVybiByYzsKKworICAvKgorICAgKiBJZiBz aWduYXR1cmUgdmVyaWZpY2F0aW9uIGlzIGVuYWJsZWQgYW5kIEdSVUIgaXMgbG9ja2VkIGRvd24s CisgICAqIG9idGFpbiB0aGUgYWN0dWFsIGhhc2ggZGF0YSBzaXplIGJ5IHN1YnRyYWN0aW5nIHRo ZSBhcHBlbmRlZAorICAgKiBzaWduYXR1cmUgc2l6ZSBmcm9tIHRoZSBoYXNoIGRhdGEgc2l6ZSBi ZWNhdXNlCisgICAqIHRoZSBoYXNoIGhhcyBhbiBhcHBlbmRlZCBzaWduYXR1cmUsIGFuZCB0aGlz IGFjdHVhbCBoYXNoIGRhdGEgc2l6ZSBpcworICAgKiB1c2VkIHRvIGdldCB0aGUgaGFzaCBkYXRh LgorICAgKi8KKyAgaWYgKGNoZWNrX3NpZ3MgPT0gdHJ1ZSAmJiBncnViX2lzX2xvY2tkb3duICgp ID09IEdSVUJfTE9DS0RPV05fRU5BQkxFRCkKKyAgICBoYXNoX2RhdGFfc2l6ZSAtPSBhcHBlbmRf c2lnX2xlbjsKKworICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsCisgICAgICAgICAgICAg ICAgImFkZGluZyBhIGRpc3RydXN0ZWQgY2VydGlmaWNhdGUvYmluYXJ5IGhhc2ggJTAyeCUwMngl MDJ4JTAyeC4uLlxuIgorICAgICAgICAgICAgICAgICIgd2l0aCBzaXplIG9mICUiIFBSSXVHUlVC X1NJWkUgIlxuIiwgaGFzaF9kYXRhWzBdLCBoYXNoX2RhdGFbMV0sCisgICAgICAgICAgICAgICAg aGFzaF9kYXRhWzJdLCBoYXNoX2RhdGFbM10sIGhhc2hfZGF0YV9zaXplKTsKKworICBpZiAoY3R4 dC0+c3RhdGVbT1BUSU9OX0JJTkFSWV9IQVNIXS5zZXQgfHwgY3R4dC0+c3RhdGVbT1BUSU9OX0NF UlRfSEFTSF0uc2V0KQorICAgIHsKKyAgICAgIC8qIE9ubHkgYWNjZXB0IFNIQTI1NiwgU0hBMzg0 IGFuZCBTSEE1MTIgY2VydGlmaWNhdGUvYmluYXJ5IGhhc2ggKi8KKyAgICAgIGlmIChoYXNoX2Rh dGFfc2l6ZSAhPSAzMiAmJiBoYXNoX2RhdGFfc2l6ZSAhPSA0OCAmJiBoYXNoX2RhdGFfc2l6ZSAh PSA2NCkKKyAgICAgICAgeworICAgICAgICAgIGdydWJfZnJlZSAoaGFzaF9kYXRhKTsKKyAgICAg ICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX1NJR05BVFVSRSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgInVuYWNjZXB0YWJsZSBkaXN0cnVzdGVkIGNlcnRpZmljYXRl L2JpbmFyeSBoYXNoIHR5cGUiKTsKKyAgICAgICAgfQorICAgIH0KKworICAvKiBSZW1vdmUgZGlz dHJ1c3RlZCBiaW5hcnkgaGFzaC9jZXJ0aWZpY2F0ZSBmcm9tIHRoZSBkYiBsaXN0IGlmIHByZXNl bnQuICovCisgIHJlbW92ZV9oYXNoX2Zyb21fZGIgKGhhc2hfZGF0YSwgaGFzaF9kYXRhX3NpemUs CisgICAgICAgICAgICAgICAgICAgICAgICgoY3R4dC0+c3RhdGVbT1BUSU9OX0JJTkFSWV9IQVNI XS5zZXQpID8gdHJ1ZSA6IGZhbHNlKSk7CisKKyAgcmMgPSBhZGRfaGFzaCAoaGFzaF9kYXRhLCBo YXNoX2RhdGFfc2l6ZSwgJmRieCwgZmFsc2UpOworICBncnViX2ZyZWUgKGhhc2hfZGF0YSk7CisK KyAgcmV0dXJuIHJjOworfQorCiAvKiBBZGQgdGhlIFguNTA5IGNlcnRpZmljYXRlcy9iaW5hcnkg aGFzaCB0byB0aGUgZGIgbGlzdCBmcm9tIFBLUy4gKi8KIHN0YXRpYyBncnViX2Vycl90CiBjcmVh dGVfZGJfbGlzdCAodm9pZCkKQEAgLTEyOTcsMTAgKzE1NjEsMTYgQEAgZ3J1Yl9lbnZfd3JpdGVf a2V5X21nbXQgKHN0cnVjdCBncnViX2Vudl92YXIgKnZhciBfX2F0dHJpYnV0ZV9fICgodW51c2Vk KSksIGNvbnMKICAgICAgIGlmIChncnViX3Brc19rZXlzdG9yZS5wa3Nfc3VwcG9ydGVkID09IHRy dWUgJiYgZ3J1Yl9wa3Nfa2V5c3RvcmUudXNlX2tleXN0b3JlID09IGZhbHNlKQogICAgICAgICBi dWlsZF9wa3Nfa2V5c3RvcmUgKCk7CiAKKyAgICAgIHVucmVnaXN0ZXJfYXBwZW5kZWRfc2lnbmF0 dXJlc19jbWQgKCk7CiAgICAgICBncnViX3Brc19rZXlzdG9yZS51c2Vfa2V5c3RvcmUgPSB0cnVl OworICAgICAgcmVnaXN0ZXJfYXBwZW5kZWRfc2lnbmF0dXJlc19jbWQgKCk7CiAgICAgfQogICBl bHNlIGlmICgoKnZhbCA9PSAnMCcpIHx8ICgqdmFsID09ICdzJykpCi0gICAgZ3J1Yl9wa3Nfa2V5 c3RvcmUudXNlX2tleXN0b3JlID0gZmFsc2U7CisgICAgeworICAgICAgdW5yZWdpc3Rlcl9hcHBl bmRlZF9zaWduYXR1cmVzX2NtZCAoKTsKKyAgICAgIGdydWJfcGtzX2tleXN0b3JlLnVzZV9rZXlz dG9yZSA9IGZhbHNlOworICAgICAgcmVnaXN0ZXJfYXBwZW5kZWRfc2lnbmF0dXJlc19jbWQgKCk7 CisgICAgfQogCiAgIHJldCA9IGdydWJfc3RyZHVwIChncnViX2Vudl9yZWFkX2tleV9tZ210IChO VUxMLCBOVUxMKSk7CiAgIGlmIChyZXQgPT0gTlVMTCkKQEAgLTEzNjksNyArMTYzOSw5IEBAIHN0 cnVjdCBncnViX2ZpbGVfdmVyaWZpZXIgZ3J1Yl9hcHBlbmRlZHNpZ192ZXJpZmllciA9IHsKICAg LndyaXRlID0gYXBwZW5kZWRzaWdfd3JpdGUsCiB9OwogCi1zdGF0aWMgZ3J1Yl9jb21tYW5kX3Qg Y21kX3ZlcmlmeSwgY21kX2xpc3RfZGIsIGNtZF9kYnhfY2VydCwgY21kX2RiX2NlcnQ7CitzdGF0 aWMgZ3J1Yl9leHRjbWRfdCBjbWRfZGJ4X2hhc2g7CitzdGF0aWMgZ3J1Yl9jb21tYW5kX3QgY21k X3ZlcmlmeSwgY21kX2xpc3RfZGIsIGNtZF9kYl9jZXJ0LCBjbWRfZGJfaGFzaCwKKyAgICAgICAg ICAgICAgICAgICAgICBjbWRfbGlzdF9kYngsIGNtZF9kYnhfY2VydDsKIAogLyogSXQgcmVnaXN0 ZXJzIHRoZSBhcHBlbmRlZCBzaWduYXR1cmVzIEdSVUIgY29tbWFuZHMuICovCiBzdGF0aWMgdm9p ZApAQCAtMTM4MSw4ICsxNjUzLDI3IEBAIHJlZ2lzdGVyX2FwcGVuZGVkX3NpZ25hdHVyZXNfY21k ICh2b2lkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIlNob3cg dGhlIGxpc3Qgb2YgdHJ1c3RlZCBYLjUwOSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgZGIgbGlzdCIp KTsKICAgY21kX2RiX2NlcnQgPSBncnViX3JlZ2lzdGVyX2NvbW1hbmQgKCJhcHBlbmRfYWRkX2Ri X2NlcnQiLCBncnViX2NtZF9kYl9jZXJ0LCBOXygiWDUwOV9DRVJUSUZJQ0FURSIpLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIkFkZCB0cnVzdGVkIFg1MDlfQ0VS VElGSUNBVEUgdG8gdGhlIGRiIGxpc3QiKSk7Ci0gIGNtZF9kYnhfY2VydCA9IGdydWJfcmVnaXN0 ZXJfY29tbWFuZCAoImFwcGVuZF9ybV9kYnhfY2VydCIsIGdydWJfY21kX2RieF9jZXJ0LCBOXygi WDUwOV9DRVJUSUZJQ0FURSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5fKCJSZW1vdmUgZGlzdHJ1c3RlZCBYNTA5X0NFUlRJRklDQVRFIGZyb20gdGhlIGRiIGxp c3QiKSk7CisgIC8qCisgICAqIElmIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMgZW5hYmxlZCB3 aXRoIGR5bmFtaWMga2V5IG1hbmFnZW1lbnQgbW9kZSwKKyAgICogcmVnaXN0ZXIgZHluYW1pYyBz ZWN1cmUgYm9vdCBHUlVCIGNvbW1hbmRzLgorICAgKi8KKyAgaWYgKGdydWJfcGtzX2tleXN0b3Jl LnVzZV9rZXlzdG9yZSA9PSB0cnVlKQorICAgIHsKKyAgICAgIGNtZF9kYnhfY2VydCA9IGdydWJf cmVnaXN0ZXJfY29tbWFuZCAoImFwcGVuZF9hZGRfZGJ4X2NlcnQiLCBncnViX2NtZF9kYnhfY2Vy dCwgTl8oIlg1MDlfQ0VSVElGSUNBVEUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTl8oIkFkZCBkaXN0cnVzdGVkIFg1MDlfQ0VSVElGSUNBVEUgdG8gdGhl IGRieCBsaXN0IikpOworICAgICAgY21kX2xpc3RfZGJ4ID0gZ3J1Yl9yZWdpc3Rlcl9jb21tYW5k ICgiYXBwZW5kX2xpc3RfZGJ4IiwgZ3J1Yl9jbWRfbGlzdF9kYngsIDAsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5fKCJTaG93IHRoZSBsaXN0IG9mIGRpc3Ry dXN0ZWQgY2VydGlmaWNhdGVzIGFuZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIiBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaGVzIGZyb20gdGhlIGRieCBsaXN0 IikpOworICAgICAgY21kX2RiX2hhc2ggPSBncnViX3JlZ2lzdGVyX2NvbW1hbmQgKCJhcHBlbmRf YWRkX2RiX2hhc2giLCBncnViX2NtZF9kYl9oYXNoLCBOXygiQklOQVJZIEhBU0ggRklMRSIpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5fKCJBZGQgdHJ1c3Rl ZCBCSU5BUlkgSEFTSCB0byB0aGUgZGIgbGlzdC4iKSk7CisgICAgICBjbWRfZGJ4X2hhc2ggPSBn cnViX3JlZ2lzdGVyX2V4dGNtZCAoImFwcGVuZF9hZGRfZGJ4X2hhc2giLCBncnViX2NtZF9kYnhf aGFzaCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOXygi Wy1ifC0tYmluYXJ5LWhhc2hdIEZJTEUgW0JJTkFSWSBIQVNIIEZJTEVdXG4iCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlstY3wtLWNlcnQtaGFzaF0gRklMRSBb Q0VSVEZJQ0FURSBIQVNIIEZJTEVdIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTl8oIkFkZCBkaXN0cnVzdGVkIENFUlRGSUNBVEUvQklOQVJZIEhBU0ggdG8g dGhlIGRieCBsaXN0LiIpLCBvcHRpb25zKTsKKyAgICB9CisgIGVsc2UKKyAgICBjbWRfZGJ4X2Nl cnQgPSBncnViX3JlZ2lzdGVyX2NvbW1hbmQgKCJhcHBlbmRfcm1fZGJ4X2NlcnQiLCBncnViX2Nt ZF9kYnhfY2VydCwgTl8oIlg1MDlfQ0VSVElGSUNBVEUiKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE5fKCJSZW1vdmUgZGlzdHJ1c3RlZCBYNTA5X0NFUlRJRklD QVRFIGZyb20gdGhlIGRiIGxpc3QiKSk7CiB9CiAKIC8qIEl0IHVucmVnaXN0ZXJzIHRoZSBhcHBl bmRlZCBzaWduYXR1cmVzIEdSVUIgY29tbWFuZHMuICovCkBAIC0xMzkzLDYgKzE2ODQsMTYgQEAg dW5yZWdpc3Rlcl9hcHBlbmRlZF9zaWduYXR1cmVzX2NtZCAodm9pZCkKICAgZ3J1Yl91bnJlZ2lz dGVyX2NvbW1hbmQgKGNtZF9saXN0X2RiKTsKICAgZ3J1Yl91bnJlZ2lzdGVyX2NvbW1hbmQgKGNt ZF9kYl9jZXJ0KTsKICAgZ3J1Yl91bnJlZ2lzdGVyX2NvbW1hbmQgKGNtZF9kYnhfY2VydCk7Cisg IC8qCisgICAqIElmIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMgZW5hYmxlZCB3aXRoIGR5bmFt aWMga2V5IG1hbmFnZW1lbnQgbW9kZSwKKyAgICogdW5yZWdpc3RlciBkeW5hbWljIHNlY3VyZSBi b290IEdSVUIgY29tbWFuZHMuCisgICAqLworICBpZiAoZ3J1Yl9wa3Nfa2V5c3RvcmUudXNlX2tl eXN0b3JlID09IHRydWUpCisgICAgeworICAgICAgZ3J1Yl91bnJlZ2lzdGVyX2NvbW1hbmQgKGNt ZF9saXN0X2RieCk7CisgICAgICBncnViX3VucmVnaXN0ZXJfY29tbWFuZCAoY21kX2RiX2hhc2gp OworICAgICAgZ3J1Yl91bnJlZ2lzdGVyX2V4dGNtZCAoY21kX2RieF9oYXNoKTsKKyAgICB9CiB9 CiAKIEdSVUJfTU9EX0lOSVQgKGFwcGVuZGVkc2lnKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnVi L2ZpbGUuaCBiL2luY2x1ZGUvZ3J1Yi9maWxlLmgKaW5kZXggZDY3OGRlMDYzLi4xNmE0YjdkMjYg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi9maWxlLmgKKysrIGIvaW5jbHVkZS9ncnViL2ZpbGUu aApAQCAtMTE1LDYgKzExNSw4IEBAIGVudW0gZ3J1Yl9maWxlX3R5cGUKICAgICBHUlVCX0ZJTEVf VFlQRV9IQVNITElTVCwKICAgICAvKiBGaWxlIGhhc2hlZCBieSBoYXNoc3VtLiAgKi8KICAgICBH UlVCX0ZJTEVfVFlQRV9UT19IQVNILAorICAgIC8qIEZpbGUgaG9sZGluZyBjZXJ0aWZpY2lhdGUv YmluYXJ5IGhhc2ggdG8gYWRkIHRvIGRiL2RieC4gKi8KKyAgICBHUlVCX0ZJTEVfVFlQRV9IQVNI X1RSVVNULAogICAgIC8qIEtleWJvYXJkIGxheW91dC4gICovCiAgICAgR1JVQl9GSUxFX1RZUEVf S0VZQk9BUkRfTEFZT1VULAogICAgIC8qIFBpY3R1cmUgZmlsZS4gICovCi0tIAoyLjM5LjUgKEFw cGxlIEdpdC0xNTQpCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KR3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBnbnUub3JnCmh0dHBzOi8v bGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK