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 3AB78CA0FE0 for ; Thu, 21 Aug 2025 07:59:52 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0BY-0001C2-9m; Thu, 21 Aug 2025 03:58:12 -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 1up0BU-0001AG-LQ for grub-devel@gnu.org; Thu, 21 Aug 2025 03:58:08 -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 1up0BO-0001dH-KS for grub-devel@gnu.org; Thu, 21 Aug 2025 03:58:07 -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 57KKWhv0028827; Thu, 21 Aug 2025 07:57:58 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=AjHJbrt8n5QfoiYLF jEBIbwlIAyYsRsvEF7pv8dZxaI=; b=K0nW6PAfuhCXgb6vugki6XCf8r2jzU2wM b8/Iwj8GtGFSYeYVyjpmfj8mSP4nvkZ3NZQV+AXCEdBjhvbEhTdzy+dmjcJZxYlE FGyhHaktEoxStk7w5m5jof7p44NomXSGs7kyPUR2W4PFWsP24s/nmHIwKwseFwhz +I4k16+KoYiJEfTRnBTRgCnL/hDxkbrA7fT2OQhHRvaWJtHgfLjZ+pEN9I6hg7fS EMsnc6FzFHN8IgTTvWCcxR1XYKmHQhRGqOJ2ZHo+2V994Vz12iPjXzdnx61hkIJF UlqM6rff59od9O9fouUH174wY9MbjkT+sxAhIKU2gX45dZj6EagZg== 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 48n38vff7k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Aug 2025 07:57:58 +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 57L7G2sn024796; Thu, 21 Aug 2025 07:57:56 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 48my5vy8mf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Aug 2025 07:57:56 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 57L7vn8Q31326970 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 21 Aug 2025 07:57:49 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B44592004D; Thu, 21 Aug 2025 07:57:49 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1CFF320043; Thu, 21 Aug 2025 07:57:47 +0000 (GMT) Received: from localhost.localdomain (unknown [9.39.19.6]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 21 Aug 2025 07:57:46 +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 v8 16/20] appended signatures: Introduce GRUB commands to access db and dbx Date: Thu, 21 Aug 2025 13:25:09 +0530 Message-Id: <20250821075513.82881-17-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250821075513.82881-1-sudhakar@linux.ibm.com> References: <20250821075513.82881-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODE5MDIyMiBTYWx0ZWRfX16v15YJrY/2a Nv7YCgDr89dfHljQTIx4YPNy0S4Jjrj5dvcN9PgOG7Zyb6tiDkc51UWHb6w5SeZeZoiI0Uk2Scd LSFWdSaGcpag90N07nwH0+sNjoqAsFuST6g7IDm5ml95BS/+hCWPyYAs4Dg24OrHYIq3iO5IeQN bMfCJPsIFWScFiabsQppzMAOP4LsecGZ3CwVcSWAD7OPeNe+rBjlGDycGyWz5oUheoe00GPsY2M KZ69OwkWftf8Y7O7k8Gb7hF8E8I26EsH1yVEZfRFunm3LqTJ6Dd+ob+r9ZPkmMJhPk4gI5E/caS VLvRog6SszTcC0LswiIy2jG26Q8pX2pQw+Pl+3kpJOpSEHNKnozT325JG29WCDP8uYuUtxBwHfH M7GQOOMXKpyEyNDG/o5QHHTT9SaOLA== X-Authority-Analysis: v=2.4 cv=PMlWOfqC c=1 sm=1 tr=0 ts=68a6d186 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=2OwXVqhp2XgA:10 a=VnNF1IyMAAAA:8 a=wgbari_WUrLdtjakR6cA:9 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-GUID: I3oENSgdiVy3duQFcA-Vu8-6SYILIZiZ X-Proofpoint-ORIG-GUID: I3oENSgdiVy3duQFcA-Vu8-6SYILIZiZ 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-21_01,2025-08-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 bulkscore=0 adultscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 spamscore=0 phishscore=0 suspectscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2508110000 definitions=main-2508190222 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 bmRlZHNpZy5jIHwgNDI3ICsrKysrKysrKysrKysrKysrKy0KIGluY2x1ZGUvZ3J1Yi9maWxlLmgg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIDIgZmlsZXMgY2hhbmdlZCwgNDE5IGlu c2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dydWItY29yZS9jb21t YW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVu ZGVkc2lnL2FwcGVuZGVkc2lnLmMKaW5kZXggMTQ2MDE3ODY3Li5iYzJjZWM5NzcgMTAwNjQ0Ci0t LSBhL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCisrKyBiL2dy dWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCkBAIC00Miw2ICs0Miw5 IEBAIEdSVUJfTU9EX0xJQ0VOU0UgKCJHUEx2MysiKTsKIC8qIFB1YmxpYyBrZXkgdHlwZS4gKi8K ICNkZWZpbmUgR1JVQl9QS0VZX0lEX1BLQ1M3IDIKIAorI2RlZmluZSBPUFRJT05fQklOQVJZX0hB U0ggMAorI2RlZmluZSBPUFRJT05fQ0VSVF9IQVNIICAgMQorCiAvKiBBcHBlbmRlZCBzaWduYXR1 cmUgbWFnaWMgc3RyaW5nLiAqLwogc3RhdGljIGNvbnN0IGNoYXIgbWFnaWNbXSA9ICJ+TW9kdWxl IHNpZ25hdHVyZSBhcHBlbmRlZH5cbiI7CiAKQEAgLTEwMiw2ICsxMDUsMTMgQEAgc3RhdGljIGdy dWJfc2l6ZV90IGFwcGVuZF9zaWdfbGVuID0gMDsKICAqLwogc3RhdGljIGJvb2wgY2hlY2tfc2ln cyA9IGZhbHNlOwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGdydWJfYXJnX29wdGlvbiBvcHRpb25z W10gPQoreworICB7ImJpbmFyeS1oYXNoIiwgJ2InLCAwLCBOXygiaGFzaCBmaWxlIG9mIHRoZSBi aW5hcnkuIiksIDAsIEFSR19UWVBFX1BBVEhOQU1FfSwKKyAgeyJjZXJ0LWhhc2giLCAnYycsIDEs IE5fKCJoYXNoIGZpbGUgb2YgdGhlIGNlcnRpZmljYXRlLiIpLCAwLCBBUkdfVFlQRV9QQVRITkFN RX0sCisgIHswLCAwLCAwLCAwLCAwLCAwfQorfTsKKwogc3RhdGljIHZvaWQKIHJlZ2lzdGVyX2Fw cGVuZGVkX3NpZ25hdHVyZXNfY21kICh2b2lkKTsKIHN0YXRpYyB2b2lkCkBAIC0xOTEsMTAgKzIw MSwxNiBAQCBncnViX2Vudl93cml0ZV9rZXlfbWdtdCAoc3RydWN0IGdydWJfZW52X3ZhciAqdmFy IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgY29ucwogICAgICAgaWYgKGdydWJfcGtzX2lzX3N1 cHBvcnRfcGtzID09IHRydWUgJiYgZ3J1Yl9wa3NfdXNlX2tleXN0b3JlID09IGZhbHNlKQogICAg ICAgICBidWlsZF9wa3Nfa2V5c3RvcmUgKCk7CiAKKyAgICAgIHVucmVnaXN0ZXJfYXBwZW5kZWRf c2lnbmF0dXJlc19jbWQgKCk7CiAgICAgICBncnViX3Brc191c2Vfa2V5c3RvcmUgPSB0cnVlOwor ICAgICAgcmVnaXN0ZXJfYXBwZW5kZWRfc2lnbmF0dXJlc19jbWQgKCk7CiAgICAgfQogICBlbHNl IGlmICgoKnZhbCA9PSAnMCcpIHx8ICgqdmFsID09ICdzJykpCi0gICAgZ3J1Yl9wa3NfdXNlX2tl eXN0b3JlID0gZmFsc2U7CisgICAgeworICAgICAgdW5yZWdpc3Rlcl9hcHBlbmRlZF9zaWduYXR1 cmVzX2NtZCAoKTsKKyAgICAgIGdydWJfcGtzX3VzZV9rZXlzdG9yZSA9IGZhbHNlOworICAgICAg cmVnaXN0ZXJfYXBwZW5kZWRfc2lnbmF0dXJlc19jbWQgKCk7CisgICAgfQogCiAgIHJldCA9IGdy dWJfc3RyZHVwIChncnViX2Vudl9yZWFkX2tleV9tZ210IChOVUxMLCBOVUxMKSk7CiAgIGlmIChy ZXQgPT0gTlVMTCkKQEAgLTc1MSw2ICs3NjcsNTIgQEAgcmVtb3ZlX2NlcnRfZnJvbV9kYiAoY29u c3Qgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKmNlcnQpCiAgICAgfQogfQogCisvKgorICogV2Ug Y2Fubm90IHVzZSBoZXhkdW1wKCkgdG8gZGlzcGxheSBoYXNoIGRhdGEgYmVjYXVzZSBpdCBpcyB0 eXBpY2FsbHkKKyAqIGRpc3BsYXllZCBpbiBoZXhhZGVjaW1hbCBmb3JtYXQsIGFsb25nIHdpdGgg YW4gQVNDSUkgcmVwcmVzZW50YXRpb24gb2YKKyAqIHRoZSBzYW1lIGRhdGEuCisgKiBFeGFtcGxl OiBzaGEyNTYgaGFzaCBkYXRhCisgKiAwMDAwMDAwMCAgNTIgYjUgOTAgNDkgNjQgZGUgMjIgZDcg IDRlIDVmIDRmIGI0IDFiIDUxIDljIDM0ICB8Ui4uSWQuIi5OX08uLlEuNHwKKyAqIDAwMDAwMDEw ICBiMSA5NiAyMSA3YyA5MSA3OCBhNSAwZCAgMjAgOGMgZTkgNWMgMjIgNTQgNTMgZjcgIHwuLiF8 LnguLiAuLlwiVFMufAorICoKKyAqIEFuIGFwcGVuZGVkIHNpZ25hdHVyZSBvbmx5IHJlcXVpcmVk IHRvIGRpc3BsYXkgdGhlIGhleGFkZWNpbWFsIG9mIHRoZSBoYXNoIGRhdGEKKyAqIGJ5IHNlcGFy YXRpbmcgZWFjaCBieXRlIHdpdGggIjoiLiBTbywgd2UgaW50cm9kdWNlZCBhIG5ldyBtZXRob2Qg ZHVtcF9kYXRhX3RvX2hleAorICogdG8gZGlzcGxheSBpdC4KKyAqIEV4YW1wbGU6IFNoYTI1NiBo YXNoIGRhdGEKKyAqICA1MjpiNTo5MDo0OTo2NDpkZToyMjpkNzo0ZTo1Zjo0ZjpiNDoxYjo1MTo5 YzozNDoKKyAqICBiMTo5NjoyMTo3Yzo5MTo3ODphNTowZDoyMDo4YzplOTo1YzoyMjo1NDo1Mzpm NworICovCitzdGF0aWMgdm9pZAorZHVtcF9kYXRhX3RvX2hleCAoY29uc3QgZ3J1Yl91aW50OF90 ICpkYXRhLCBjb25zdCBncnViX3NpemVfdCBsZW5ndGgpCit7CisgIGdydWJfc2l6ZV90IGksIGNv dW50ID0gMDsKKworICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoIC0gMTsgaSsrKQorICAgIHsKKyAg ICAgIGdydWJfcHJpbnRmICgiJTAyeDoiLCBkYXRhW2ldKTsKKyAgICAgIGNvdW50Kys7CisgICAg ICBpZiAoY291bnQgPT0gMTYpCisgICAgICAgIHsKKyAgICAgICAgICBncnViX3ByaW50ZiAoIlxu XHQgICAgICAiKTsKKyAgICAgICAgICBjb3VudCA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAg Z3J1Yl9wcmludGYgKCIlMDJ4XG4iLCBkYXRhW2ldKTsKK30KKworc3RhdGljIGJvb2wKK2lzX2Nl cnRfcHJlc2VudF9pbl9kYnggKGNvbnN0IHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpjZXJ0X2lu KQoreworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydDsKKworICBmb3IgKGNlcnQgPSBk YnguY2VydHM7IGNlcnQ7IGNlcnQgPSBjZXJ0LT5uZXh0KQorICAgIGlmIChpc19jZXJ0X21hdGNo IChjZXJ0LCBjZXJ0X2luKSA9PSB0cnVlKQorICAgICAgcmV0dXJuIHRydWU7CisKKyAgcmV0dXJu IGZhbHNlOworfQorCiBzdGF0aWMgZ3J1Yl9lcnJfdAogZ3J1Yl9jbWRfdmVyaWZ5X3NpZ25hdHVy ZSAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IGFyZ2Ms IGNoYXIgKiphcmdzKQogewpAQCAtNzgzLDcgKzg0NSw4IEBAIGdydWJfY21kX3ZlcmlmeV9zaWdu YXR1cmUgKGdydWJfY29tbWFuZF90IGNtZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGludCBh cmdjCiB9CiAKIC8qCi0gKiBBZGQgdGhlIHRydXN0ZWQgY2VydGlmaWNhdGUgdG8gdGhlIGRiIGxp c3QgaWYgaXQgaXMgbm90IGFscmVhZHkgcHJlc2VudC4KKyAqIENoZWNrcyB0aGUgdHJ1c3RlZCBj ZXJ0aWZpY2F0ZSBhZ2FpbnN0IGRieCBsaXN0IGlmIGR5bmFtaWMga2V5IG1hbmFnZW1lbnQgaXMg ZW5hYmxlZC4KKyAqIEFuZCBhZGQgaXQgdG8gdGhlIGRiIGxpc3QgaWYgaXQgaXMgbm90IGFscmVh ZHkgcHJlc2VudC4KICAqIE5vdGU6LSBXaGVuIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMgZW5h YmxlZCwgdGhpcyBjb21tYW5kIG9ubHkgYWNjZXB0cyB0aGUKICAqIHRydXN0ZWQgY2VydGlmaWNh dGUgdGhhdCBpcyBzaWduZWQgd2l0aCBhbiBhcHBlbmRlZCBzaWduYXR1cmUuCiAgKiBUaGUgc2ln bmF0dXJlIGlzIHZlcmlmaWVkIGJ5IHRoZSBhcHBlbmRlZHNpZyBtb2R1bGUuIElmIHZlcmlmaWNh dGlvbiBzdWNjZWVkcywKQEAgLTgyMyw2ICs4ODYsMTQgQEAgZ3J1Yl9jbWRfZGJfY2VydCAoZ3J1 Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IGFyZ2MsIGNoYXIg KioKICAgICAgIHJldHVybiBlcnI7CiAgICAgfQogCisgIC8qIE9ubHkgY2hlY2tzIHRoZSBjZXJ0 aWZpY2F0ZSBhZ2FpbnN0IGRieCBpZiBkeW5hbWljIGtleSBtYW5hZ2VtZW50IGlzIGVuYWJsZWQu ICovCisgIGlmIChncnViX3Brc191c2Vfa2V5c3RvcmUgPT0gdHJ1ZSkKKyAgICB7CisgICAgICBp ZiAoaXNfY2VydF9wcmVzZW50X2luX2RieCAoY2VydCkgPT0gdHJ1ZSkKKyAgICAgICAgcmV0dXJu IGdydWJfZXJyb3IgKEdSVUJfRVJSX0FDQ0VTU19ERU5JRUQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAiY291bGQgbm90IGFkZCB0cnVzdGVkIGNlcnRpZmljYXRlLCBhcyBpdCBpcyBwcmVz ZW50IGluIHRoZSBkYnggbGlzdCIpOworICAgIH0KKwogICBpZiAoaXNfY2VydF9wcmVzZW50X2lu X2RiIChjZXJ0KSA9PSB0cnVlKQogICAgIHsKICAgICAgIGNlcnRpZmljYXRlX3JlbGVhc2UgKGNl cnQpOwpAQCAtODQyLDYgKzkxMyw4IEBAIGdydWJfY21kX2RiX2NlcnQgKGdydWJfY29tbWFuZF90 IGNtZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGludCBhcmdjLCBjaGFyICoqCiAKIC8qCiAg KiBSZW1vdmUgdGhlIGRpc3RydXN0ZWQgY2VydGlmaWNhdGUgZnJvbSB0aGUgZGIgbGlzdCBpZiBp dCBpcyBhbHJlYWR5IHByZXNlbnQuCisgKiBBbmQgYWRkIGl0IHRvIHRoZSBkYnggbGlzdCBpZiBu b3QgcHJlc2VudCB3aGVuIGR5bmFtaWMga2V5IG1hbmFnZW1lbnQgaXMKKyAqIGVuYWJsZWQuCiAg KiBOb3RlOi0gV2hlbiBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGlzIGVuYWJsZWQsIHRoaXMgY29t bWFuZCBvbmx5IGFjY2VwdHMgdGhlCiAgKiBkaXN0cnVzdGVkIGNlcnRpZmljYXRlIHRoYXQgaXMg c2lnbmVkIHdpdGggYW4gYXBwZW5kZWQgc2lnbmF0dXJlLgogICogVGhlIHNpZ25hdHVyZSBpcyB2 ZXJpZmllZCBieSB0aGUgYXBwZW5kZWQgc2lnIG1vZHVsZS4gSWYgdmVyaWZpY2F0aW9uIHN1Y2Nl ZWRzLApAQCAtODUxLDcgKzkyNCw5IEBAIGdydWJfY21kX2RiX2NlcnQgKGdydWJfY29tbWFuZF90 IGNtZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGludCBhcmdjLCBjaGFyICoqCiAgKiB3aXRo b3V0IGFuIGFwcGVuZGVkIHNpZ25hdHVyZSBhbmQgcmVtb3ZlcyBpdCBmcm9tIHRoZSBkYiBsaXN0 LgogICoKICAqIEFsc28sIG5vdGUgdGhhdCB0aGUgcmVtb3ZhbCBvZiB0aGUgZGlzdHJ1c3RlZCBj ZXJ0aWZpY2F0ZSB1c2luZyB0aGlzIGNvbW1hbmQKLSAqIGRvZXMgbm90IHBlcnNpc3QgYWNyb3Nz IHJlYm9vdHMuCisgKiBkb2VzIG5vdCBwZXJzaXN0IGFjcm9zcyByZWJvb3RzLiBJZiBzdGF0aWMg a2V5IG1hbmFnZW1lbnQgaXMgZW5hYmxlZCwgdGhlCisgKiBhcHBlbmRfcm1fZGJ4X2NlcnQgY29t bWFuZCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgR1JVQiBjb25zb2xlLiBFbHNlIHRoZQorICog YXBwZW5kX2FkZF9kYnhfY2VydCBjb21tYW5kIGlzIGF2YWlsYWJsZSBpbiB0aGUgR1JVQiBjb25z b2xlLgogICovCiBzdGF0aWMgZ3J1Yl9lcnJfdAogZ3J1Yl9jbWRfZGJ4X2NlcnQgKGdydWJfY29t bWFuZF90IGNtZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGludCBhcmdjLCBjaGFyICoqYXJn cykKQEAgLTg2Miw4ICs5MzcsMTAgQEAgZ3J1Yl9jbWRfZGJ4X2NlcnQgKGdydWJfY29tbWFuZF90 IGNtZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGludCBhcmdjLCBjaGFyICoKIAogICBpZiAo YXJnYyAhPSAxKQogICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfQVJHVU1FTlQs Ci0gICAgICAgICAgICAgICAgICAgICAgICJhIGRpc3RydXN0ZWQgWC41MDkgY2VydGlmaWNhdGUg ZmlsZSBpcyBleHBlY3RlZCBpbiBERVIgZm9ybWF0XG4iCi0gICAgICAgICAgICAgICAgICAgICAg ICJFeGFtcGxlOlxuXHRhcHBlbmRfcm1fZGJ4X2NlcnQgPFg1MDlfQ0VSVElGSUNBVEU+XG4iKTsK KyAgICAgICAgICAgICAgICAgICAgICAgImEgZGlzdHJ1c3RlZCBYLjUwOSBjZXJ0aWZpY2F0ZSBm aWxlIGlzIGV4cGVjdGVkIGluIERFUiBmb3JtYXRcbiVzIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgKChncnViX3Brc191c2Vfa2V5c3RvcmUgPT0gdHJ1ZSkgPworICAgICAgICAgICAgICAgICAg ICAgICAiRXhhbXBsZTpcblx0YXBwZW5kX2FkZF9kYnhfY2VydCA8WDUwOV9DRVJUSUZJQ0FURT5c biIgOgorICAgICAgICAgICAgICAgICAgICAgICAiRXhhbXBsZTpcblx0YXBwZW5kX3JtX2RieF9j ZXJ0IDxYNTA5X0NFUlRJRklDQVRFPlxuIikpOwogCiAgIGlmICgqYXJncyA9PSBOVUxMKQogICAg IHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfRklMRU5BTUUsICJtaXNzaW5nIGRpc3Ry dXN0ZWQgWC41MDkgY2VydGlmaWNhdGUgZmlsZSIpOwpAQCAtODgzLDggKzk2MCwzMCBAQCBncnVi X2NtZF9kYnhfY2VydCAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQp KSwgaW50IGFyZ2MsIGNoYXIgKgogCiAgIC8qIFJlbW92ZSBkaXN0cnVzdGVkIGNlcnRpZmljYXRl IGZyb20gdGhlIGRiIGxpc3QgaWYgcHJlc2VudC4gKi8KICAgcmVtb3ZlX2NlcnRfZnJvbV9kYiAo Y2VydCk7Ci0gIGNlcnRpZmljYXRlX3JlbGVhc2UgKGNlcnQpOwotICBncnViX2ZyZWUgKGNlcnQp OworCisgIC8qIE9ubHkgY2hlY2tzIHRoZSBjZXJ0aWZpY2F0ZSBhZ2FpbnN0IGRieCBpZiBkeW5h bWljIGtleSBtYW5hZ2VtZW50IGlzIGVuYWJsZWQuICovCisgIGlmIChncnViX3Brc191c2Vfa2V5 c3RvcmUgPT0gdHJ1ZSkKKyAgICB7CisgICAgICBpZiAoaXNfY2VydF9wcmVzZW50X2luX2RieCAo Y2VydCkgPT0gdHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgIGNlcnRpZmljYXRlX3JlbGVhc2Ug KGNlcnQpOworICAgICAgICAgIGdydWJfZnJlZSAoY2VydCk7CisgICAgICAgICAgcmV0dXJuIGdy dWJfZXJyb3IgKEdSVUJfRVJSX0VYSVNUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ImNvdWxkIG5vdCBhZGQgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZSwgYXMgaXQgaXMgcHJlc2VudCBp biB0aGUgZGJ4IGxpc3QiKTsKKyAgICAgICAgfQorCisgICAgICBncnViX2RwcmludGYgKCJhcHBl bmRlZHNpZyIsICJhZGRlZCBkaXN0cnVzdGVkIGNlcnRpZmljYXRlIHdpdGggQ046ICVzIHRvIHRo ZSBkYnggbGlzdFxuIiwKKyAgICAgICAgICAgICAgICAgICAgY2VydC0+c3ViamVjdCk7CisKKyAg ICAgIGNlcnQtPm5leHQgPSBkYnguY2VydHM7CisgICAgICBkYnguY2VydHMgPSBjZXJ0OworICAg ICAgZGJ4LmNlcnRfZW50cmllcysrOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGNlcnRp ZmljYXRlX3JlbGVhc2UgKGNlcnQpOworICAgICAgZ3J1Yl9mcmVlIChjZXJ0KTsKKyAgICB9CiAK ICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CiB9CkBAIC05MDksOSArMTAwOCwyODEgQEAgZ3J1Yl9j bWRfbGlzdF9kYiAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwg aW50IGFyZ2MgX19hdHRyaWIKICAgICAgIGdydWJfcHJpbnRmICgiXHRDTjogJXNcblxuIiwgY2Vy dC0+c3ViamVjdCk7CiAgICAgfQogCisgIC8qIE9ubHkgbGlzdCB0aGUgYmluYXJ5IGhhc2ggaWYg ZHluYW1pYyBrZXkgbWFuYWdlbWVudCBpcyBlbmFibGVkLiAqLworICBpZiAoZ3J1Yl9wa3NfdXNl X2tleXN0b3JlID09IHRydWUpCisgICAgeworICAgICAgZm9yIChpID0gMDsgaSA8IGRiLnNpZ25h dHVyZV9lbnRyaWVzOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoZGIuc2lnbmF0dXJl c1tpXSAhPSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBncnViX3ByaW50ZiAo IkJpbmFyeSBoYXNoICV1OlxuIiwgaSArIDEpOworICAgICAgICAgICAgICBncnViX3ByaW50ZiAo Ilx0aGFzaDogIik7CisgICAgICAgICAgICAgIGR1bXBfZGF0YV90b19oZXggKGRiLnNpZ25hdHVy ZXNbaV0sIGRiLnNpZ25hdHVyZV9zaXplW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICAgIH0KKwogICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKIH0KIAorc3RhdGljIGdydWJfZXJyX3QK K2dydWJfY21kX2xpc3RfZGJ4IChncnViX2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXygodW51 c2VkKSksCisgICAgICAgICAgICAgICAgICAgaW50IGFyZ2MgX19hdHRyaWJ1dGVfXygodW51c2Vk KSksIGNoYXIgKiphcmdzIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQoreworICBzdHJ1Y3QgeDUw OV9jZXJ0aWZpY2F0ZSAqY2VydDsKKyAgZ3J1Yl91aW50MzJfdCBpLCBjZXJ0X251bSA9IDE7CisK KyAgZm9yIChjZXJ0ID0gZGJ4LmNlcnRzOyBjZXJ0ICE9IE5VTEw7IGNlcnQgPSBjZXJ0LT5uZXh0 LCBjZXJ0X251bSsrKQorICAgIHsKKyAgICAgIGdydWJfcHJpbnRmICgiQ2VydGlmaWNhdGUgJXU6 XG4iLCBjZXJ0X251bSk7CisgICAgICBncnViX3ByaW50ZiAoIlx0c2VyaWFsOiAiKTsKKworICAg ICAgZm9yIChpID0gMDsgaSA8IGNlcnQtPnNlcmlhbF9sZW4gLSAxOyBpKyspCisgICAgICAgIGdy dWJfcHJpbnRmICgiJTAyeDoiLCBjZXJ0LT5zZXJpYWxbaV0pOworCisgICAgICBncnViX3ByaW50 ZiAoIiUwMnhcbiIsIGNlcnQtPnNlcmlhbFtjZXJ0LT5zZXJpYWxfbGVuIC0gMV0pOworICAgICAg Z3J1Yl9wcmludGYgKCJcdGlzc3VlcjogJXNcbiIsIGNlcnQtPmlzc3Vlcik7CisgICAgICBncnVi X3ByaW50ZiAoIlx0Q046ICVzXG5cbiIsIGNlcnQtPnN1YmplY3QpOworICAgIH0KKworICBmb3Ig KGkgPSAwOyBpIDwgZGJ4LnNpZ25hdHVyZV9lbnRyaWVzOyBpKyspCisgICAgeworICAgICAgaWYg KGRieC5zaWduYXR1cmVzW2ldICE9IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICBncnViX3By aW50ZiAoIkNlcnRpZmljYXRlL0JpbmFyeSBoYXNoICV1OlxuIiwgaSArIDEpOworICAgICAgICAg IGdydWJfcHJpbnRmICgiXHRoYXNoOiAiKTsKKyAgICAgICAgICBkdW1wX2RhdGFfdG9faGV4IChk Ynguc2lnbmF0dXJlc1tpXSwgZGJ4LnNpZ25hdHVyZV9zaXplW2ldKTsKKyAgICAgICAgfQorICAg IH0KKworICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKK30KKworc3RhdGljIGdydWJfZXJyX3QKK3Jl YWRfaGFzaF9mcm9tX2ZpbGUgKGNoYXIgKmZpbGVfcGF0aCwgZ3J1Yl91aW50OF90ICoqaGFzaF9k YXRhLCBncnViX3NpemVfdCAqaGFzaF9kYXRhX3NpemUpCit7CisgIGdydWJfZXJyX3QgcmM7Cisg IGdydWJfZmlsZV90IGhhc2hfZmlsZTsKKworICBoYXNoX2ZpbGUgPSBncnViX2ZpbGVfb3BlbiAo ZmlsZV9wYXRoLCBHUlVCX0ZJTEVfVFlQRV9IQVNIX1RSVVNUIHwgR1JVQl9GSUxFX1RZUEVfTk9f REVDT01QUkVTUyk7CisgIGlmIChoYXNoX2ZpbGUgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9l cnJvciAoR1JVQl9FUlJfRklMRV9OT1RfRk9VTkQsICJ1bmFibGUgdG8gb3BlbiAlcyBmaWxlIiwg ZmlsZV9wYXRoKTsKKworICByYyA9IGZpbGVfcmVhZF93aG9sZSAoaGFzaF9maWxlLCBoYXNoX2Rh dGEsIGhhc2hfZGF0YV9zaXplKTsKKyAgZ3J1Yl9maWxlX2Nsb3NlIChoYXNoX2ZpbGUpOworCisg IC8qCisgICAqIElmIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMgZW5hYmxlZCBhbmQgR1JVQiBp cyBsb2NrZWQgZG93biwKKyAgICogb2J0YWluIHRoZSBhY3R1YWwgaGFzaCBkYXRhIHNpemUgYnkg c3VidHJhY3RpbmcgdGhlIGFwcGVuZGVkCisgICAqIHNpZ25hdHVyZSBzaXplIGZyb20gdGhlIGhh c2ggZGF0YSBzaXplIGJlY2F1c2UKKyAgICogdGhlIGhhc2ggaGFzIGFuIGFwcGVuZGVkIHNpZ25h dHVyZSwgYW5kIHRoaXMgYWN0dWFsIGhhc2ggZGF0YSBzaXplIGlzCisgICAqIHVzZWQgdG8gZ2V0 IHRoZSBoYXNoIGRhdGEuCisgICAqLworICBpZiAoY2hlY2tfc2lncyA9PSB0cnVlICYmIGdydWJf aXNfbG9ja2Rvd24gKCkgPT0gR1JVQl9MT0NLRE9XTl9FTkFCTEVEKQorICAgICpoYXNoX2RhdGFf c2l6ZSAtPSBhcHBlbmRfc2lnX2xlbjsKKworICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBib29s Citpc19oYXNoX3ByZXNlbnRfaW5fZGIgKGNvbnN0IGdydWJfdWludDhfdCAqaGFzaF9kYXRhLCBj b25zdCBncnViX3NpemVfdCBoYXNoX2RhdGFfc2l6ZSkKK3sKKyAgZ3J1Yl91aW50MzJfdCBpOwor CisgIGZvciAoaSA9IDA7IGkgPCBkYi5zaWduYXR1cmVfZW50cmllczsgaSsrKQorICAgIGlmIChn cnViX21lbWNtcCAoZGIuc2lnbmF0dXJlc1tpXSwgaGFzaF9kYXRhLCBoYXNoX2RhdGFfc2l6ZSkg PT0gMCkKKyAgICAgIHJldHVybiB0cnVlOworCisgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGlj IGJvb2wKK2lzX2hhc2hfcHJlc2VudF9pbl9kYnggKGNvbnN0IGdydWJfdWludDhfdCAqaGFzaF9k YXRhLCBjb25zdCBncnViX3NpemVfdCBoYXNoX2RhdGFfc2l6ZSkKK3sKKyAgZ3J1Yl91aW50MzJf dCBpOworCisgIGZvciAoaSA9IDA7IGkgPCBkYnguc2lnbmF0dXJlX2VudHJpZXM7IGkrKykKKyAg ICBpZiAoZ3J1Yl9tZW1jbXAgKGRieC5zaWduYXR1cmVzW2ldLCBoYXNoX2RhdGEsIGhhc2hfZGF0 YV9zaXplKSA9PSAwKQorICAgICAgcmV0dXJuIHRydWU7CisKKyAgcmV0dXJuIGZhbHNlOworfQor CitzdGF0aWMgdm9pZAorcmVtb3ZlX2hhc2hfZnJvbV9kYiAoY29uc3QgZ3J1Yl91aW50OF90ICpo YXNoX2RhdGEsIGNvbnN0IGdydWJfc2l6ZV90IGhhc2hfZGF0YV9zaXplKQoreworICBncnViX3Vp bnQzMl90IGk7CisKKyAgZm9yIChpID0gMDsgaSA8IGRiLnNpZ25hdHVyZV9lbnRyaWVzOyBpKysp CisgICAgeworICAgICAgaWYgKGdydWJfbWVtY21wIChkYi5zaWduYXR1cmVzW2ldLCBoYXNoX2Rh dGEsIGhhc2hfZGF0YV9zaXplKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgZ3J1Yl9kcHJp bnRmICgiYXBwZW5kZWRzaWciLCAicmVtb3ZlZCBkaXN0cnVzdGVkIGhhc2ggJTAyeCUwMnglMDJ4 JTAyeC4uIGZyb20gdGhlIGRiIGxpc3RcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBkYi5z aWduYXR1cmVzW2ldWzBdLCBkYi5zaWduYXR1cmVzW2ldWzFdLCBkYi5zaWduYXR1cmVzW2ldWzJd LAorICAgICAgICAgICAgICAgICAgICAgICAgZGIuc2lnbmF0dXJlc1tpXVszXSk7CisgICAgICAg ICAgZ3J1Yl9mcmVlIChkYi5zaWduYXR1cmVzW2ldKTsKKyAgICAgICAgICBkYi5zaWduYXR1cmVz W2ldID0gTlVMTDsKKyAgICAgICAgICBkYi5zaWduYXR1cmVfc2l6ZVtpXSA9IDA7CisgICAgICAg ICAgYnJlYWs7CisJfQorICAgIH0KK30KKworLyoKKyAqIFJlbW92ZSB0aGUgdHJ1c3RlZCBiaW5h cnkgaGFzaCBmcm9tIHRoZSBkYnggbGlzdCBpZiBwcmVzZW50LgorICogQW5kIGFkZCB0aGVtIHRv IHRoZSBkYiBsaXN0IGlmIGl0IGlzIG5vdCBhbHJlYWR5IHByZXNlbnQuCisgKiBOb3RlOi0gV2hl biBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGlzIGVuYWJsZWQsIHRoaXMgY29tbWFuZCBvbmx5IGFj Y2VwdHMKKyAqIHRoZSBiaW5hcnkgaGFzaCBmaWxlIHRoYXQgaXMgc2lnbmVkIHdpdGggYW4gYXBw ZW5kZWQgc2lnbmF0dXJlLgorICogVGhlIHNpZ25hdHVyZSBpcyB2ZXJpZmllZCBieSB0aGUgYXBw ZW5kZWRzaWcgbW9kdWxlLiBJZiB2ZXJpZmljYXRpb24gc3VjY2VlZHMsCisgKiB0aGUgYmluYXJ5 IGhhc2ggaXMgYWRkZWQgdG8gdGhlIGRiIGxpc3QuIE90aGVyd2lzZSwgYW4gZXJyb3IgaXMgcG9z dGVkIGFuZAorICogdGhlIGJpbmFyeSBoYXNoIGlzIG5vdCBhZGRlZC4KKyAqIFdoZW4gc2lnbmF0 dXJlIHZlcmlmaWNhdGlvbiBpcyBkaXNhYmxlZCwgaXQgYWNjZXB0cyB0aGUgYmluYXJ5IGhhc2gg ZmlsZSB3aXRob3V0CisgKiBhbiBhcHBlbmRlZCBzaWduYXR1cmUgYW5kIGFkZHMgaXQgdG8gdGhl IGRiIGxpc3QuCisgKgorICogQWxzbywgbm90ZSB0aGF0IHRoZSBhZGRpbmcgb2YgdGhlIHRydXN0 ZWQgYmluYXJ5IGhhc2ggdXNpbmcgdGhpcyBjb21tYW5kIGRvZXMKKyAqIG5vdCBwZXJzaXN0IGFj cm9zcyByZWJvb3RzLgorICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorZ3J1Yl9jbWRfZGJfaGFzaCAo Z3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLCBpbnQgYXJnYywgY2hh cioqYXJncykKK3sKKyAgZ3J1Yl9lcnJfdCByYzsKKyAgZ3J1Yl91aW50OF90ICpoYXNoX2RhdGEg PSBOVUxMOworICBncnViX3NpemVfdCBoYXNoX2RhdGFfc2l6ZSA9IDA7CisKKyAgaWYgKGFyZ2Mg IT0gMSkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0FSR1VNRU5ULAorICAg ICAgICAgICAgICAgICAgICAgICAiYSB0cnVzdGVkIGJpbmFyeSBoYXNoIGZpbGUgaXMgZXhwZWN0 ZWQgaW4gQVNDSUkgdGV4dCBmb3JtYXRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIkV4YW1w bGU6XG5cdGFwcGVuZF9hZGRfZGJfaGFzaCA8QklOQVJZIEhBU0ggRklMRT5cbiIpOworCisgIGlm ICgqYXJncyA9PSBOVUxMKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfRklM RU5BTUUsICJtaXNzaW5nIHRydXN0ZWQgYmluYXJ5IGhhc2ggZmlsZSIpOworCisgIHJjID0gcmVh ZF9oYXNoX2Zyb21fZmlsZSAoYXJnc1swXSwgJmhhc2hfZGF0YSwgJmhhc2hfZGF0YV9zaXplKTsK KyAgaWYgKHJjID09IEdSVUJfRVJSX05PTkUpCisgICAgeworICAgICAgZ3J1Yl9kcHJpbnRmICgi YXBwZW5kZWRzaWciLAorICAgICAgICAgICAgICAgICAgICAiYWRkaW5nIGEgdHJ1c3RlZCBiaW5h cnkgaGFzaCAlMDJ4JTAyeCUwMnglMDJ4Li4uXG4gd2l0aCBzaXplIG9mICUiIFBSSXVHUlVCX1NJ WkUgIlxuIiwKKyAgICAgICAgICAgICAgICAgICAgaGFzaF9kYXRhWzBdLCBoYXNoX2RhdGFbMV0s IGhhc2hfZGF0YVsyXSwgaGFzaF9kYXRhWzNdLCBoYXNoX2RhdGFfc2l6ZSk7CisKKyAgICAgIC8q IE9ubHkgYWNjZXB0IFNIQTI1NiwgU0hBMzg0IGFuZCBTSEE1MTIgYmluYXJ5IGhhc2ggKi8KKyAg ICAgIGlmIChoYXNoX2RhdGFfc2l6ZSAhPSAzMiAmJiBoYXNoX2RhdGFfc2l6ZSAhPSA0OCAmJiBo YXNoX2RhdGFfc2l6ZSAhPSA2NCkKKyAgICAgICAgeworICAgICAgICAgIGdydWJfZnJlZSAoaGFz aF9kYXRhKTsKKyAgICAgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX1NJR05B VFVSRSwgInVuYWNjZXB0YWJsZSB0cnVzdGVkIGJpbmFyeSBoYXNoIHR5cGUiKTsKKyAgICAgICAg fQorCisgICAgICBpZiAoaXNfaGFzaF9wcmVzZW50X2luX2RieCAoaGFzaF9kYXRhLCBoYXNoX2Rh dGFfc2l6ZSkgPT0gdHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgIGdydWJfZnJlZSAoaGFzaF9k YXRhKTsKKyAgICAgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQUNDRVNTX0RFTklF RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBhZGQgdHJ1c3RlZCBi aW5hcnkgaGFzaCwgYXMgaXQgaXMgcHJlc2VudCBpbiB0aGUgZGJ4IGxpc3QiKTsKKyAgICAgICAg fQorCisgICAgICBpZiAoaXNfaGFzaF9wcmVzZW50X2luX2RiIChoYXNoX2RhdGEsIGhhc2hfZGF0 YV9zaXplKSA9PSBmYWxzZSkKKyAgICAgICAgeworICAgICAgICAgIHJjID0gYWRkX2hhc2ggKGhh c2hfZGF0YSwgaGFzaF9kYXRhX3NpemUsICZkYi5zaWduYXR1cmVzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICZkYi5zaWduYXR1cmVfc2l6ZSwgJmRiLnNpZ25hdHVyZV9lbnRyaWVzKTsKKyAg ICAgICAgICBpZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICAgICAgICAgIHJjID0gZ3J1Yl9l cnJvciAocmMsICJhZGRpbmcgb2YgdHJ1c3RlZCBiaW5hcnkgaGFzaCBmYWlsZWQiKTsKKyAgICAg ICAgICBlbHNlCisgICAgICAgICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICJhZGRlZCB0cnVzdGVkIGJpbmFyeSBoYXNoICUwMnglMDJ4 JTAyeCUwMnguLi5cbiB0byB0aGUgZGIgbGlzdFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgaGFzaF9kYXRhWzBdLCBoYXNoX2RhdGFbMV0sIGhhc2hfZGF0YVsyXSwgaGFzaF9kYXRhWzNd KTsKKyAgICAgICAgIH0KKyAgICAgICBlbHNlCisgICAgICAgICByYyA9IGdydWJfZXJyb3IgKEdS VUJfRVJSX0VYSVNUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBhZGQg dHJ1c3RlZCBiaW5hcnkgaGFzaCwgYXMgaXQgaXMgcHJlc2VudCBpbiB0aGUgZGIgbGlzdCIpOwor ICAgIH0KKworICBncnViX2ZyZWUgKGhhc2hfZGF0YSk7CisKKyAgcmV0dXJuIHJjOworfQorCisv KgorICogUmVtb3ZlIHRoZSBkaXN0cnVzdGVkIGJpbmFyeS9jZXJ0aWZpY2F0ZSBoYXNoIGZyb20g dGhlIGRiIGxpc3QgaWYgcHJlc2VudC4KKyAqIEFuZCBhZGQgdGhlbSB0byB0aGUgZGJ4IGxpc3Qg aWYgaXQgaXMgbm90IGFscmVhZHkgcHJlc2VudC4KKyAqIE5vdGU6LSBXaGVuIHNpZ25hdHVyZSB2 ZXJpZmljYXRpb24gaXMgZW5hYmxlZCwgdGhpcyBjb21tYW5kIG9ubHkgYWNjZXB0cworICogdGhl IGJpbmFyeS9jZXJ0aWZpY2F0ZSBoYXNoIGZpbGUgdGhhdCBpcyBzaWduZWQgd2l0aCBhbiBhcHBl bmRlZCBzaWduYXR1cmUuCisgKiBUaGUgc2lnbmF0dXJlIGlzIHZlcmlmaWVkIGJ5IHRoZSBhcHBl bmRlZHNpZyBtb2R1bGUuIElmIHZlcmlmaWNhdGlvbiBzdWNjZWVkcywKKyAqIHRoZSBiaW5hcnkv Y2VydGlmaWNhdGUgaGFzaCBpcyBhZGRlZCB0byB0aGUgZGJ4IGxpc3QuIE90aGVyd2lzZSwgYW4g ZXJyb3IgaXMgcG9zdGVkIGFuZAorICogdGhlIGJpbmFyeS9jZXJ0aWZpY2F0ZSBoYXNoIGlzIG5v dCBhZGRlZC4KKyAqIFdoZW4gc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBpcyBkaXNhYmxlZCwgaXQg YWNjZXB0cyB0aGUgYmluYXJ5L2NlcnRpZmljYXRlIGhhc2ggZmlsZSB3aXRob3V0CisgKiBhbiBh cHBlbmRlZCBzaWduYXR1cmUgYW5kIGFkZHMgaXQgdG8gdGhlIGRieCBsaXN0LgorICoKKyAqIEFs c28sIG5vdGUgdGhhdCB0aGUgYWRkaW5nIG9mIHRoZSBkaXN0cnVzdGVkIGJpbmFyeS9jZXJ0aWZp Y2F0ZSBoYXNoIHVzaW5nIHRoaXMgY29tbWFuZCBkb2VzCisgKiBub3QgcGVyc2lzdCBhY3Jvc3Mg cmVib290cy4KKyAqLworc3RhdGljIGdydWJfZXJyX3QKK2dydWJfY21kX2RieF9oYXNoIChncnVi X2V4dGNtZF9jb250ZXh0X3QgY3R4dCwgaW50IGFyZ2MgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkp LAorICAgICAgICAgICAgICAgICAgIGNoYXIgKiphcmdzIF9fYXR0cmlidXRlX18gKCh1bnVzZWQp KSkKK3sKKyAgZ3J1Yl9lcnJfdCByYzsKKyAgZ3J1Yl91aW50OF90ICpoYXNoX2RhdGEgPSBOVUxM OworICBncnViX3NpemVfdCBoYXNoX2RhdGFfc2l6ZSA9IDA7CisgIGNoYXIgKmZpbGVfcGF0aDsK KworICBpZiAoIWN0eHQtPnN0YXRlW09QVElPTl9CSU5BUllfSEFTSF0uc2V0ICYmICFjdHh0LT5z dGF0ZVtPUFRJT05fQ0VSVF9IQVNIXS5zZXQpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJf RVJSX0JBRF9BUkdVTUVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgImEgZGlzdHJ1c3RlZCBj ZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCBmaWxlIGlzIGV4cGVjdGVkIGluIEFTQ0lJIHRleHQgZm9y bWF0XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJFeGFtcGxlOlxuXHRhcHBlbmRfYWRkX2Ri eF9oYXNoIFtvcHRpb25dIDxGSUxFPlxuIgorICAgICAgICAgICAgICAgICAgICAgICAib3B0aW9u OlxuWy1ifC0tYmluYXJ5LWhhc2hdIEZJTEUgW0JJTkFSWSBIQVNIIEZJTEVdXG4iCisgICAgICAg ICAgICAgICAgICAgICAgICJbLWN8LS1jZXJ0LWhhc2hdIEZJTEUgW0NFUlRGSUNBVEUgSEFTSCBG SUxFXVxuIik7CisKKyAgaWYgKGN0eHQtPnN0YXRlW09QVElPTl9CSU5BUllfSEFTSF0uYXJnID09 IE5VTEwgJiYgY3R4dC0+c3RhdGVbT1BUSU9OX0NFUlRfSEFTSF0uYXJnID09IE5VTEwpCisgICAg cmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9GSUxFTkFNRSwgIm1pc3NpbmcgZGlzdHJ1 c3RlZCBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCBmaWxlIik7CisKKyAgaWYgKGN0eHQtPnN0YXRl W09QVElPTl9CSU5BUllfSEFTSF0uYXJnICE9IE5VTEwpCisgICAgZmlsZV9wYXRoID0gY3R4dC0+ c3RhdGVbT1BUSU9OX0JJTkFSWV9IQVNIXS5hcmc7CisgIGVsc2UKKyAgICBmaWxlX3BhdGggPSBj dHh0LT5zdGF0ZVtPUFRJT05fQ0VSVF9IQVNIXS5hcmc7CisKKyAgcmMgPSByZWFkX2hhc2hfZnJv bV9maWxlIChmaWxlX3BhdGgsICZoYXNoX2RhdGEsICZoYXNoX2RhdGFfc2l6ZSk7CisgIGlmIChy YyA9PSBHUlVCX0VSUl9OT05FKQorICAgIHsKKyAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVk c2lnIiwKKyAgICAgICAgICAgICAgICAgICAgImFkZGluZyBhIGRpc3RydXN0ZWQgY2VydGlmaWNh dGUvYmluYXJ5IGhhc2ggJTAyeCUwMnglMDJ4JTAyeC4uLlxuIgorICAgICAgICAgICAgICAgICAg ICAiIHdpdGggc2l6ZSBvZiAlIiBQUkl1R1JVQl9TSVpFICJcbiIsIGhhc2hfZGF0YVswXSwgaGFz aF9kYXRhWzFdLAorICAgICAgICAgICAgICAgICAgICBoYXNoX2RhdGFbMl0sIGhhc2hfZGF0YVsz XSwgaGFzaF9kYXRhX3NpemUpOworCisgICAgICBpZiAoY3R4dC0+c3RhdGVbT1BUSU9OX0JJTkFS WV9IQVNIXS5zZXQgfHwgY3R4dC0+c3RhdGVbT1BUSU9OX0NFUlRfSEFTSF0uc2V0KQorICAgICAg ICB7CisgICAgICAgICAgLyogT25seSBhY2NlcHQgU0hBMjU2LCBTSEEzODQgYW5kIFNIQTUxMiBj ZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCAqLworICAgICAgICAgIGlmIChoYXNoX2RhdGFfc2l6ZSAh PSAzMiAmJiBoYXNoX2RhdGFfc2l6ZSAhPSA0OCAmJiBoYXNoX2RhdGFfc2l6ZSAhPSA2NCkKKyAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcmMgPSBncnViX2Vycm9yIChHUlVCX0VSUl9CQURf U0lHTkFUVVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmFjY2VwdGFibGUg ZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCB0eXBlIik7CisgICAgICAgICAgICAg IGdvdG8gY2xlYW47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgLyogUmVtb3Zl IGRpc3RydXN0ZWQgaGFzaCBmcm9tIHRoZSBkYiBsaXN0IGlmIHByZXNlbnQuICovCisgICAgICBy ZW1vdmVfaGFzaF9mcm9tX2RiIChoYXNoX2RhdGEsIGhhc2hfZGF0YV9zaXplKTsKKworICAgICAg aWYgKGlzX2hhc2hfcHJlc2VudF9pbl9kYnggKGhhc2hfZGF0YSwgaGFzaF9kYXRhX3NpemUpID09 IHRydWUpCisgICAgICAgIHsKKyAgICAgICAgICByYyA9IGdydWJfZXJyb3IgKEdSVUJfRVJSX0VY SVNUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgYWRkIGRpc3RydXN0 ZWQgY2VydGlmaWNhdGUvYmluYXJ5IGhhc2gsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICJhcyBpdCBpcyBwcmVzZW50IGluIHRoZSBkYnggbGlzdCIpOworICAgICAgICAgIGdvdG8gY2xl YW47CisgICAgICAgIH0KKworICAgICAgcmMgPSBhZGRfaGFzaCAoaGFzaF9kYXRhLCBoYXNoX2Rh dGFfc2l6ZSwgJmRieC5zaWduYXR1cmVzLAorICAgICAgICAgICAgICAgICAgICAgJmRieC5zaWdu YXR1cmVfc2l6ZSwgJmRieC5zaWduYXR1cmVfZW50cmllcyk7CisgICAgICBpZiAocmMgIT0gR1JV Ql9FUlJfTk9ORSkKKyAgICAgICAgcmMgPSBncnViX2Vycm9yIChyYywgImFkZGluZyBvZiBkaXN0 cnVzdGVkIGJpbmFyeS9jZXJ0aWZpY2F0ZSBoYXNoIGZhaWxlZCIpOworICAgICAgZWxzZQorICAg ICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsCisgICAgICAgICAgICAgICAgICAgICAg ImFkZGVkIGRpc3RydXN0ZWQgYmluYXJ5L2NlcnRpZmljYXRlIGhhc2ggJTAyeCUwMnglMDJ4JTAy eC4uLlxuIHRvIHRoZSBkYnggbGlzdFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICBoYXNoX2Rh dGFbMF0sIGhhc2hfZGF0YVsxXSwgaGFzaF9kYXRhWzJdLCBoYXNoX2RhdGFbM10pOworICAgIH0K KworIGNsZWFuOgorICBncnViX2ZyZWUgKGhhc2hfZGF0YSk7CisKKyAgcmV0dXJuIHJjOworfQor CiBzdGF0aWMgZ3J1Yl9lcnJfdAogYXBwZW5kZWRzaWdfaW5pdCAoZ3J1Yl9maWxlX3QgaW8gX19h dHRyaWJ1dGVfXyAoKHVudXNlZCkpLCBlbnVtIGdydWJfZmlsZV90eXBlIHR5cGUsCiAgICAgICAg ICAgICAgICAgICB2b2lkICoqY29udGV4dCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGVudW0g Z3J1Yl92ZXJpZnlfZmxhZ3MgKmZsYWdzKQpAQCAtOTMyLDYgKzEzMDMsMTEgQEAgYXBwZW5kZWRz aWdfaW5pdCAoZ3J1Yl9maWxlX3QgaW8gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLCBlbnVtIGdy dWJfZmlsZV90eXBlIHQKICAgICAgICAgICogdmVyaWZpZXIsIGJ1dCB3ZSBsYWNrIHRoZSBodWJy aXMgcmVxdWlyZWQgdG8gdGFrZSB0aGlzIG9uLiBJbnN0ZWFkLAogICAgICAgICAgKiByZXF1aXJl IHRoYXQgaXQgaGF2ZSBhbiBhcHBlbmRlZCBzaWduYXR1cmUuCiAgICAgICAgICAqLworICAgICAg Y2FzZSBHUlVCX0ZJTEVfVFlQRV9IQVNIX1RSVVNUOgorICAgICAgICAvKgorICAgICAgICAgKiBU aGlzIGlzIGEgY2VydGlmaWNhdGUvYmluYXJ5IGhhc2ggdG8gYWRkIHRvIGRiL2RieC4KKyAgICAg ICAgICogVGhpcyBuZWVkcyB0byBiZSB2ZXJpZmllZCBvciBibG9ja2VkLgorICAgICAgICAgKi8K ICAgICAgIGNhc2UgR1JVQl9GSUxFX1RZUEVfTElOVVhfS0VSTkVMOgogICAgICAgY2FzZSBHUlVC X0ZJTEVfVFlQRV9HUlVCX01PRFVMRToKICAgICAgICAgLyoKQEAgLTk4NSw3ICsxMzYxLDkgQEAg c3RhdGljIHN0cnVjdCBncnViX2ZzIHBzZXVkb19mcyA9IHsKICAgLmZzX3JlYWQgPSBwc2V1ZG9f cmVhZAogfTsKIAotc3RhdGljIGdydWJfY29tbWFuZF90IGNtZF92ZXJpZnksIGNtZF9saXN0X2Ri LCBjbWRfZGJ4X2NlcnQsIGNtZF9kYl9jZXJ0Oworc3RhdGljIGdydWJfZXh0Y21kX3QgY21kX2Ri eF9oYXNoOworc3RhdGljIGdydWJfY29tbWFuZF90IGNtZF92ZXJpZnksIGNtZF9saXN0X2RiLCBj bWRfZGJfY2VydCwgY21kX2RiX2hhc2gsCisgICAgICAgICAgICAgICAgICAgICAgY21kX2xpc3Rf ZGJ4LCBjbWRfZGJ4X2NlcnQ7CiAKIC8qIENoZWNrIHRoZSBjZXJ0aWZpY2F0ZSBoYXNoIHByZXNl bmNlIGluIHRoZSBQS1MgZGJ4IGxpc3QuICovCiBzdGF0aWMgYm9vbApAQCAtMTI4Nyw4ICsxNjY1 LDI3IEBAIHJlZ2lzdGVyX2FwcGVuZGVkX3NpZ25hdHVyZXNfY21kICh2b2lkKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIlNob3cgdGhlIGxpc3Qgb2YgdHJ1c3Rl ZCBYLjUwOSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgZGIgbGlzdCIpKTsKICAgY21kX2RiX2NlcnQg PSBncnViX3JlZ2lzdGVyX2NvbW1hbmQgKCJhcHBlbmRfYWRkX2RiX2NlcnQiLCBncnViX2NtZF9k Yl9jZXJ0LCBOXygiWDUwOV9DRVJUSUZJQ0FURSIpLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTl8oIkFkZCB0cnVzdGVkIFg1MDlfQ0VSVElGSUNBVEUgdG8gdGhlIGRi IGxpc3QiKSk7Ci0gIGNtZF9kYnhfY2VydCA9IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImFwcGVu ZF9ybV9kYnhfY2VydCIsIGdydWJfY21kX2RieF9jZXJ0LCBOXygiWDUwOV9DRVJUSUZJQ0FURSIp LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5fKCJSZW1vdmUgZGlz dHJ1c3RlZCBYNTA5X0NFUlRJRklDQVRFIGZyb20gdGhlIGRiIGxpc3QiKSk7CisgIC8qCisgICAq IElmIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMgZW5hYmxlZCB3aXRoIGR5bmFtaWMga2V5IG1h bmFnZW1lbnQgbW9kZSwKKyAgICogcmVnaXN0ZXIgZHluYW1pYyBzZWN1cmUgYm9vdCBHUlVCIGNv bW1hbmRzLgorICAgKi8KKyAgaWYgKGdydWJfcGtzX3VzZV9rZXlzdG9yZSA9PSB0cnVlKQorICAg IHsKKyAgICAgIGNtZF9kYnhfY2VydCA9IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImFwcGVuZF9h ZGRfZGJ4X2NlcnQiLCBncnViX2NtZF9kYnhfY2VydCwgTl8oIlg1MDlfQ0VSVElGSUNBVEUiKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIkFkZCBkaXN0 cnVzdGVkIFg1MDlfQ0VSVElGSUNBVEUgdG8gdGhlIGRieCBsaXN0IikpOworICAgICAgY21kX2xp c3RfZGJ4ID0gZ3J1Yl9yZWdpc3Rlcl9jb21tYW5kICgiYXBwZW5kX2xpc3RfZGJ4IiwgZ3J1Yl9j bWRfbGlzdF9kYngsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5fKCJTaG93IHRoZSBsaXN0IG9mIGRpc3RydXN0ZWQgY2VydGlmaWNhdGVzIGFuZCIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBjZXJ0aWZpY2F0ZS9i aW5hcnkgaGFzaGVzIGZyb20gdGhlIGRieCBsaXN0IikpOworICAgICAgY21kX2RiX2hhc2ggPSBn cnViX3JlZ2lzdGVyX2NvbW1hbmQgKCJhcHBlbmRfYWRkX2RiX2hhc2giLCBncnViX2NtZF9kYl9o YXNoLCBOXygiQklOQVJZIEhBU0ggRklMRSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5fKCJBZGQgdHJ1c3RlZCBCSU5BUlkgSEFTSCB0byB0aGUgZGIgbGlz dC4iKSk7CisgICAgICBjbWRfZGJ4X2hhc2ggPSBncnViX3JlZ2lzdGVyX2V4dGNtZCAoImFwcGVu ZF9hZGRfZGJ4X2hhc2giLCBncnViX2NtZF9kYnhfaGFzaCwgMCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOXygiWy1ifC0tYmluYXJ5LWhhc2hdIEZJTEUgW0JJ TkFSWSBIQVNIIEZJTEVdXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlstY3wtLWNlcnQtaGFzaF0gRklMRSBbQ0VSVEZJQ0FURSBIQVNIIEZJTEVdIiksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIkFkZCBkaXN0cnVz dGVkIENFUlRGSUNBVEUvQklOQVJZIEhBU0ggdG8gdGhlIGRieCBsaXN0LiIpLCBvcHRpb25zKTsK KyAgICB9CisgIGVsc2UKKyAgICBjbWRfZGJ4X2NlcnQgPSBncnViX3JlZ2lzdGVyX2NvbW1hbmQg KCJhcHBlbmRfcm1fZGJ4X2NlcnQiLCBncnViX2NtZF9kYnhfY2VydCwgTl8oIlg1MDlfQ0VSVElG SUNBVEUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5fKCJS ZW1vdmUgZGlzdHJ1c3RlZCBYNTA5X0NFUlRJRklDQVRFIGZyb20gdGhlIGRiIGxpc3QiKSk7CiB9 CiAKIC8qIEl0IHVucmVnaXN0ZXJzIHRoZSBhcHBlbmRlZCBzaWduYXR1cmVzIEdSVUIgY29tbWFu ZHMuICovCkBAIC0xMjk5LDYgKzE2OTYsMTYgQEAgdW5yZWdpc3Rlcl9hcHBlbmRlZF9zaWduYXR1 cmVzX2NtZCAodm9pZCkKICAgZ3J1Yl91bnJlZ2lzdGVyX2NvbW1hbmQgKGNtZF9saXN0X2RiKTsK ICAgZ3J1Yl91bnJlZ2lzdGVyX2NvbW1hbmQgKGNtZF9kYl9jZXJ0KTsKICAgZ3J1Yl91bnJlZ2lz dGVyX2NvbW1hbmQgKGNtZF9kYnhfY2VydCk7CisgIC8qCisgICAqIElmIHNpZ25hdHVyZSB2ZXJp ZmljYXRpb24gaXMgZW5hYmxlZCB3aXRoIGR5bmFtaWMga2V5IG1hbmFnZW1lbnQgbW9kZSwKKyAg ICogdW5yZWdpc3RlciBkeW5hbWljIHNlY3VyZSBib290IEdSVUIgY29tbWFuZHMuCisgICAqLwor ICBpZiAoZ3J1Yl9wa3NfdXNlX2tleXN0b3JlID09IHRydWUpCisgICAgeworICAgICAgZ3J1Yl91 bnJlZ2lzdGVyX2NvbW1hbmQgKGNtZF9saXN0X2RieCk7CisgICAgICBncnViX3VucmVnaXN0ZXJf Y29tbWFuZCAoY21kX2RiX2hhc2gpOworICAgICAgZ3J1Yl91bnJlZ2lzdGVyX2V4dGNtZCAoY21k X2RieF9oYXNoKTsKKyAgICB9CiB9CiAKIEdSVUJfTU9EX0lOSVQgKGFwcGVuZGVkc2lnKQpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9ncnViL2ZpbGUuaCBiL2luY2x1ZGUvZ3J1Yi9maWxlLmgKaW5kZXgg ZDY3OGRlMDYzLi4xNmE0YjdkMjYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi9maWxlLmgKKysr IGIvaW5jbHVkZS9ncnViL2ZpbGUuaApAQCAtMTE1LDYgKzExNSw4IEBAIGVudW0gZ3J1Yl9maWxl X3R5cGUKICAgICBHUlVCX0ZJTEVfVFlQRV9IQVNITElTVCwKICAgICAvKiBGaWxlIGhhc2hlZCBi eSBoYXNoc3VtLiAgKi8KICAgICBHUlVCX0ZJTEVfVFlQRV9UT19IQVNILAorICAgIC8qIEZpbGUg aG9sZGluZyBjZXJ0aWZpY2lhdGUvYmluYXJ5IGhhc2ggdG8gYWRkIHRvIGRiL2RieC4gKi8KKyAg ICBHUlVCX0ZJTEVfVFlQRV9IQVNIX1RSVVNULAogICAgIC8qIEtleWJvYXJkIGxheW91dC4gICov CiAgICAgR1JVQl9GSUxFX1RZUEVfS0VZQk9BUkRfTEFZT1VULAogICAgIC8qIFBpY3R1cmUgZmls ZS4gICovCi0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KR3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1Yi1k ZXZlbEBnbnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dydWIt ZGV2ZWwK