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 7E282C83F09 for ; Wed, 9 Jul 2025 11:51:27 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uZTJa-0007jo-QL; Wed, 09 Jul 2025 07:50:18 -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 1uZTId-0006Vs-Ed for grub-devel@gnu.org; Wed, 09 Jul 2025 07:49:22 -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 1uZTIZ-0006yz-1Q for grub-devel@gnu.org; Wed, 09 Jul 2025 07:49:18 -0400 Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56994ZAS014870; Wed, 9 Jul 2025 11:49:11 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=zkWSEQ2ulVHeG9DRb W2mq1oDAuaokAD1ME3E3oE8X6c=; b=h6QxYsWj5emhWj6Y7GAq0R5I5PEYHw6hG PsvYXVg5As6o5ERae4Y2LOxjeSipErhYUWU2wTZWBjRJABQYEY1pjvXioX6a7jMI QCjfTUpiaRSt5T19+zSUhdX3QmKaoLka+geJ0biNlA2+2EPBfGDX7Grf/Dvb0nJC yjBKM94ckW6hTlDW37daYIoxt90pvNEX7TZiVvbaGGppudTpM0Qtt3z/yVC3ABH2 pOuHmtToEFU1L9X4RdzRdSQzsCYSDN/RL1IsZpw6IXtz7rjCxGKYHetNxPcGVxy5 LPp0OFGRhTgyCv5uUk12jZytghgguD6/AbBDg8OW1HFRnxgNNiO8A== 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 47pur75yan-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Jul 2025 11:49:10 +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 569B0Cg4025642; Wed, 9 Jul 2025 11:49:09 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 47qfcp819s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Jul 2025 11:49:09 +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 569Bn56i54853962 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 9 Jul 2025 11:49:05 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 550A820043; Wed, 9 Jul 2025 11:49:05 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CA4EA20040; Wed, 9 Jul 2025 11:49:02 +0000 (GMT) Received: from localhost.localdomain (unknown [9.39.27.9]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 9 Jul 2025 11:49:02 +0000 (GMT) From: Sudhakar Kuppusamy To: grub-devel@gnu.org Cc: jan.setjeeilers@oracle.com, julian.klode@canonical.com, mate.kukri@canonical.com, pjones@redhat.com, msuchanek@suse.com, mlewando@redhat.com, nayna@linux.ibm.com, ltcgcw@linux.vnet.ibm.com, ssrish@linux.ibm.com, stefanb@linux.ibm.com, avnish@linux.ibm.com, Sudhakar Kuppusamy , dja@axtens.net Subject: [PATCH v4 17/23] appendedsig: create db and dbx lists Date: Wed, 9 Jul 2025 17:15:34 +0530 Message-Id: <20250709114540.58608-18-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250709114540.58608-1-sudhakar@linux.ibm.com> References: <20250709114540.58608-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA5MDEwNiBTYWx0ZWRfX21S7icbkDKa9 ZxFHiwINxiFkiw8axi33CTHTFMIy1Ww/h9ofiV7fcYVBsTjG8yh8+rH12wqlGR9FPSXxeZ8od/q /lHG9WQ9jFXZzZ8+UYl65M2R+dBq9/7R6OKUdiSW6lo8blLoVUM3oqrkpLUvWwrAH0Ql6f+X7ki 8ixsLEOLGNBjm2ZMYAqHIWEztWsghXlOGLIDmj44f7lkiYXis3Vt3ckif8QB55iumI1bXEjhdg8 ktdEReeShppzZJdpIUof6I2OAsAlGgo5869E/+LuEey5Q232tqq1Dzgt8DAu+a5sskAGo34G5h4 yflEtos5FXDJG5pX6/3HBgcdBDJyw/M5bWSr62tYuxtLYKrJLEZlu447wzbRMo7T3q7R7tg1Py1 U8P3Ym311ca2s11Zyo5ZlpMx78PegHcfgR9yZRdLrCt6ZbUg/k4i+Tas3zPgxQceOPsK9g72 X-Proofpoint-GUID: OWZ-CCN-ocjh8ma1q2LEjrNKizrHzebk X-Proofpoint-ORIG-GUID: OWZ-CCN-ocjh8ma1q2LEjrNKizrHzebk X-Authority-Analysis: v=2.4 cv=W/M4VQWk c=1 sm=1 tr=0 ts=686e5736 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=Wb1JkmetP80A:10 a=NEAV23lmAAAA:8 a=VnNF1IyMAAAA:8 a=YHdhcJz9JjMUaA9YugAA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-09_02,2025-07-08_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 mlxscore=0 priorityscore=1501 adultscore=0 clxscore=1015 suspectscore=0 spamscore=0 lowpriorityscore=0 mlxlogscore=999 bulkscore=0 impostorscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2507090106 Received-SPF: pass client-ip=148.163.156.1; envelope-from=sudhakar@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The development of GNU GRUB Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org SWYgc2VjdXJlIGJvb3QgaXMgZW5hYmxlZCB3aXRoIGEgc3RhdGljIGtleSwgdGhlIHRydXN0ZWQg Y2VydGlmaWNhdGVzIHdpbGwgYmUgZXh0cmFjdGVkCmZyb20gdGhlIEdSVUIgRUxGIE5PVEUgYW5k IGFkZGluZyBpbiB0aGUgZGIgbGlzdC4gVGhlIGRiIGxpc3QgaXMgdXNlZCBieSBHUlVCCmZvciBr ZXJuZWwgdmVyaWZpY2F0aW9uLgoKSWYgc2VjdXJlIGJvb3QgaXMgZW5hYmxlZCB3aXRoIGEgZHlu YW1pYyBrZXksIHRoZSB0cnVzdGVkIGNlcnRpZmljYXRlcyBhbmQKY2VydGlmaWNhdGUvYmluYXJ5 IGhhc2ggd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgUEtTIGFuZCBhZGRpbmcgaW4gdGhlIGRi IGxpc3QuClRoZSBkaXN0cnVzdGVkIGNlcnRpZmljYXRlcywgY2VydGlmaWNhdGUvYmluYXJ5IGhh c2ggZnJvbSB0aGUgUEtTIGFuZCBhZGRpbmcgaW4KdGhlIGRieCBsaXN0LiBCb3RoIGRieCBhbmQg ZGIgbGlzdCBhcmUgdXNlZCBieSBHUlVCIGZvciBrZXJuZWwgdmVyaWZpY2F0aW9uLgoKTm90ZTot CgpJZiB0aGUgY2VydGlmaWNhdGUgb3IgdGhlIGNlcnRpZmljYXRlIGhhc2ggZXhpc3RzIGluIHRo ZSBkYnggbGlzdCwgdGhlbgpyZWplY3QgdGhlIGNlcnRpZmljYXRlL2NlcnRpZmljYXRlIGhhc2gg YmVmb3JlIGFkZGluZyBpdCBpbiB0aGUgZGIgbGlzdC4KClNpZ25lZC1vZmYtYnk6IFN1ZGhha2Fy IEt1cHB1c2FteSA8c3VkaGFrYXJAbGludXguaWJtLmNvbT4KUmV2aWV3ZWQtYnk6IFN0ZWZhbiBC ZXJnZXIgPHN0ZWZhbmJAbGludXguaWJtLmNvbT4KUmV2aWV3ZWQtYnk6IEF2bmlzaCBDaG91aGFu IDxhdm5pc2hAbGludXguaWJtLmNvbT4KLS0tCiBncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRz aWcvYXBwZW5kZWRzaWcuYyB8IDU1OCArKysrKysrKysrKysrKysrKy0tCiBpbmNsdWRlL2dydWIv Y3J5cHRvLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBpbmNsdWRlL2dydWIvZWZp L3Brcy5oICAgICAgICAgICAgICAgICAgICAgICB8IDExMiArKysrCiAzIGZpbGVzIGNoYW5nZWQs IDYyOSBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBp bmNsdWRlL2dydWIvZWZpL3Brcy5oCgpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL2Fw cGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMgYi9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcv YXBwZW5kZWRzaWcuYwppbmRleCBlMjZmYzk3MjQuLjQ4MTA0ZDYzZCAxMDA2NDQKLS0tIGEvZ3J1 Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMKKysrIGIvZ3J1Yi1jb3Jl L2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMKQEAgLTM0LDEzICszNCwxNiBAQAog I2luY2x1ZGUgPGxpYnRhc24xLmg+CiAjaW5jbHVkZSA8Z3J1Yi9lbnYuaD4KICNpbmNsdWRlIDxn cnViL2xvY2tkb3duLmg+Ci0KKyNpbmNsdWRlIDxncnViL2VmaS9wa3MuaD4KKyNpbmNsdWRlIDxn cnViL3Bvd2VycGMvaWVlZTEyNzUvcGxhdGZvcm1fa2V5c3RvcmUuaD4KICNpbmNsdWRlICJhcHBl bmRlZHNpZy5oIgogCiBHUlVCX01PRF9MSUNFTlNFICgiR1BMdjMrIik7CiAKIC8qIFB1YmxpYyBr ZXkgdHlwZS4gKi8KLSNkZWZpbmUgR1JVQl9QS0VZX0lEX1BLQ1M3IDIKKyNkZWZpbmUgR1JVQl9Q S0VZX0lEX1BLQ1M3ICAyCisvKiBHVUlEIHNpemUuICovCisjZGVmaW5lIEdSVUJfR1VJRF9TSVpF ICAgICAgKHNpemVvZiAoZ3J1Yl9wYWNrZWRfZ3VpZF90KSkKIAogLyogQXBwZW5kZWQgc2lnbmF0 dXJlIG1hZ2ljIHN0cmluZy4gKi8KIHN0YXRpYyBjb25zdCBjaGFyIG1hZ2ljW10gPSAifk1vZHVs ZSBzaWduYXR1cmUgYXBwZW5kZWR+XG4iOwpAQCAtNjgsOCArNzEsMzAgQEAgc3RydWN0IGdydWJf YXBwZW5kZWRfc2lnbmF0dXJlCiAgIHN0cnVjdCBwa2NzN19zaWduZWREYXRhIHBrY3M3OyAgICAg ICAgLyogUGFyc2VkIFBLQ1MjNyBkYXRhLiAqLwogfTsKIAotLyogVHJ1c3RlZCBjZXJ0aWZpY2F0 ZXMgZm9yIHZlcmlmeWluZyBhcHBlbmRlZCBzaWduYXR1cmVzLiAqLwotc3RydWN0IHg1MDlfY2Vy dGlmaWNhdGUgKmRiOworLyogVGhpcyByZXByZXNlbnRzIGEgZGIvZGJ4IGxpc3QuICovCitzdHJ1 Y3QgZ3J1Yl9kYXRhYmFzZQoreworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydHM7IC8q IENlcnRpZmljYXRlcy4gKi8KKyAgZ3J1Yl9zaXplX3QgY2VydF9lbnRyaWVzOyAgICAgICAvKiBO dW1iZXIgb2YgY2VydGlmaWNhdGVzLiAqLworICBncnViX3VpbnQ4X3QgKipzaWduYXR1cmVzOyAg ICAgIC8qIENlcnRpZmljYXRlL2JpbmFyeSBoYXNoZXMuICovCisgIGdydWJfc2l6ZV90ICpzaWdu YXR1cmVfc2l6ZTsgICAgLyogU2l6ZSBvZiBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaGVzLiAqLwor ICBncnViX3NpemVfdCBzaWduYXR1cmVfZW50cmllczsgIC8qIE51bWJlciBvZiBjZXJ0aWZpY2F0 ZS9iaW5hcnkgaGFzaGVzLiAqLworfTsKKworLyogVGhlIGRiIGxpc3QgKi8KK3N0cnVjdCBncnVi X2RhdGFiYXNlIGRiID0gey5jZXJ0cyA9IE5VTEwsIC5jZXJ0X2VudHJpZXMgPSAwLCAuc2lnbmF0 dXJlcyA9IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2lnbmF0dXJlX3NpemUg PSBOVUxMLCAuc2lnbmF0dXJlX2VudHJpZXMgPSAwfTsKKworLyogVGhlIGRieCBsaXN0ICovCitz dHJ1Y3QgZ3J1Yl9kYXRhYmFzZSBkYnggPSB7LmNlcnRzID0gTlVMTCwgLmNlcnRfZW50cmllcyA9 IDAsIC5zaWduYXR1cmVzID0gTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2ln bmF0dXJlX3NpemUgPSBOVUxMLCAuc2lnbmF0dXJlX2VudHJpZXMgPSAwfTsKKworLyogRnJlZSBk YiBsaXN0IG1lbW9yeSAqLworc3RhdGljIHZvaWQKK2ZyZWVfZGJfbGlzdCAodm9pZCk7CisvKiBG cmVlIGRieCBsaXN0IG1lbW9yeSAqLworc3RhdGljIHZvaWQKK2ZyZWVfZGJ4X2xpc3QgKHZvaWQp OwogCiBzdGF0aWMgZW51bQogewpAQCAtNzgsNiArMTAzLDIwMSBAQCBzdGF0aWMgZW51bQogICBD SEVDS19TSUdTX0ZPUkNFRCA9IDIKIH0gY2hlY2tfc2lncyA9IENIRUNLX1NJR1NfTk87CiAKKy8q CisgKiBHVUlEIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgaGFzaGluZyBmdW5jdGlvbiBh bmQKKyAqIGdlbmVyYXRlIHRoZSBoYXNoIHVzaW5nIGRldGVybWluZWQgaGFzaGluZyBmdW5jdGlv bi4KKyAqLworc3RhdGljIGdydWJfZXJyX3QKK2dldF9oYXNoIChjb25zdCBncnViX3BhY2tlZF9n dWlkX3QgKmd1aWQsIGNvbnN0IGdydWJfdWludDhfdCAqZGF0YSwgY29uc3QgZ3J1Yl9zaXplX3Qg ZGF0YV9zaXplLAorICAgICAgICAgIGdydWJfdWludDhfdCAqaGFzaCwgZ3J1Yl9zaXplX3QgKmhh c2hfc2l6ZSkKK3sKKyAgZ2NyeV9tZF9zcGVjX3QgKmhhc2hfZnVuYyA9IE5VTEw7CisKKyAgaWYg KGd1aWQgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfT1VUX09GX1JB TkdFLCAiR1VJRCBpcyBlbXB0eS4iKTsKKworICBpZiAoZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVC X1BLU19DRVJUX1NIQTI1Nl9HVUlELCBHUlVCX0dVSURfU0laRSkgPT0gMCB8fAorICAgICAgZ3J1 Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1g1MDlfU0hBMjU2X0dVSUQsIEdSVUJfR1VJ RF9TSVpFKSA9PSAwKQorICAgIGhhc2hfZnVuYyA9ICZfZ2NyeV9kaWdlc3Rfc3BlY19zaGEyNTY7 CisgIGVsc2UgaWYgKGdydWJfbWVtY21wIChndWlkLCAmR1JVQl9QS1NfQ0VSVF9TSEEzODRfR1VJ RCwgR1JVQl9HVUlEX1NJWkUpID09IDAgfHwKKyAgICAgICAgICAgZ3J1Yl9tZW1jbXAgKGd1aWQs ICZHUlVCX1BLU19DRVJUX1g1MDlfU0hBMzg0X0dVSUQsIEdSVUJfR1VJRF9TSVpFKSA9PSAwKQor ICAgIGhhc2hfZnVuYyA9ICZfZ2NyeV9kaWdlc3Rfc3BlY19zaGEzODQ7CisgIGVsc2UgaWYgKGdy dWJfbWVtY21wIChndWlkLCAmR1JVQl9QS1NfQ0VSVF9TSEE1MTJfR1VJRCwgR1JVQl9HVUlEX1NJ WkUpID09IDAgfHwKKyAgICAgICAgICAgZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJU X1g1MDlfU0hBNTEyX0dVSUQsIEdSVUJfR1VJRF9TSVpFKSA9PSAwKQorICAgIGhhc2hfZnVuYyA9 ICZfZ2NyeV9kaWdlc3Rfc3BlY19zaGE1MTI7CisgIGVsc2UKKyAgICByZXR1cm4gZ3J1Yl9lcnJv ciAoR1JVQl9FUlJfT1VUX09GX1JBTkdFLCAidW5zdXBwb3J0ZWQgR1VJRCBmb3IgaGFzaC4iKTsK KworICBncnViX21lbXNldCAoaGFzaCwgMCwgR1JVQl9NQVhfSEFTSF9TSVpFKTsKKyAgZ3J1Yl9j cnlwdG9faGFzaCAoaGFzaF9mdW5jLCBoYXNoLCBkYXRhLCBkYXRhX3NpemUpOworICAqaGFzaF9z aXplID0gIGhhc2hfZnVuYy0+bWRsZW47CisKKyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7Cit9CisK Ky8qIEFkZCB0aGUgY2VydGlmaWNhdGUvYmluYXJ5IGhhc2ggaW50byB0aGUgZGIvZGJ4IGxpc3Qu ICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorYWRkX2hhc2ggKGNvbnN0IGdydWJfdWludDhfdCAqKmRh dGEsIGNvbnN0IGdydWJfc2l6ZV90IGRhdGFfc2l6ZSwKKyAgICAgICAgICBncnViX3VpbnQ4X3Qg Kioqc2lnbmF0dXJlX2xpc3QsIGdydWJfc2l6ZV90ICoqc2lnbmF0dXJlX3NpemVfbGlzdCwKKyAg ICAgICAgICBncnViX3NpemVfdCAqc2lnbmF0dXJlX2xpc3RfZW50cmllcykKK3sKKyAgZ3J1Yl91 aW50OF90ICoqc2lnbmF0dXJlcyA9ICpzaWduYXR1cmVfbGlzdDsKKyAgZ3J1Yl9zaXplX3QgKnNp Z25hdHVyZV9zaXplID0gKnNpZ25hdHVyZV9zaXplX2xpc3Q7CisgIGdydWJfc2l6ZV90IHNpZ25h dHVyZV9lbnRyaWVzID0gKnNpZ25hdHVyZV9saXN0X2VudHJpZXM7CisKKyAgaWYgKCpkYXRhID09 IE5VTEwgfHwgZGF0YV9zaXplID09IDApCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJS X09VVF9PRl9SQU5HRSwgImNlcnRpZmljYXRlL2JpbmFyeS1oYXNoIGRhdGEgb3Igc2l6ZSBpcyBl bXB0eS4iKTsKKworICBzaWduYXR1cmVzID0gZ3J1Yl9yZWFsbG9jIChzaWduYXR1cmVzLCBzaXpl b2YgKGdydWJfdWludDhfdCAqKSAqIChzaWduYXR1cmVfZW50cmllcyArIDEpKTsKKyAgc2lnbmF0 dXJlX3NpemUgPSBncnViX3JlYWxsb2MgKHNpZ25hdHVyZV9zaXplLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mIChncnViX3NpemVfdCkgKiAoc2lnbmF0dXJlX2VudHJp ZXMgKyAxKSk7CisKKyAgaWYgKHNpZ25hdHVyZXMgPT0gTlVMTCB8fCBzaWduYXR1cmVfc2l6ZSA9 PSBOVUxMKQorICAgIHsKKyAgICAgIC8qCisgICAgICAgKiBBbGxvY2F0ZWQgbWVtb3J5IHdpbGwg YmUgZnJlZWQgYnkKKyAgICAgICAqIGZyZWVfZGJfbGlzdC9mcmVlX2RieF9saXN0LgorICAgICAg ICovCisgICAgICBpZiAoc2lnbmF0dXJlcyAhPSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAg KnNpZ25hdHVyZV9saXN0ID0gc2lnbmF0dXJlczsKKyAgICAgICAgICAqc2lnbmF0dXJlX2xpc3Rf ZW50cmllcyA9IHNpZ25hdHVyZV9lbnRyaWVzICsgMTsKKyAgICAgICAgfQorCisgICAgICBpZiAo c2lnbmF0dXJlX3NpemUgIT0gTlVMTCkKKyAgICAgICAgKnNpZ25hdHVyZV9zaXplX2xpc3QgPSBz aWduYXR1cmVfc2l6ZTsKKworICAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9P Rl9NRU1PUlksICJvdXQgb2YgbWVtb3J5LiIpOworICAgIH0KKworICBzaWduYXR1cmVzW3NpZ25h dHVyZV9lbnRyaWVzXSA9IChncnViX3VpbnQ4X3QgKikgKmRhdGE7CisgIHNpZ25hdHVyZV9zaXpl W3NpZ25hdHVyZV9lbnRyaWVzXSA9IGRhdGFfc2l6ZTsKKyAgc2lnbmF0dXJlX2VudHJpZXMrKzsK KyAgKmRhdGEgPSBOVUxMOworCisgICpzaWduYXR1cmVfbGlzdCA9IHNpZ25hdHVyZXM7CisgICpz aWduYXR1cmVfc2l6ZV9saXN0ID0gc2lnbmF0dXJlX3NpemU7CisgICpzaWduYXR1cmVfbGlzdF9l bnRyaWVzID0gc2lnbmF0dXJlX2VudHJpZXM7CisKKyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7Cit9 CisKK3N0YXRpYyBib29sCitpc194NTA5IChjb25zdCBncnViX3BhY2tlZF9ndWlkX3QgKmd1aWQp Cit7CisgIGlmIChncnViX21lbWNtcCAoZ3VpZCwgJkdSVUJfUEtTX0NFUlRfWDUwOV9HVUlELCBH UlVCX0dVSURfU0laRSkgPT0gMCkKKyAgICByZXR1cm4gdHJ1ZTsKKworICByZXR1cm4gZmFsc2U7 Cit9CisKK3N0YXRpYyBib29sCitpc19jZXJ0X21hdGNoIChjb25zdCBzdHJ1Y3QgeDUwOV9jZXJ0 aWZpY2F0ZSAqZGlzdHJ1c3RlZF9jZXJ0LAorICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHg1 MDlfY2VydGlmaWNhdGUgKmRiX2NlcnQpCit7CisgIGlmIChncnViX21lbWNtcCAoZGlzdHJ1c3Rl ZF9jZXJ0LT5zdWJqZWN0LCBkYl9jZXJ0LT5zdWJqZWN0LCBkYl9jZXJ0LT5zdWJqZWN0X2xlbikg PT0gMAorICAgICAgJiYgZ3J1Yl9tZW1jbXAgKGRpc3RydXN0ZWRfY2VydC0+c2VyaWFsLCBkYl9j ZXJ0LT5zZXJpYWwsIGRiX2NlcnQtPnNlcmlhbF9sZW4pID09IDAKKyAgICAgICYmIGdydWJfbWVt Y21wIChkaXN0cnVzdGVkX2NlcnQtPm1waXNbMF0sIGRiX2NlcnQtPm1waXNbMF0sIHNpemVvZiAo ZGJfY2VydC0+bXBpc1swXSkpID09IDAKKyAgICAgICYmIGdydWJfbWVtY21wIChkaXN0cnVzdGVk X2NlcnQtPm1waXNbMV0sIGRiX2NlcnQtPm1waXNbMV0sIHNpemVvZiAoZGJfY2VydC0+bXBpc1sx XSkpID09IDApCisgICAgcmV0dXJuIHRydWU7CisKKyAgcmV0dXJuIGZhbHNlOworfQorCisKKy8q IENoZWNrIHRoZSBjZXJ0aWZpY2F0ZSBwcmVzZW5jZSBpbiB0aGUgcGxhdGZvcm0ga2V5c3RvcmUg ZGJ4IGxpc3QuICovCitzdGF0aWMgZ3J1Yl9lcnJfdAoraXNfZGJ4X2NlcnQgKGNvbnN0IHN0cnVj dCB4NTA5X2NlcnRpZmljYXRlICpkYl9jZXJ0KQoreworICBncnViX2Vycl90IHJjOworICBncnVi X3NpemVfdCBpOworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqZGlzdHJ1c3RlZF9jZXJ0Owor CisgIGZvciAoaSA9IDA7IGkgPCBncnViX3Brc19rZXlzdG9yZS5kYnhfZW50cmllczsgaSsrKQor ICAgIHsKKyAgICAgIGlmIChncnViX3Brc19rZXlzdG9yZS5kYnhbaV0uZGF0YSA9PSBOVUxMKQor ICAgICAgICBjb250aW51ZTsKKworICAgICAgaWYgKGlzX3g1MDkgKCZncnViX3Brc19rZXlzdG9y ZS5kYnhbaV0uZ3VpZCkgPT0gdHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgIGRpc3RydXN0ZWRf Y2VydCA9IGdydWJfemFsbG9jIChzaXplb2YgKHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlKSk7Cisg ICAgICAgICAgaWYgKGRpc3RydXN0ZWRfY2VydCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJu IGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJvdXQgb2YgbWVtb3J5LiIpOwor CisgICAgICAgICAgcmMgPSBwYXJzZV94NTA5X2NlcnRpZmljYXRlIChncnViX3Brc19rZXlzdG9y ZS5kYnhbaV0uZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdy dWJfcGtzX2tleXN0b3JlLmRieFtpXS5kYXRhX3NpemUsIGRpc3RydXN0ZWRfY2VydCk7CisgICAg ICAgICAgaWYgKHJjICE9IEdSVUJfRVJSX05PTkUpCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgIGdydWJfZnJlZSAoZGlzdHJ1c3RlZF9jZXJ0KTsKKyAgICAgICAgICAgICAgY29udGludWU7 CisgICAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoaXNfY2VydF9tYXRjaCAoZGlzdHJ1c3Rl ZF9jZXJ0LCBkYl9jZXJ0KSA9PSB0cnVlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBn cnViX3ByaW50ZiAoIldhcm5pbmc6IGEgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSBDTj0nJXMnIGlzIGln bm9yZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlY2F1c2UgaXQgaXMgb24gdGhl IGRieCBsaXN0LlxuIiwgZGJfY2VydC0+c3ViamVjdCk7CisgICAgICAgICAgICAgIGdydWJfZnJl ZSAoZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmRhdGEpOworICAgICAgICAgICAgICBncnViX21l bXNldCAoJmdydWJfcGtzX2tleXN0b3JlLmRieFtpXSwgMCwgc2l6ZW9mIChncnViX3Brc19zZF90 KSk7CisgICAgICAgICAgICAgIGNlcnRpZmljYXRlX3JlbGVhc2UgKGRpc3RydXN0ZWRfY2VydCk7 CisgICAgICAgICAgICAgIGdydWJfZnJlZSAoZGlzdHJ1c3RlZF9jZXJ0KTsKKyAgICAgICAgICAg ICAgcmV0dXJuIEdSVUJfRVJSX0FDQ0VTU19ERU5JRUQ7CisgICAgICAgICAgICB9CisKKyAgICAg ICAgICBjZXJ0aWZpY2F0ZV9yZWxlYXNlIChkaXN0cnVzdGVkX2NlcnQpOworICAgICAgICAgIGdy dWJfZnJlZSAoZGlzdHJ1c3RlZF9jZXJ0KTsKKyAgICAgICAgfQorICAgIH0KKworICByZXR1cm4g R1JVQl9FUlJfTk9ORTsKK30KKworLyogQWRkIHRoZSBjZXJ0aWZpY2F0ZSBpbnRvIHRoZSBkYi9k YnggbGlzdCAqLworc3RhdGljIGdydWJfZXJyX3QKK2FkZF9jZXJ0aWZpY2F0ZSAoY29uc3QgZ3J1 Yl91aW50OF90ICpkYXRhLCBjb25zdCBncnViX3NpemVfdCBkYXRhX3NpemUsCisgICAgICAgICAg ICAgICAgIHN0cnVjdCBncnViX2RhdGFiYXNlICpkYXRhYmFzZSwgY29uc3QgYm9vbCBpc19kYikK K3sKKyAgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKmNlcnQ7CisgIGdydWJfZXJyX3QgcmM7Cisg IGdydWJfc2l6ZV90IGNlcnRfZW50cmllcyA9IGRhdGFiYXNlLT5jZXJ0X2VudHJpZXM7CisKKyAg aWYgKGRhdGEgPT0gTlVMTCB8fCBkYXRhX3NpemUgPT0gMCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJv ciAoR1JVQl9FUlJfT1VUX09GX1JBTkdFLCAiY2VydGlmaWNhdGUgZGF0YSBvciBzaXplIGlzIGVt cHR5LiIpOworCisgIGNlcnQgPSBncnViX3phbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgeDUwOV9jZXJ0 aWZpY2F0ZSkpOworICBpZiAoY2VydCA9PSBOVUxMKQorICAgIHJldHVybiBncnViX2Vycm9yIChH UlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCAib3V0IG9mIG1lbW9yeS4iKTsKKworICByYyA9IHBhcnNl X3g1MDlfY2VydGlmaWNhdGUgKGRhdGEsIGRhdGFfc2l6ZSwgY2VydCk7CisgIGlmIChyYyAhPSBH UlVCX0VSUl9OT05FKQorICAgIHsKKyAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwg InNraXBwZWQgJXMgY2VydGlmaWNhdGUgKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgKGlz X2RiID09IHRydWUgPyAidHJ1c3RlZCI6ImRpc3RydXN0ZWQiKSwgKGludCkgcmMpOworICAgICAg Z3J1Yl9mcmVlIChjZXJ0KTsKKyAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgaWYgKGlzX2Ri ID09IHRydWUpCisgICAgeworICAgICAgcmMgPSBpc19kYnhfY2VydCAoY2VydCk7CisgICAgICBp ZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICAgICAgeworICAgICAgICAgIGNlcnRpZmljYXRl X3JlbGVhc2UgKGNlcnQpOworICAgICAgICAgIGdydWJfZnJlZSAoY2VydCk7CisgICAgICAgICAg cmV0dXJuIHJjOworICAgICAgICB9CisgICAgfQorCisgIGdydWJfZHByaW50ZiAoImFwcGVuZGVk c2lnIiwgImFkZCBhICVzIGNlcnRpZmljYXRlIENOPSclcydcbiIsCisgICAgICAgICAgICAgICAg KGlzX2RiID09IHRydWUgPyAidHJ1c3RlZCI6ImRpc3RydXN0ZWQiKSwgY2VydC0+c3ViamVjdCk7 CisKKyAgY2VydF9lbnRyaWVzKys7CisgIGNlcnQtPm5leHQgPSBkYXRhYmFzZS0+Y2VydHM7Cisg IGRhdGFiYXNlLT5jZXJ0cyA9IGNlcnQ7CisgIGRhdGFiYXNlLT5jZXJ0X2VudHJpZXMgPSBjZXJ0 X2VudHJpZXM7CisKKyAgcmV0dXJuIHJjOworfQorCiBzdGF0aWMgY29uc3QgY2hhciAqCiBncnVi X2Vudl9yZWFkX3NlYyAoc3RydWN0IGdydWJfZW52X3ZhciAqdmFyIF9fYXR0cmlidXRlX18gKCh1 bnVzZWQpKSwKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YWwgX19hdHRyaWJ1dGVf XyAoKHVudXNlZCkpKQpAQCAtMjQxLDcgKzQ2MSw3IEBAIGdydWJfdmVyaWZ5X2FwcGVuZGVkX3Np Z25hdHVyZSAoY29uc3QgZ3J1Yl91aW50OF90ICpidWYsIGdydWJfc2l6ZV90IGJ1ZnNpemUpCiAg IHN0cnVjdCBwa2NzN19zaWduZXJJbmZvICpzaTsKICAgaW50IGk7CiAKLSAgaWYgKGRiID09IE5V TEwpCisgIGlmICghZGIuY2VydF9lbnRyaWVzKQogICAgIHJldHVybiBncnViX2Vycm9yIChHUlVC X0VSUl9CQURfU0lHTkFUVVJFLCAibm8gdHJ1c3RlZCBrZXlzIHRvIHZlcmlmeSBhZ2FpbnN0LiIp OwogCiAgIGVyciA9IGV4dHJhY3RfYXBwZW5kZWRfc2lnbmF0dXJlIChidWYsIGJ1ZnNpemUsICZz aWcpOwpAQCAtMjcyLDcgKzQ5Miw3IEBAIGdydWJfdmVyaWZ5X2FwcGVuZGVkX3NpZ25hdHVyZSAo Y29uc3QgZ3J1Yl91aW50OF90ICpidWYsIGdydWJfc2l6ZV90IGJ1ZnNpemUpCiAgICAgICAgICAg ICAgICAgICAgIGRhdGFzaXplLCBpLCBoYXNoWzBdLCBoYXNoWzFdLCBoYXNoWzJdLCBoYXNoWzNd KTsKIAogICAgICAgZXJyID0gR1JVQl9FUlJfQkFEX1NJR05BVFVSRTsKLSAgICAgIGZvciAocGsg PSBkYjsgcGsgIT0gTlVMTDsgcGsgPSBway0+bmV4dCkKKyAgICAgIGZvciAocGsgPSBkYi5jZXJ0 czsgcGsgIT0gTlVMTDsgcGsgPSBway0+bmV4dCkKICAgICAgICAgewogICAgICAgICAgIHJjID0g Z3J1Yl9jcnlwdG9fcnNhX3BhZCAoJmhhc2htcGksIGhhc2gsIHNpLT5oYXNoLCBway0+bXBpc1sw XSk7CiAgICAgICAgICAgaWYgKHJjICE9IEdQR19FUlJfTk9fRVJST1IpCkBAIC0zNTcsMTEgKzU3 NywxMSBAQCBncnViX2NtZF9kYnggKGdydWJfY29tbWFuZF90IGNtZCBfX2F0dHJpYnV0ZV9fICgo dW51c2VkKSksIGludCBhcmdjLCBjaGFyICoqYXJncwogICBlbHNlIGlmIChjZXJ0X251bSA9PSAw KQogICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFOR0UsICJjZXJ0aWZp Y2F0ZSBudW1iZXJzIHN0YXJ0IGF0IDEuIik7CiAKLSAgZm9yIChjZXJ0ID0gcHJldl9jZXJ0ID0g ZGI7IGNlcnQgIT0gTlVMTDsgY2VydCA9IGNlcnQtPm5leHQpCisgIGZvciAoY2VydCA9IHByZXZf Y2VydCA9IGRiLmNlcnRzOyBjZXJ0ICE9IE5VTEw7IGNlcnQgPSBjZXJ0LT5uZXh0KQogICAgIHsK ICAgICAgIGlmIChjZXJ0X251bSA9PSAxKSAvKiBNYXRjaCB3aXRoIGZpcnN0IGNlcnRpZmljYXRl IGluIHRoZSBkYi4gKi8KICAgICAgICAgewotICAgICAgICAgIGRiID0gY2VydC0+bmV4dDsKKyAg ICAgICAgICBkYi5jZXJ0cyA9IGNlcnQtPm5leHQ7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAg IH0KICAgICAgIGVsc2UgaWYgKGNlcnRfbnVtID09IGkpCkBAIC0zNzYsNiArNTk2LDcgQEAgZ3J1 Yl9jbWRfZGJ4IChncnViX2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLCBp bnQgYXJnYywgY2hhciAqKmFyZ3MKIAogICBpZiAoY2VydCAhPSBOVUxMKQogICAgIHsKKyAgICAg IGRiLmNlcnRfZW50cmllcy0tOwogICAgICAgY2VydGlmaWNhdGVfcmVsZWFzZSAoY2VydCk7CiAg ICAgICBncnViX2ZyZWUgKGNlcnQpOwogICAgICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CkBAIC00 MTMsOCArNjM0LDkgQEAgZ3J1Yl9jbWRfZGIgKGdydWJfY29tbWFuZF90IGNtZCBfX2F0dHJpYnV0 ZV9fICgodW51c2VkKSksIGludCBhcmdjLCBjaGFyICoqYXJncykKIAogICBncnViX2RwcmludGYg KCJhcHBlbmRlZHNpZyIsICJsb2FkZWQgY2VydGlmaWNhdGUgd2l0aCBDTjogJXNcbiIsIGNlcnQt PnN1YmplY3QpOwogCi0gIGNlcnQtPm5leHQgPSBkYjsKLSAgZGIgPSBjZXJ0OworICBjZXJ0LT5u ZXh0ID0gZGIuY2VydHM7CisgIGRiLmNlcnRzID0gY2VydDsKKyAgZGIuY2VydF9lbnRyaWVzKys7 CiAKICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CiB9CkBAIC00MjcsNyArNjQ5LDcgQEAgZ3J1Yl9j bWRfbGlzdCAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50 IGFyZ2MgX19hdHRyaWJ1dGUKICAgaW50IGNlcnRfbnVtID0gMTsKICAgZ3J1Yl9zaXplX3QgaTsK IAotICBmb3IgKGNlcnQgPSBkYjsgY2VydCAhPSBOVUxMOyBjZXJ0ID0gY2VydC0+bmV4dCkKKyAg Zm9yIChjZXJ0ID0gZGIuY2VydHM7IGNlcnQgIT0gTlVMTDsgY2VydCA9IGNlcnQtPm5leHQpCiAg ICAgewogICAgICAgZ3J1Yl9wcmludGYgKCJDZXJ0aWZpY2F0ZSAlZDpcbiIsIGNlcnRfbnVtKTsK ICAgICAgIGdydWJfcHJpbnRmICgiXHRTZXJpYWw6ICIpOwpAQCAtNTE4LDYgKzc0MCwyNDcgQEAg c3RhdGljIHN0cnVjdCBncnViX2ZzIHBzZXVkb19mcyA9IHsKIAogc3RhdGljIGdydWJfY29tbWFu ZF90IGNtZF92ZXJpZnksIGNtZF9saXN0LCBjbWRfZGJ4LCBjbWRfZGI7CiAKKy8qIENoZWNrIHRo ZSBjZXJ0aWZpY2F0ZSBoYXNoIHByZXNlbmNlIGluIHRoZSBkYnggbGlzdC4gKi8KK3N0YXRpYyBi b29sCitpc19kYnhfY2VydF9oYXNoIChjb25zdCBncnViX3VpbnQ4X3QgKmRhdGEsIGNvbnN0IGdy dWJfc2l6ZV90IGRhdGFfc2l6ZSkKK3sKKyAgZ3J1Yl9lcnJfdCByYzsKKyAgZ3J1Yl9zaXplX3Qg aSwgY2VydF9oYXNoX3NpemUgPSAwOworICBncnViX3VpbnQ4X3QgY2VydF9oYXNoW0dSVUJfTUFY X0hBU0hfU0laRV0gPSB7IDAgfTsKKworICBmb3IgKGkgPSAwOyBpIDwgZ3J1Yl9wa3Nfa2V5c3Rv cmUuZGJ4X2VudHJpZXM7IGkrKykKKyAgICB7CisgICAgICBpZiAoZ3J1Yl9wa3Nfa2V5c3RvcmUu ZGJ4W2ldLmRhdGEgPT0gTlVMTCB8fAorICAgICAgICAgIGdydWJfcGtzX2tleXN0b3JlLmRieFtp XS5kYXRhX3NpemUgPT0gMCkKKyAgICAgICAgY29udGludWU7CisKKyAgICAgIHJjID0gZ2V0X2hh c2ggKCZncnViX3Brc19rZXlzdG9yZS5kYnhbaV0uZ3VpZCwgZGF0YSwgZGF0YV9zaXplLAorICAg ICAgICAgICAgICAgICAgICAgY2VydF9oYXNoLCAmY2VydF9oYXNoX3NpemUpOworICAgICAgaWYg KHJjICE9IEdSVUJfRVJSX05PTkUpCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICBpZiAoY2Vy dF9oYXNoX3NpemUgPT0gZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmRhdGFfc2l6ZSAmJgorICAg ICAgICAgIGdydWJfbWVtY21wIChncnViX3Brc19rZXlzdG9yZS5kYnhbaV0uZGF0YSwgY2VydF9o YXNoLCBjZXJ0X2hhc2hfc2l6ZSkgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgIGdydWJfcHJp bnRmICgiV2FybmluZzogYSB0cnVzdGVkIGNlcnRpZmljYXRlICglMDJ4JTAyeCUwMnglMDJ4KSBp cyBpZ25vcmVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgImJlY2F1c2UgdGhpcyBjZXJ0aWZp Y2F0ZSBoYXNoIGlzIG9uIHRoZSBkYnggbGlzdC5cbiIsCisgICAgICAgICAgICAgICAgICAgICAg IGNlcnRfaGFzaFswXSwgY2VydF9oYXNoWzFdLCBjZXJ0X2hhc2hbMl0sIGNlcnRfaGFzaFszXSk7 CisgICAgICAgICAgZ3J1Yl9mcmVlIChncnViX3Brc19rZXlzdG9yZS5kYnhbaV0uZGF0YSk7Cisg ICAgICAgICAgZ3J1Yl9tZW1zZXQgKCZncnViX3Brc19rZXlzdG9yZS5kYnhbaV0sIDAsIHNpemVv ZiAoZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldKSk7CisgICAgICAgICAgcmV0dXJuIHRydWU7Cisg ICAgICAgIH0KKyAgICB9CisKKyAgcmV0dXJuIGZhbHNlOworfQorCisvKiBDaGVjayB0aGUgYmlu YXJ5IGhhc2ggcHJlc2VuY2UgaW4gdGhlIGRieCBsaXN0LiAqLworc3RhdGljIGJvb2wKK2lzX2Ri eF9iaW5hcnlfaGFzaCAoY29uc3QgZ3J1Yl91aW50OF90ICpiaW5hcnlfaGFzaCwgY29uc3QgZ3J1 Yl9zaXplX3QgYmluYXJ5X2hhc2hfc2l6ZSkKK3sKKyAgZ3J1Yl9zaXplX3QgaTsKKworICBmb3Ig KGkgPSAwOyBpIDwgZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4X2VudHJpZXM7IGkrKykKKyAgICB7Cisg ICAgICBpZiAoZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmRhdGEgPT0gTlVMTCB8fAorICAgICAg ICAgIGdydWJfcGtzX2tleXN0b3JlLmRieFtpXS5kYXRhX3NpemUgPT0gMCkKKyAgICAgICAgY29u dGludWU7CisKKyAgICAgIGlmIChiaW5hcnlfaGFzaF9zaXplID09IGdydWJfcGtzX2tleXN0b3Jl LmRieFtpXS5kYXRhX3NpemUgJiYKKyAgICAgICAgICBncnViX21lbWNtcCAoZ3J1Yl9wa3Nfa2V5 c3RvcmUuZGJ4W2ldLmRhdGEsIGJpbmFyeV9oYXNoLCBiaW5hcnlfaGFzaF9zaXplKSA9PSAwKQor ICAgICAgICB7CisgICAgICAgICAgZ3J1Yl9wcmludGYgKCJXYXJuaW5nOiBhIHRydXN0ZWQgYmlu YXJ5IGhhc2ggKCUwMnglMDJ4JTAyeCUwMngpIGlzIGlnbm9yZWQiCisgICAgICAgICAgICAgICAg ICAgICAgICIgYmVjYXVzZSBpdCBpcyBvbiB0aGUgZGJ4IGxpc3QuXG4iLCBiaW5hcnlfaGFzaFsw XSwgYmluYXJ5X2hhc2hbMV0sCisgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeV9oYXNoWzJd LCBiaW5hcnlfaGFzaFszXSk7CisgICAgICAgICAgZ3J1Yl9mcmVlIChncnViX3Brc19rZXlzdG9y ZS5kYnhbaV0uZGF0YSk7CisgICAgICAgICAgZ3J1Yl9tZW1zZXQgKCZncnViX3Brc19rZXlzdG9y ZS5kYnhbaV0sIDAsIHNpemVvZihncnViX3Brc19rZXlzdG9yZS5kYnhbaV0pKTsKKyAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICByZXR1cm4gZmFsc2U7Cit9CisK Ky8qIEFkZCB0aGUgYmluYXJ5IGhhc2ggdG8gdGhlIGRiIGxpc3QgaWYgaXQgZG9lcyBub3QgZXhp c3QgaW4gdGhlIGRieCBsaXN0LiAqLworc3RhdGljIGdydWJfZXJyX3QKK2FkZF9kYl9iaW5hcnlf aGFzaCAoY29uc3QgZ3J1Yl91aW50OF90ICoqZGF0YSwgY29uc3QgZ3J1Yl9zaXplX3QgZGF0YV9z aXplKQoreworICBpZiAoKmRhdGEgPT0gTlVMTCB8fCBkYXRhX3NpemUgPT0gMCkKKyAgICByZXR1 cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfT1VUX09GX1JBTkdFLCAidHJ1c3RlZCBiaW5hcnkgaGFz aCBkYXRhIG9yIHNpemUgaXMgZW1wdHkuIik7CisKKyAgaWYgKGlzX2RieF9iaW5hcnlfaGFzaCAo KmRhdGEsIGRhdGFfc2l6ZSkgPT0gZmFsc2UpCisgICAgcmV0dXJuIGFkZF9oYXNoIChkYXRhLCBk YXRhX3NpemUsICZkYi5zaWduYXR1cmVzLCAmZGIuc2lnbmF0dXJlX3NpemUsCisgICAgICAgICAg ICAgICAgICAgICAmZGIuc2lnbmF0dXJlX2VudHJpZXMpOworCisgIHJldHVybiBHUlVCX0VSUl9C QURfU0lHTkFUVVJFOworfQorCitzdGF0aWMgYm9vbAoraXNfaGFzaCAoY29uc3QgZ3J1Yl9wYWNr ZWRfZ3VpZF90ICpndWlkKQoreworICAvKiBHVUlEIHR5cGUgb2YgdGhlIGJpbmFyeSBoYXNoLiAq LworICBpZiAoZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1NIQTI1Nl9HVUlELCBH UlVCX0dVSURfU0laRSkgPT0gMCB8fAorICAgICAgZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BL U19DRVJUX1NIQTM4NF9HVUlELCBHUlVCX0dVSURfU0laRSkgPT0gMCB8fAorICAgICAgZ3J1Yl9t ZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1NIQTUxMl9HVUlELCBHUlVCX0dVSURfU0laRSkg PT0gMCkKKyAgICByZXR1cm4gdHJ1ZTsKKworICAvKiBHVUlEIHR5cGUgb2YgdGhlIGNlcnRpZmlj YXRlIGhhc2guICovCisgIGlmIChncnViX21lbWNtcCAoZ3VpZCwgJkdSVUJfUEtTX0NFUlRfWDUw OV9TSEEyNTZfR1VJRCwgR1JVQl9HVUlEX1NJWkUpID09IDAgfHwKKyAgICAgIGdydWJfbWVtY21w IChndWlkLCAmR1JVQl9QS1NfQ0VSVF9YNTA5X1NIQTM4NF9HVUlELCBHUlVCX0dVSURfU0laRSkg PT0gMCB8fAorICAgICAgZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1g1MDlfU0hB NTEyX0dVSUQsIEdSVUJfR1VJRF9TSVpFKSA9PSAwKQorICAgIHJldHVybiB0cnVlOworCisgIHJl dHVybiBmYWxzZTsKK30KKworLyogQWRkIHRoZSBYLjUwOSBjZXJ0aWZpY2F0ZXMvYmluYXJ5IGhh c2ggdG8gdGhlIGRiIGxpc3QuICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorY3JlYXRlX2RiX2xpc3Qg KHZvaWQpCit7CisgIGdydWJfZXJyX3QgcmM7CisgIGdydWJfc2l6ZV90IGk7CisKKyAgZm9yIChp ID0gMDsgaSA8IGdydWJfcGtzX2tleXN0b3JlLmRiX2VudHJpZXM7IGkrKykKKyAgICB7CisgICAg ICBpZiAoaXNfaGFzaCAoJmdydWJfcGtzX2tleXN0b3JlLmRiW2ldLmd1aWQpID09IHRydWUpCisg ICAgICAgIHsKKyAgICAgICAgICByYyA9IGFkZF9kYl9iaW5hcnlfaGFzaCAoKGNvbnN0IGdydWJf dWludDhfdCAqKikgJmdydWJfcGtzX2tleXN0b3JlLmRiW2ldLmRhdGEsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdydWJfcGtzX2tleXN0b3JlLmRiW2ldLmRhdGFfc2l6ZSk7 CisgICAgICAgICAgaWYgKHJjID09IEdSVUJfRVJSX09VVF9PRl9NRU1PUlkpCisgICAgICAgICAg ICByZXR1cm4gcmM7CisgICAgICAgIH0KKyAgICAgIGVsc2UgaWYgKGlzX3g1MDkgKCZncnViX3Br c19rZXlzdG9yZS5kYltpXS5ndWlkKSA9PSB0cnVlKQorICAgICAgICB7CisgICAgICAgICAgaWYg KGlzX2RieF9jZXJ0X2hhc2ggKGdydWJfcGtzX2tleXN0b3JlLmRiW2ldLmRhdGEsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfcGtzX2tleXN0b3JlLmRiW2ldLmRhdGFfc2l6 ZSkgPT0gdHJ1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgcmMgPSBhZGRf Y2VydGlmaWNhdGUgKGdydWJfcGtzX2tleXN0b3JlLmRiW2ldLmRhdGEsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdydWJfcGtzX2tleXN0b3JlLmRiW2ldLmRhdGFfc2l6ZSwgJmRi LCB0cnVlKTsKKyAgICAgICAgICBpZiAocmMgPT0gR1JVQl9FUlJfT1VUX09GX01FTU9SWSkKKyAg ICAgICAgICAgIHJldHVybiByYzsKKyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBncnVi X2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJ1bnN1cHBvcnRlZCBzaWduYXR1cmUgZGF0YSB0eXBl IGFuZCAiCisgICAgICAgICAgICAgICAgICAgICAgInNraXBwZWQgKCUiIFBSSXVHUlVCX1NJWkUg IilcbiIsIGkgKyAxKTsKKyAgICB9CisKKyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7Cit9CisKKy8q IEFkZCB0aGUgY2VydGlmaWNhdGVzIGFuZCBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCB0byB0aGUg ZGJ4IGxpc3QuICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorY3JlYXRlX2RieF9saXN0ICh2b2lkKQor eworICBncnViX2Vycl90IHJjOworICBncnViX3NpemVfdCBpOworCisgIGZvciAoaSA9IDA7IGkg PCBncnViX3Brc19rZXlzdG9yZS5kYnhfZW50cmllczsgaSsrKQorICAgIHsKKyAgICAgIGlmIChn cnViX3Brc19rZXlzdG9yZS5kYnhbaV0uZGF0YSAhPSBOVUxMIHx8CisgICAgICAgICAgZ3J1Yl9w a3Nfa2V5c3RvcmUuZGJ4W2ldLmRhdGFfc2l6ZSA+IDApCisgICAgICAgIHsKKyAgICAgICAgICBp ZiAoaXNfeDUwOSAoJmdydWJfcGtzX2tleXN0b3JlLmRieFtpXS5ndWlkKSA9PSB0cnVlKQorICAg ICAgICAgICAgeworICAgICAgICAgICAgICByYyA9IGFkZF9jZXJ0aWZpY2F0ZSAoZ3J1Yl9wa3Nf a2V5c3RvcmUuZGJ4W2ldLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBncnViX3Brc19rZXlzdG9yZS5kYnhbaV0uZGF0YV9zaXplLCAmZGJ4LCBmYWxzZSk7CisgICAg ICAgICAgICAgIGlmIChyYyA9PSBHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZKQorICAgICAgICAgICAg ICAgIHJldHVybiByYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChpc19oYXNo ICgmZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmd1aWQpID09IHRydWUpCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgIHJjID0gYWRkX2hhc2ggKChjb25zdCBncnViX3VpbnQ4X3QgKiopICZn cnViX3Brc19rZXlzdG9yZS5kYnhbaV0uZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmRieC5zaWduYXR1cmVzLCAmZGJ4LnNpZ25hdHVyZV9zaXplLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmZGJ4LnNpZ25hdHVyZV9lbnRyaWVzKTsKKyAgICAgICAg ICAgICAgaWYgKHJjICE9IEdSVUJfRVJSX05PTkUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJj OworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdydWJfZHByaW50 ZiAoImFwcGVuZGVkc2lnIiwgInVuc3VwcG9ydGVkIHNpZ25hdHVyZSBkYXRhIHR5cGUgYW5kICIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgInNraXBwZWQgKCUiIFBSSXVHUlVCX1NJWkUgIilc biIsIGkgKyAxKTsKKyAgICAgICAgfQorICAgIH0KKworICByZXR1cm4gR1JVQl9FUlJfTk9ORTsK K30KKworLyoKKyAqIEV4dHJhY3QgdGhlIHg1MDkgY2VydGlmaWNhdGVzIGZyb20gdGhlIEVMRiBu b3RlIGhlYWRlciwKKyAqIHBhcnNlIGl0LCBhbmQgYWRkIGl0IHRvIHRoZSBkYiBsaXN0LgorICov CitzdGF0aWMgZ3J1Yl9lcnJfdAorYnVpbGRfc3RhdGljX2RiX2xpc3QgKGNvbnN0IHN0cnVjdCBn cnViX21vZHVsZV9oZWFkZXIgKmhlYWRlcikKK3sKKyAgZ3J1Yl9lcnJfdCBlcnI7CisgIHN0cnVj dCBncnViX2ZpbGUgcHNldWRvX2ZpbGU7CisgIGdydWJfdWludDhfdCAqY2VydF9kYXRhID0gTlVM TDsKKyAgZ3J1Yl9zaXplX3QgY2VydF9kYXRhX3NpemUgPSAwOworCisgIGdydWJfbWVtc2V0ICgm cHNldWRvX2ZpbGUsIDAsIHNpemVvZiAocHNldWRvX2ZpbGUpKTsKKyAgcHNldWRvX2ZpbGUuZnMg PSAmcHNldWRvX2ZzOworICBwc2V1ZG9fZmlsZS5zaXplID0gaGVhZGVyLT5zaXplIC0gc2l6ZW9m IChzdHJ1Y3QgZ3J1Yl9tb2R1bGVfaGVhZGVyKTsKKyAgcHNldWRvX2ZpbGUuZGF0YSA9IChjaGFy ICopIGhlYWRlciArIHNpemVvZiAoc3RydWN0IGdydWJfbW9kdWxlX2hlYWRlcik7CisKKyAgZ3J1 Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAiZm91bmQgYW4geDUwOSBrZXksIHNpemU9JSIgUFJJ dUdSVUJfVUlOVDY0X1QgIlxuIiwKKyAgICAgICAgICAgICAgICBwc2V1ZG9fZmlsZS5zaXplKTsK KworICBlcnIgPSBmaWxlX3JlYWRfYWxsICgmcHNldWRvX2ZpbGUsICZjZXJ0X2RhdGEsICZjZXJ0 X2RhdGFfc2l6ZSk7CisgIGlmIChlcnIgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICByZXR1cm4gZXJy OworCisgIGVyciA9IGFkZF9jZXJ0aWZpY2F0ZSAoY2VydF9kYXRhLCBjZXJ0X2RhdGFfc2l6ZSwg JmRiLCB0cnVlKTsKKyAgZ3J1Yl9mcmVlIChjZXJ0X2RhdGEpOworCisgIHJldHVybiBlcnI7Cit9 CisKKy8qIEZyZWUgZGIgbGlzdCBtZW1vcnkgKi8KK3N0YXRpYyB2b2lkCitmcmVlX2RiX2xpc3Qg KHZvaWQpCit7CisgIHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpjZXJ0OworICBncnViX3NpemVf dCBpID0gMDsKKworICB3aGlsZSAoZGIuY2VydHMgIT0gTlVMTCkKKyAgICB7CisgICAgICBjZXJ0 ID0gZGIuY2VydHM7CisgICAgICBkYi5jZXJ0cyA9IGRiLmNlcnRzLT5uZXh0OworICAgICAgY2Vy dGlmaWNhdGVfcmVsZWFzZSAoY2VydCk7CisgICAgICBncnViX2ZyZWUgKGNlcnQpOworICAgIH0K KworICBmb3IgKGkgPSAwOyBpIDwgZGIuc2lnbmF0dXJlX2VudHJpZXM7IGkrKykKKyAgICBncnVi X2ZyZWUgKGRiLnNpZ25hdHVyZXNbaV0pOworCisgIGdydWJfZnJlZSAoZGIuc2lnbmF0dXJlcyk7 CisgIGdydWJfZnJlZSAoZGIuc2lnbmF0dXJlX3NpemUpOworICBncnViX21lbXNldCAoJmRiLCAw LCBzaXplb2YgKGRiKSk7Cit9CisKKy8qIEZyZWUgZGJ4IGxpc3QgbWVtb3J5ICovCitzdGF0aWMg dm9pZAorZnJlZV9kYnhfbGlzdCAodm9pZCkKK3sKKyAgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUg KmNlcnQ7CisgIGdydWJfc2l6ZV90IGkgPSAwOworCisgIHdoaWxlIChkYnguY2VydHMgIT0gTlVM TCkKKyAgICB7CisgICAgICBjZXJ0ID0gZGJ4LmNlcnRzOworICAgICAgZGJ4LmNlcnRzID0gZGJ4 LmNlcnRzLT5uZXh0OworICAgICAgY2VydGlmaWNhdGVfcmVsZWFzZSAoY2VydCk7CisgICAgICBn cnViX2ZyZWUgKGNlcnQpOworICAgIH0KKworICBmb3IgKGkgPSAwOyBpIDwgZGJ4LnNpZ25hdHVy ZV9lbnRyaWVzOyBpKyspCisgICAgZ3J1Yl9mcmVlIChkYnguc2lnbmF0dXJlc1tpXSk7CisKKyAg Z3J1Yl9mcmVlIChkYnguc2lnbmF0dXJlcyk7CisgIGdydWJfZnJlZSAoZGJ4LnNpZ25hdHVyZV9z aXplKTsKKyAgZ3J1Yl9tZW1zZXQgKCZkYngsIDAsIHNpemVvZiAoZGJ4KSk7Cit9CisKIEdSVUJf TU9EX0lOSVQgKGFwcGVuZGVkc2lnKQogewogICBpbnQgcmM7CkBAIC01MjcsNyArOTkwLDYgQEAg R1JVQl9NT0RfSU5JVCAoYXBwZW5kZWRzaWcpCiAgIGlmIChncnViX2lzX2xvY2tkb3duICgpID09 IEdSVUJfTE9DS0RPV05fRU5BQkxFRCkKICAgICBjaGVja19zaWdzID0gQ0hFQ0tfU0lHU19GT1JD RUQ7CiAKLSAgZGIgPSBOVUxMOwogICBncnViX3JlZ2lzdGVyX3ZhcmlhYmxlX2hvb2sgKCJjaGVj a19hcHBlbmRlZF9zaWduYXR1cmVzIiwgZ3J1Yl9lbnZfcmVhZF9zZWMsIGdydWJfZW52X3dyaXRl X3NlYyk7CiAgIGdydWJfZW52X2V4cG9ydCAoImNoZWNrX2FwcGVuZGVkX3NpZ25hdHVyZXMiKTsK IApAQCAtNTM1LDM3ICs5OTcsNDkgQEAgR1JVQl9NT0RfSU5JVCAoYXBwZW5kZWRzaWcpCiAgIGlm IChyYykKICAgICBncnViX2ZhdGFsICgiZXJyb3IgaW5pdGluZyBBU04uMSBkYXRhIHN0cnVjdHVy ZXM6ICVkOiAlc1xuIiwgcmMsIGFzbjFfc3RyZXJyb3IgKHJjKSk7CiAKLSAgRk9SX01PRFVMRVMg KGhlYWRlcikKLSAgewotICAgIHN0cnVjdCBncnViX2ZpbGUgcHNldWRvX2ZpbGU7Ci0gICAgc3Ry dWN0IHg1MDlfY2VydGlmaWNhdGUgKnBrID0gTlVMTDsKLSAgICBncnViX2Vycl90IGVycjsKLQot ICAgIC8qIE5vdCBhbiBYLjUwOSBjZXJ0aWZpY2F0ZSwgc2tpcC4gKi8KLSAgICBpZiAoaGVhZGVy LT50eXBlICE9IE9CSl9UWVBFX1g1MDlfUFVCS0VZKQotICAgICAgY29udGludWU7Ci0KLSAgICBn cnViX21lbXNldCAoJnBzZXVkb19maWxlLCAwLCBzaXplb2YgKHBzZXVkb19maWxlKSk7Ci0gICAg cHNldWRvX2ZpbGUuZnMgPSAmcHNldWRvX2ZzOwotICAgIHBzZXVkb19maWxlLnNpemUgPSBoZWFk ZXItPnNpemUgLSBzaXplb2YgKHN0cnVjdCBncnViX21vZHVsZV9oZWFkZXIpOwotICAgIHBzZXVk b19maWxlLmRhdGEgPSAoY2hhciAqKSBoZWFkZXIgKyBzaXplb2YgKHN0cnVjdCBncnViX21vZHVs ZV9oZWFkZXIpOwotCi0gICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAiZm91bmQgYW4g eDUwOSBrZXksIHNpemU9JSIgUFJJdUdSVUJfVUlOVDY0X1QgIlxuIiwKLSAgICAgICAgICAgICAg ICAgIHBzZXVkb19maWxlLnNpemUpOwotCi0gICAgcGsgPSBncnViX3phbGxvYyAoc2l6ZW9mIChz dHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSkpOwotICAgIGlmIChwayA9PSBOVUxMKQotICAgICAgZ3J1 Yl9mYXRhbCAoIm91dCBvZiBtZW1vcnkgbG9hZGluZyBpbml0aWFsIGNlcnRpZmljYXRlcy4iKTsK LQotICAgIGVyciA9IHJlYWRfY2VydF9mcm9tX2ZpbGUgKCZwc2V1ZG9fZmlsZSwgcGspOwotICAg IGlmIChlcnIgIT0gR1JVQl9FUlJfTk9ORSkKLSAgICAgIGdydWJfZmF0YWwgKCJlcnJvciBsb2Fk aW5nIGluaXRpYWwga2V5OiAlcyIsIGdydWJfZXJybXNnKTsKLQotICAgIGdydWJfZHByaW50ZiAo ImFwcGVuZGVkc2lnIiwgImxvYWRlZCBjZXJ0aWZpY2F0ZSBDTj0nJXMnXG4iLCBway0+c3ViamVj dCk7CisgIGlmICghZ3J1Yl9wa3NfdXNlX2tleXN0b3JlICYmIGNoZWNrX3NpZ3MgPT0gQ0hFQ0tf U0lHU19GT1JDRUQpCisgICAgeworICAgICAgRk9SX01PRFVMRVMgKGhlYWRlcikKKyAgICAgICAg eworICAgICAgICAgIC8qIE5vdCBhbiBFTEYgbW9kdWxlLCBza2lwLiAgKi8KKyAgICAgICAgICBp ZiAoaGVhZGVyLT50eXBlICE9IE9CSl9UWVBFX1g1MDlfUFVCS0VZKQorICAgICAgICAgICAgY29u dGludWU7CiAKLSAgICBway0+bmV4dCA9IGRiOwotICAgIGRiID0gcGs7Ci0gIH0KKyAgICAgICAg ICByYyA9IGJ1aWxkX3N0YXRpY19kYl9saXN0IChoZWFkZXIpOworICAgICAgICAgIGlmIChyYyAh PSBHUlVCX0VSUl9OT05FKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBmcmVlX2RiX2xp c3QgKCk7CisgICAgICAgICAgICAgIGdydWJfZXJyb3IgKHJjLCAic3RhdGljIGRiIGxpc3QgY3Jl YXRpb24gZmFpbGVkLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAg ICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInRoZSBkYiBsaXN0IG5vdyBoYXMgJSIg UFJJdUdSVUJfU0laRSAiIHN0YXRpYyBrZXlzLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgZGIuY2VydF9lbnRyaWVzKTsKKyAgICAgICAgfQorICAgIH0KKyAgZWxzZSBpZiAoZ3J1Yl9w a3NfdXNlX2tleXN0b3JlICYmIGNoZWNrX3NpZ3MgPT0gQ0hFQ0tfU0lHU19GT1JDRUQpCisgICAg eworICAgICAgcmMgPSBjcmVhdGVfZGJfbGlzdCAoKTsKKyAgICAgIGlmIChyYyAhPSBHUlVCX0VS Ul9OT05FKQorICAgICAgICB7CisgICAgICAgICAgZnJlZV9kYl9saXN0ICgpOworICAgICAgICAg IGdydWJfZXJyb3IgKHJjLCAiZGIgbGlzdCBjcmVhdGlvbiBmYWlsZWQuIik7CisgICAgICAgIH0K KyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHJjID0gY3JlYXRlX2RieF9saXN0ICgp OworICAgICAgICAgIGlmIChyYyAhPSBHUlVCX0VSUl9OT05FKQorICAgICAgICAgICAgeworICAg ICAgICAgICAgICBmcmVlX2RiX2xpc3QgKCk7CisgICAgICAgICAgICAgIGZyZWVfZGJ4X2xpc3Qg KCk7CisgICAgICAgICAgICAgIGdydWJfZXJyb3IgKHJjLCAiZGJ4IGxpc3QgY3JlYXRpb24gZmFp bGVkLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdydWJf ZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInRoZSBkYiBsaXN0IG5vdyBoYXMgJSIgUFJJdUdSVUJf U0laRSAiIGtleXMuXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZGJ4IGxpc3Qg bm93IGhhcyAlIiBQUkl1R1JVQl9TSVpFICIga2V5cy5cbiIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgIGRiLnNpZ25hdHVyZV9lbnRyaWVzICsgZGIuY2VydF9lbnRyaWVzLCBkYnguc2lnbmF0 dXJlX2VudHJpZXMpOworICAgICAgICB9CisgICAgICBncnViX3Brc19mcmVlX2tleXN0b3JlICgp OworICAgIH0KIAogICBjbWRfZGIgPSBncnViX3JlZ2lzdGVyX2NvbW1hbmQgKCJhcHBlbmRfYWRk X2RiX2NlcnQiLCBncnViX2NtZF9kYiwgTl8oIlg1MDlfQ0VSVElGSUNBVEUiKSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOXygiQWRkIHRydXN0ZWQgWDUwOV9DRVJUSUZJQ0FU RSB0byB0aGUgZGIiKSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvY3J5cHRvLmggYi9pbmNs dWRlL2dydWIvY3J5cHRvLmgKaW5kZXggMzFjODdjMzAyLi5hMjcyZmFmMWYgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvZ3J1Yi9jcnlwdG8uaAorKysgYi9pbmNsdWRlL2dydWIvY3J5cHRvLmgKQEAgLTM2 OSw2ICszNjksNyBAQCBncnViX2NyeXB0b19obWFjX2J1ZmZlciAoY29uc3Qgc3RydWN0IGdjcnlf bWRfc3BlYyAqbWQsCiBleHRlcm4gZ2NyeV9tZF9zcGVjX3QgX2djcnlfZGlnZXN0X3NwZWNfbWQ1 OwogZXh0ZXJuIGdjcnlfbWRfc3BlY190IF9nY3J5X2RpZ2VzdF9zcGVjX3NoYTE7CiBleHRlcm4g Z2NyeV9tZF9zcGVjX3QgX2djcnlfZGlnZXN0X3NwZWNfc2hhMjU2OworZXh0ZXJuIGdjcnlfbWRf c3BlY190IF9nY3J5X2RpZ2VzdF9zcGVjX3NoYTM4NDsKIGV4dGVybiBnY3J5X21kX3NwZWNfdCBf Z2NyeV9kaWdlc3Rfc3BlY19zaGE1MTI7CiBleHRlcm4gZ2NyeV9tZF9zcGVjX3QgX2djcnlfZGln ZXN0X3NwZWNfY3JjMzI7CiBleHRlcm4gZ2NyeV9jaXBoZXJfc3BlY190IF9nY3J5X2NpcGhlcl9z cGVjX2FlczsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9lZmkvcGtzLmggYi9pbmNsdWRlL2dy dWIvZWZpL3Brcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZGZjYjlm MjAzCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9ncnViL2VmaS9wa3MuaApAQCAtMCwwICsx LDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMTUsIEludGVsIENvcnBvcmF0 aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzCisgKiBwcm9ncmFtIGFuZCB0aGUgYWNjb21w YW55aW5nIG1hdGVyaWFscyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlCisgKiB1bmRl ciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIDItQ2xhdXNlIEJTRCBMaWNlbnNlIHdo aWNoCisgKiBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBSZWRpc3RyaWJ1 dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp bmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICog Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92 ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV VE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQor ICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS IE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ RiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICog aHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLXN0YWdpbmcgKGVkazItc3RhZ2luZyBy ZXBvIG9mIHRpYW5vY29yZSksCisgKiB0aGUgSW1hZ2VBdXRoZW50aWNhdGlvbi5oIGZpbGUgdW5k ZXIgaXQsIGFuZCBoZXJlJ3MgdGhlIGNvcHlyaWdodCBhbmQgbGljZW5zZS4KKyAqCisgKiBNZGVQ a2cvSW5jbHVkZS9HdWlkL0ltYWdlQXV0aGVudGljYXRpb24uaAorICoKKyAqIENvcHlyaWdodCAy MDIyLCAyMDIzLCAyMDI0LCAyMDI1IElCTSBDb3JwLgorICovCisKKyNpZm5kZWYgX19QS1NfSF9f CisjZGVmaW5lIF9fUEtTX0hfXworCisjaW5jbHVkZSA8Z3J1Yi90eXBlcy5oPgorCisvKgorICog SXQgaXMgZGVyaXZlZCBmcm9tIEVGSV9DRVJUX1g1MDlfR1VJRAorICogaHR0cHM6Ly9naXRodWIu Y29tL3RpYW5vY29yZS9lZGsyLXN0YWdpbmcvYmxvYi9tYXN0ZXIvTWRlUGtnL0luY2x1ZGUvR3Vp ZC9JbWFnZUF1dGhlbnRpY2F0aW9uLmgKKyAqLworI2RlZmluZSBHUlVCX1BLU19DRVJUX1g1MDlf R1VJRCBcCisgIChncnViX2d1aWRfdCkgXAorICB7IDB4YTE1OWMwYTUsIDB4ZTQ5NCwgMHhhNzRh LCBcCisgICAgeyAweDg3LCAweGI1LCAweGFiLCAweDE1LCAweDVjLCAweDJiLCAweGYwLCAweDcy IH0gXAorICB9CisKKy8qCisgKiBJdCBpcyBkZXJpdmVkIGZyb20gRUZJX0NFUlRfU0hBMjU2X0dV SUQKKyAqIGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi1zdGFnaW5nL2Jsb2IvbWFz dGVyL01kZVBrZy9JbmNsdWRlL0d1aWQvSW1hZ2VBdXRoZW50aWNhdGlvbi5oCisgKi8KKyNkZWZp bmUgR1JVQl9QS1NfQ0VSVF9TSEEyNTZfR1VJRCBcCisgIChncnViX2d1aWRfdCkgXAorICB7IDB4 MjYxNmM0YzEsIDB4NGM1MCwgMHg5MjQwLCBcCisgICAgeyAweGFjLCAweGE5LCAweDQxLCAweGY5 LCAweDM2LCAweDkzLCAweDQzLCAweDI4IH0gXAorICB9CisKKy8qCisgKiBJdCBpcyBkZXJpdmVk IGZyb20gRUZJX0NFUlRfU0hBMzg0X0dVSUQKKyAqIGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2Nv cmUvZWRrMi1zdGFnaW5nL2Jsb2IvbWFzdGVyL01kZVBrZy9JbmNsdWRlL0d1aWQvSW1hZ2VBdXRo ZW50aWNhdGlvbi5oCisgKi8KKyNkZWZpbmUgR1JVQl9QS1NfQ0VSVF9TSEEzODRfR1VJRCBcCisg IChncnViX2d1aWRfdCkgXAorICB7IDB4MDc1MzNlZmYsIDB4ZDA5ZiwgMHhjOTQ4LCBcCisgICAg eyAweDg1LCAweGYxLCAweDhhLCAweGQ1LCAweDZjLCAweDcwLCAweDFlLCAweDEgfSBcCisgIH0K KworLyoKKyAqIEl0IGlzIGRlcml2ZWQgZnJvbSBFRklfQ0VSVF9TSEE1MTJfR1VJRAorICogaHR0 cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLXN0YWdpbmcvYmxvYi9tYXN0ZXIvTWRlUGtn L0luY2x1ZGUvR3VpZC9JbWFnZUF1dGhlbnRpY2F0aW9uLmgKKyAqLworI2RlZmluZSBHUlVCX1BL U19DRVJUX1NIQTUxMl9HVUlEIFwKKyAgKGdydWJfZ3VpZF90KSBcCisgIHsgMHhhZTBmM2UwOSwg MHhjNGE2LCAweDUwNGYsIFwKKyAgICB7IDB4OWYsIDB4MWIsIDB4ZDQsIDB4MWUsIDB4MmIsIDB4 ODksIDB4YzEsIDB4OWEgfSBcCisgIH0KKworLyoKKyAqIEl0IGlzIGRlcml2ZWQgZnJvbSBFRklf Q0VSVF9YNTA5X1NIQTI1Nl9HVUlECisgKiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2Vk azItc3RhZ2luZy9ibG9iL21hc3Rlci9NZGVQa2cvSW5jbHVkZS9HdWlkL0ltYWdlQXV0aGVudGlj YXRpb24uaAorICovCisjZGVmaW5lIEdSVUJfUEtTX0NFUlRfWDUwOV9TSEEyNTZfR1VJRCBcCisg IChncnViX2d1aWRfdCkgXAorICB7IDB4OTJhNGQyM2IsIDB4YzA5NiwgMHg3OTQwLCBcCisgICAg eyAweGI0LCAweDIwLCAweGZjLCAweGY5LCAweDhlLCAweGYxLCAweDAzLCAweGVkIH0gXAorICB9 CisKKy8qCisgKiBJdCBpcyBkZXJpdmVkIGZyb20gRUZJX0NFUlRfWDUwOV9TSEEzODRfR1VJRAor ICogaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLXN0YWdpbmcvYmxvYi9tYXN0ZXIv TWRlUGtnL0luY2x1ZGUvR3VpZC9JbWFnZUF1dGhlbnRpY2F0aW9uLmgKKyAqLworI2RlZmluZSBH UlVCX1BLU19DRVJUX1g1MDlfU0hBMzg0X0dVSUQgICAgIFwKKyAgKGdydWJfZ3VpZF90KSBcCisg IHsgMHg2ZTg3NzY3MCwgMHhjMjgwLCAweGU2NGUsIFwKKyAgICB7IDB4YWEsIDB4ZDIsIDB4Mjgs IDB4YjMsIDB4NDksIDB4YTYsIDB4ODYsIDB4NWIgfSBcCisgIH0KKworLyoKKyAqIEl0IGlzIGRl cml2ZWQgZnJvbSBFRklfQ0VSVF9YNTA5X1NIQTUxMl9HVUlECisgKiBodHRwczovL2dpdGh1Yi5j b20vdGlhbm9jb3JlL2VkazItc3RhZ2luZy9ibG9iL21hc3Rlci9NZGVQa2cvSW5jbHVkZS9HdWlk L0ltYWdlQXV0aGVudGljYXRpb24uaAorICovCisjZGVmaW5lIEdSVUJfUEtTX0NFUlRfWDUwOV9T SEE1MTJfR1VJRCBcCisgIChncnViX2d1aWRfdCkgXAorICB7IDB4NjNiZjZkNDQsIDB4MDIyNSwg MHhkYTRjLCBcCisgICAgeyAweGJjLCAweGZhLCAweDI0LCAweDY1LCAweGQyLCAweGIwLCAweGZl LCAweDlkIH0gXAorICB9CisKKyNlbmRpZgotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkdydWItZGV2ZWwg bWFpbGluZyBsaXN0CkdydWItZGV2ZWxAZ251Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcvbWFp bG1hbi9saXN0aW5mby9ncnViLWRldmVsCg==