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 2C6F3C83F09 for ; Wed, 9 Jul 2025 11:50:28 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uZTIq-0006ui-Qn; Wed, 09 Jul 2025 07:49:34 -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 1uZTIV-0006LM-So for grub-devel@gnu.org; Wed, 09 Jul 2025 07:49:12 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uZTIS-0006xg-1t for grub-devel@gnu.org; Wed, 09 Jul 2025 07:49:11 -0400 Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5699XqMR017464; Wed, 9 Jul 2025 11:49:05 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=3FbJTPYX9S//pw7lf bPRyqZeCflePJbJdc696WFDiKg=; b=S4KzuFb7KUI5qLgwdSg/OhaJLr3LnOgp6 8eQo0yM0BczLfSHpgGpHlsTcRrWm6OYpo9FBspMmp23tBRl+zYAWSR24rgTQSobD FRBmM5zZZF5bB+kvp5mGxO1ibwv5aaKQnT8cvLk0pBSVohMRPAOpSakR49J+4LS8 mV5lhVlFnPUJs79vPEKcTzA6cMIgOkKArqDGhnny9Pue6MRmWdDjWU+78OPEWT0l Nhp+KOzMPat466jI2VUyy0soAFhOTFi87KzOQJn/LhvPPCbRVDXV/lKU45EWFrHz nH9zFanMzn003NF2KbHpavy6USnYfnYV5PvHbi/1C5iAkyXRB7ABw== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47ptjr58d8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Jul 2025 11:49:05 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 5698S6so024330; Wed, 9 Jul 2025 11:49:04 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 47qh32fnwk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Jul 2025 11:49:04 +0000 Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 569Bn0IH41746756 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 9 Jul 2025 11:49:00 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5509F20040; Wed, 9 Jul 2025 11:49:00 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D541420043; Wed, 9 Jul 2025 11:48:57 +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:48:57 +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 16/23] ieee1275: Read the DB and DBX secure boot variables Date: Wed, 9 Jul 2025 17:15:33 +0530 Message-Id: <20250709114540.58608-17-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-Authority-Analysis: v=2.4 cv=GL8IEvNK c=1 sm=1 tr=0 ts=686e5731 cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=Wb1JkmetP80A:10 a=mDV3o1hIAAAA:8 a=NEAV23lmAAAA:8 a=VnNF1IyMAAAA:8 a=xLInZFtw7U1dOEzP79sA:9 a=3ZKOabzyN94A:10 X-Proofpoint-ORIG-GUID: MZMFGsOZ50Vr74-yX51e-SGmywGfdtcX X-Proofpoint-GUID: MZMFGsOZ50Vr74-yX51e-SGmywGfdtcX X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA5MDEwNiBTYWx0ZWRfX2d5TVP6YayYp R9yrwmmS7M0qbotNdGBJHgT6b15xMb3EJi4crGOhUnGFOrJA0EJM7yCK0RKsBwDnyQz58IiFnYT 4IUYea+RoORxKsH7Tq2Pn+PFYlRlj0/tKn5SOT/nfpwlHLS+Z1L/C/oPkoxy9v44zcDcTIWntat YX3+wfUxlrBVUt/IqCTEcY5HYYUF0vBHWUc3E0hfxm5b54gukPzDHEUt1bdjVjSnBz+iLbkCHdS 4juwlzphMzYdJ+3k/k7DJ08cGPYPjftSk2M2IX1fHM4AjixQeldWLofqQKmd1VK7bDhcJizMn6q IWJAojYlKs2v3tbeHTQ3EfpyZjcyzQ3dYKFumPmSmDfhHMkxDMYw2qfBppB0KjMuqdQz2oEMvLY Xxoj025Fvclx6W1dxZbulFrp4AqMLvNZr9Xwx9d9pDC1ofizq1llxutYJpRrVoq05K6reb3s 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 clxscore=1015 impostorscore=0 suspectscore=0 bulkscore=0 adultscore=0 priorityscore=1501 mlxscore=0 spamscore=0 mlxlogscore=999 lowpriorityscore=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.158.5; envelope-from=sudhakar@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_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 RW5oYW5jaW5nIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBlbmFibGUgdGhlIFBsYXRmb3JtIEtleXN0 b3JlIChQS1MpIGZlYXR1cmUsCndoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgU0IgVkVSU0lP TiwgREIsIGFuZCBEQlggc2VjdXJlIGJvb3QgdmFyaWFibGVzCmZyb20gUEtTLgoKSWYgc2VjdXJl IGJvb3QgaXMgZW5hYmxlZCB3aXRoIFBLUywgaXQgd2lsbCByZWFkIHNlY3VyZSBib290IHZhcmlh YmxlcwpzdWNoIGFzIGRiIGFuZCBkYnggZnJvbSBQS1MgYW5kIGV4dHJhY3QgRVNMJ3MgZnJvbSBp dC4KVGhlIEVTTCdzIHdvdWxkIGJlIHNhdmVkIGluIHRoZSBwbGF0Zm9ybSBrZXlzdG9yZSBidWZm ZXIsIGFuZAp0aGUgYXBwZW5kZWRzaWcgKG1vZHVsZSkgd291bGQgcmVhZCBpdCBsYXRlciB0byBl eHRyYWN0CnRoZSBjZXJ0aWZpY2F0ZSdzIGRldGFpbHMgZnJvbSBFU0wuCgpJbiB0aGUgZm9sbG93 aW5nIHNjZW5hcmlvcywgc3RhdGljIGtleSBtb2RlIHdpbGwgYmUgYWN0aXZhdGVkOgogMS4gV2hl biBTZWN1cmUgQm9vdCBpcyBlbmFibGVkIHdpdGggc3RhdGljIGtleXMKIDIuIFdoZW4gU0IgVmVy c2lvbiBpcyB1bmF2YWlsYWJsZSBidXQgU2VjdXJlIEJvb3QgaXMgZW5hYmxlZAogMy4gV2hlbiBQ S1Mgc3VwcG9ydCBpcyB1bmF2YWlsYWJsZSBidXQgU2VjdXJlIEJvb3QgaXMgZW5hYmxlZAoKTm90 ZTotCgpTQiBWZXJzaW9uIC0gU2VjdXJlIEJvb3QgbW9kZQoxIC0gUEtTCjAgLSBzdGF0aWMga2V5 IChlbWJlZGVkIGtleSkKClNpZ25lZC1vZmYtYnk6IFN1ZGhha2FyIEt1cHB1c2FteSA8c3VkaGFr YXJAbGludXguaWJtLmNvbT4KLS0tCiBncnViLWNvcmUvTWFrZWZpbGUuYW0gICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDIgKwogZ3J1Yi1jb3JlL01ha2VmaWxlLmNvcmUuZGVmICAgICAgICAg ICAgICAgICAgIHwgICAyICsKIGdydWItY29yZS9rZXJuL2llZWUxMjc1L2llZWUxMjc1LmMgICAg ICAgICAgICB8ICAgMSAtCiBncnViLWNvcmUva2Vybi9pZWVlMTI3NS9pbml0LmMgICAgICAgICAg ICAgICAgfCAgMTggKy0KIGdydWItY29yZS9rZXJuL3Bvd2VycGMvaWVlZTEyNzUvaWVlZTEyNzUu YyAgICB8IDEzOSArKysrKysrCiAuLi4va2Vybi9wb3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tl eXN0b3JlLmMgfCAzNDMgKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2dydWIvaWVlZTEyNzUv aWVlZTEyNzUuaCAgICAgICAgICAgICAgfCAgIDMgKwogaW5jbHVkZS9ncnViL3Bvd2VycGMvaWVl ZTEyNzUvaWVlZTEyNzUuaCAgICAgIHwgIDIxICsrCiAuLi4vZ3J1Yi9wb3dlcnBjL2llZWUxMjc1 L3BsYXRmb3JtX2tleXN0b3JlLmggfCAxMjYgKysrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCA2NTEg aW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBncnViLWNv cmUva2Vybi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn cnViLWNvcmUva2Vybi9wb3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tleXN0b3JlLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2dydWIvcG93ZXJwYy9pZWVlMTI3NS9wbGF0Zm9ybV9rZXlz dG9yZS5oCgpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL01ha2VmaWxlLmFtIGIvZ3J1Yi1jb3JlL01h a2VmaWxlLmFtCmluZGV4IGU1MGRiODEwNi4uY2Q2YmI3YzMyIDEwMDY0NAotLS0gYS9ncnViLWNv cmUvTWFrZWZpbGUuYW0KKysrIGIvZ3J1Yi1jb3JlL01ha2VmaWxlLmFtCkBAIC0yNDEsMTEgKzI0 MSwxMyBAQCBLRVJORUxfSEVBREVSX0ZJTEVTICs9ICQodG9wX2J1aWxkZGlyKS9pbmNsdWRlL2dy dWIvbWFjaGluZS9rZXJuZWwuaAogZW5kaWYKIAogaWYgQ09ORF9wb3dlcnBjX2llZWUxMjc1CitL RVJORUxfSEVBREVSX0ZJTEVTICs9ICQodG9wX3NyY2RpcikvaW5jbHVkZS9ncnViL3Bvd2VycGMv aWVlZTEyNzUvaWVlZTEyNzUuaAogS0VSTkVMX0hFQURFUl9GSUxFUyArPSAkKHRvcF9zcmNkaXIp L2luY2x1ZGUvZ3J1Yi9pZWVlMTI3NS9pZWVlMTI3NS5oCiBLRVJORUxfSEVBREVSX0ZJTEVTICs9 ICQodG9wX3NyY2RpcikvaW5jbHVkZS9ncnViL2llZWUxMjc1L2FsbG9jLmgKIEtFUk5FTF9IRUFE RVJfRklMRVMgKz0gJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL2dydWIvdGVybWluZm8uaAogS0VSTkVM X0hFQURFUl9GSUxFUyArPSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvZ3J1Yi9leHRjbWQuaAogS0VS TkVMX0hFQURFUl9GSUxFUyArPSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvZ3J1Yi9saWIvYXJnLmgK K0tFUk5FTF9IRUFERVJfRklMRVMgKz0gJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL2dydWIvcG93ZXJw Yy9pZWVlMTI3NS9wbGF0Zm9ybV9rZXlzdG9yZS5oCiBlbmRpZgogCiBpZiBDT05EX3NwYXJjNjRf aWVlZTEyNzUKZGlmZiAtLWdpdCBhL2dydWItY29yZS9NYWtlZmlsZS5jb3JlLmRlZiBiL2dydWIt Y29yZS9NYWtlZmlsZS5jb3JlLmRlZgppbmRleCAyMTQ4NTZiNWEuLmE4NmQyN2YyZiAxMDA2NDQK LS0tIGEvZ3J1Yi1jb3JlL01ha2VmaWxlLmNvcmUuZGVmCisrKyBiL2dydWItY29yZS9NYWtlZmls ZS5jb3JlLmRlZgpAQCAtMzI4LDEwICszMjgsMTIgQEAga2VybmVsID0gewogICBleHRyYV9kaXN0 ID0gdmlkZW8vc2lzMzE1X2luaXQuYzsKICAgbWlwc19sb29uZ3NvbiA9IGNvbW1hbmRzL2tleWxh eW91dHMuYzsKIAorICBwb3dlcnBjX2llZWUxMjc1ID0ga2Vybi9wb3dlcnBjL2llZWUxMjc1L2ll ZWUxMjc1LmM7CiAgIHBvd2VycGNfaWVlZTEyNzUgPSBrZXJuL3Bvd2VycGMvY2FjaGUuUzsKICAg cG93ZXJwY19pZWVlMTI3NSA9IGtlcm4vcG93ZXJwYy9kbC5jOwogICBwb3dlcnBjX2llZWUxMjc1 ID0ga2Vybi9wb3dlcnBjL2NvbXBpbGVyLXJ0LlM7CiAgIHBvd2VycGNfaWVlZTEyNzUgPSBrZXJu L2xvY2tkb3duLmM7CisgIHBvd2VycGNfaWVlZTEyNzUgPSBrZXJuL3Bvd2VycGMvaWVlZTEyNzUv cGxhdGZvcm1fa2V5c3RvcmUuYzsKIAogICBzcGFyYzY0X2llZWUxMjc1ID0ga2Vybi9zcGFyYzY0 L2NhY2hlLlM7CiAgIHNwYXJjNjRfaWVlZTEyNzUgPSBrZXJuL3NwYXJjNjQvZGwuYzsKZGlmZiAt LWdpdCBhL2dydWItY29yZS9rZXJuL2llZWUxMjc1L2llZWUxMjc1LmMgYi9ncnViLWNvcmUva2Vy bi9pZWVlMTI3NS9pZWVlMTI3NS5jCmluZGV4IDM2Y2EyZGJmYy4uYWZhMzdhOWYwIDEwMDY0NAot LS0gYS9ncnViLWNvcmUva2Vybi9pZWVlMTI3NS9pZWVlMTI3NS5jCisrKyBiL2dydWItY29yZS9r ZXJuL2llZWUxMjc1L2llZWUxMjc1LmMKQEAgLTIzLDcgKzIzLDYgQEAKIAogI2RlZmluZSBJRUVF MTI3NV9QSEFORExFX0lOVkFMSUQgICgoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpIC0xKQogI2RlZmlu ZSBJRUVFMTI3NV9JSEFORExFX0lOVkFMSUQgICgoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpIDApCi0j ZGVmaW5lIElFRUUxMjc1X0NFTExfSU5WQUxJRCAgICAgKChncnViX2llZWUxMjc1X2NlbGxfdCkg LTEpCiAKIAwKIApkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4vaWVlZTEyNzUvaW5pdC5jIGIv Z3J1Yi1jb3JlL2tlcm4vaWVlZTEyNzUvaW5pdC5jCmluZGV4IGYxOWQ1Y2RhOS4uZjdhN2M5NmY4 IDEwMDY0NAotLS0gYS9ncnViLWNvcmUva2Vybi9pZWVlMTI3NS9pbml0LmMKKysrIGIvZ3J1Yi1j b3JlL2tlcm4vaWVlZTEyNzUvaW5pdC5jCkBAIC01MSw2ICs1MSw4IEBACiAjZW5kaWYKICNpZiBk ZWZpbmVkKF9fcG93ZXJwY19fKQogI2luY2x1ZGUgPGdydWIvbG9ja2Rvd24uaD4KKyNpbmNsdWRl IDxncnViL3Bvd2VycGMvaWVlZTEyNzUvaWVlZTEyNzUuaD4KKyNpbmNsdWRlIDxncnViL3Bvd2Vy cGMvaWVlZTEyNzUvcGxhdGZvcm1fa2V5c3RvcmUuaD4KICNlbmRpZgogCiAvKiBUaGUgbWF4aW11 bSBoZWFwIHNpemUgd2UncmUgZ29pbmcgdG8gY2xhaW0gYXQgYm9vdC4gTm90IHVzZWQgYnkgc3Bh cmMuICovCkBAIC0xMDA0LDcgKzEwMDYsOCBAQCBncnViX2dldF9pZWVlMTI3NV9zZWN1cmVfYm9v dCAodm9pZCkKIHsKICAgZ3J1Yl9pZWVlMTI3NV9waGFuZGxlX3Qgcm9vdDsKICAgaW50IHJjOwot ICBncnViX3VpbnQzMl90IGlzX3NiOworICBncnViX2Vycl90IGVycjsKKyAgZ3J1Yl91aW50MzJf dCBpc19zYiA9IFNCX0RJU0FCTEVEOwogCiAgIHJjID0gZ3J1Yl9pZWVlMTI3NV9maW5kZGV2aWNl ICgiLyIsICZyb290KTsKICAgaWYgKHJjICE9IDApCkBAIC0xMDI4LDggKzEwMzEsMTcgQEAgZ3J1 Yl9nZXRfaWVlZTEyNzVfc2VjdXJlX2Jvb3QgKHZvaWQpCiAgICAqCiAgICAqIFdlIG9ubHkgc3Vw cG9ydCBlbmZvcmNlLgogICAgKi8KLSAgaWYgKGlzX3NiID49IDIpCi0gICAgZ3J1Yl9sb2NrZG93 biAoKTsKKyAgaWYgKGlzX3NiID09IFNCX0VORk9SQ0VEKQorICAgIHsKKyAgICAgIGdydWJfZHBy aW50ZiAoImllZWUxMjc1IiwgIlNlY3VyZSBCb290IEVuYWJsZWRcbiIpOworICAgICAgZXJyID0g Z3J1Yl9wa3Nfa2V5c3RvcmVfaW5pdCAoKTsKKyAgICAgIGlmIChlcnIgIT0gR1JVQl9FUlJfTk9O RSkKKyAgICAgICAgZ3J1Yl9lcnJvciAoZXJyLCAiaW5pdGlhbGl6YXRpb24gb2YgdGhlIFBsYXRm b3JtIEtleXN0b3JlIGZhaWxlZC5cbiIpOworCisgICAgICBncnViX2xvY2tkb3duICgpOworICAg IH0KKyAgZWxzZQorICAgIGdydWJfZHByaW50ZiAoImllZWUxMjc1IiwgIlNlY3VyZSBCb290IERp c2FibGVkXG4iKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi9wb3dl cnBjL2llZWUxMjc1L2llZWUxMjc1LmMgYi9ncnViLWNvcmUva2Vybi9wb3dlcnBjL2llZWUxMjc1 L2llZWUxMjc1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi41Mjk4NGNh YWUKLS0tIC9kZXYvbnVsbAorKysgYi9ncnViLWNvcmUva2Vybi9wb3dlcnBjL2llZWUxMjc1L2ll ZWUxMjc1LmMKQEAgLTAsMCArMSwxMzkgQEAKKy8qIGllZWUxMjc1LmMgLSBBY2Nlc3MgdGhlIE9w ZW4gRmlybXdhcmUgY2xpZW50IGludGVyZmFjZS4gICovCisvKgorICogIEdSVUIgIC0tICBHUmFu ZCBVbmlmaWVkIEJvb3Rsb2FkZXIKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsMjAwNCwyMDA1LDIw MDcsMjAwOCwyMDA5ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAqICBDb3B5cmln aHQgKEMpIDIwMjAsIDIwMjEsIDIwMjIsIDIwMjMsIDIwMjQsIDIwMjUgSUJNIENvcnBvcmF0aW9u CisgKgorICogIEdSVUIgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBHUlVCIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIEdSVUIuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKyNpbmNsdWRlIDxncnViL2llZWUxMjc1L2llZWUx Mjc1Lmg+CisjaW5jbHVkZSA8Z3J1Yi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1Lmg+CisjaW5j bHVkZSA8Z3J1Yi9taXNjLmg+CisKK2ludAorZ3J1Yl9pZWVlMTI3NV90ZXN0IChjb25zdCBjaGFy ICpuYW1lLCBncnViX2llZWUxMjc1X2NlbGxfdCAqbWlzc2luZykKK3sKKyAgc3RydWN0IHRlc3Rf YXJncworICB7CisgICAgc3RydWN0IGdydWJfaWVlZTEyNzVfY29tbW9uX2hkciBjb21tb247Cisg ICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgbmFtZTsKKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBt aXNzaW5nOworICB9IGFyZ3M7CisKKyAgSU5JVF9JRUVFMTI3NV9DT01NT04gKCZhcmdzLmNvbW1v biwgInRlc3QiLCAxLCAxKTsKKyAgYXJncy5uYW1lID0gKGdydWJfaWVlZTEyNzVfY2VsbF90KSBu YW1lOworCisgIGlmIChJRUVFMTI3NV9DQUxMX0VOVFJZX0ZOICgmYXJncykgPT0gLTEpCisgICAg cmV0dXJuIC0xOworCisgIGlmIChhcmdzLm1pc3NpbmcgPT0gSUVFRTEyNzVfQ0VMTF9JTlZBTElE KQorICAgIHJldHVybiAtMTsKKworICAqbWlzc2luZyA9IGFyZ3MubWlzc2luZzsKKworICByZXR1 cm4gMDsKK30KKworaW50CitncnViX2llZWUxMjc1X3Brc19tYXhfb2JqZWN0X3NpemUgKGdydWJf c2l6ZV90ICpyZXN1bHQpCit7CisgIHN0cnVjdCBtb3NfYXJncworICB7CisgICAgc3RydWN0IGdy dWJfaWVlZTEyNzVfY29tbW9uX2hkciBjb21tb247CisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3Qg c2l6ZTsKKyAgfSBhcmdzOworCisgIElOSVRfSUVFRTEyNzVfQ09NTU9OICgmYXJncy5jb21tb24s ICJwa3MtbWF4LW9iamVjdC1zaXplIiwgMCwgMSk7CisKKyAgaWYgKElFRUUxMjc1X0NBTExfRU5U UllfRk4gKCZhcmdzKSA9PSAtMSkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYgKGFyZ3Muc2l6ZSA9 PSBJRUVFMTI3NV9DRUxMX0lOVkFMSUQpCisgICAgcmV0dXJuIC0xOworCisgICpyZXN1bHQgPSBh cmdzLnNpemU7CisKKyAgcmV0dXJuIDA7Cit9CisKK2ludAorZ3J1Yl9pZWVlMTI3NV9wa3NfcmVh ZF9vYmplY3QgKGdydWJfdWludDhfdCBjb25zdW1lciwgZ3J1Yl91aW50OF90ICpsYWJlbCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnViX3NpemVfdCBsYWJlbF9sZW4sIGdydWJf dWludDhfdCAqYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfc2l6 ZV90IGJ1ZmZlcl9sZW4sIGdydWJfc2l6ZV90ICpkYXRhX2xlbiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBncnViX3VpbnQzMl90ICpwb2xpY2llcykKK3sKKyAgc3RydWN0IHBrc19y ZWFkX2FyZ3MKKyAgeworICAgIHN0cnVjdCBncnViX2llZWUxMjc1X2NvbW1vbl9oZHIgY29tbW9u OworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGNvbnN1bWVyOworICAgIGdydWJfaWVlZTEyNzVf Y2VsbF90IGxhYmVsOworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGxhYmVsX2xlbjsKKyAgICBn cnViX2llZWUxMjc1X2NlbGxfdCBidWZmZXI7CisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgYnVm ZmVyX2xlbjsKKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBkYXRhX2xlbjsKKyAgICBncnViX2ll ZWUxMjc1X2NlbGxfdCBwb2xpY2llczsKKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCByYzsKKyAg fSBhcmdzOworCisgIElOSVRfSUVFRTEyNzVfQ09NTU9OICgmYXJncy5jb21tb24sICJwa3MtcmVh ZC1vYmplY3QiLCA1LCAzKTsKKyAgYXJncy5jb25zdW1lciA9IChncnViX2llZWUxMjc1X2NlbGxf dCkgY29uc3VtZXI7CisgIGFyZ3MubGFiZWwgPSAoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpIGxhYmVs OworICBhcmdzLmxhYmVsX2xlbiA9IChncnViX2llZWUxMjc1X2NlbGxfdCkgbGFiZWxfbGVuOwor ICBhcmdzLmJ1ZmZlciA9IChncnViX2llZWUxMjc1X2NlbGxfdCkgYnVmZmVyOworICBhcmdzLmJ1 ZmZlcl9sZW4gPSAoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpIGJ1ZmZlcl9sZW47CisKKyAgaWYgKElF RUUxMjc1X0NBTExfRU5UUllfRk4gKCZhcmdzKSA9PSAtMSkKKyAgICByZXR1cm4gLTE7CisKKyAg aWYgKGFyZ3MuZGF0YV9sZW4gPT0gSUVFRTEyNzVfQ0VMTF9JTlZBTElEKQorICAgIHJldHVybiAt MTsKKworICAqZGF0YV9sZW4gPSBhcmdzLmRhdGFfbGVuOworICAqcG9saWNpZXMgPSBhcmdzLnBv bGljaWVzOworCisgIHJldHVybiAoaW50KSBhcmdzLnJjOworfQorCitpbnQKK2dydWJfaWVlZTEy NzVfcGtzX3JlYWRfc2J2YXIgKGdydWJfdWludDhfdCBzYnZhcmZsYWdzLCBncnViX3VpbnQ4X3Qg c2J2YXJ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1Yl91aW50OF90ICpi dWZmZXIsIGdydWJfc2l6ZV90IGJ1ZmZlcl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBncnViX3NpemVfdCAqZGF0YV9sZW4pCit7CisgIHN0cnVjdCBwa3NfcmVhZF9zYnZhcl9h cmdzCisgIHsKKyAgICBzdHJ1Y3QgZ3J1Yl9pZWVlMTI3NV9jb21tb25faGRyIGNvbW1vbjsKKyAg ICBncnViX2llZWUxMjc1X2NlbGxfdCBzYnZhcmZsYWdzOworICAgIGdydWJfaWVlZTEyNzVfY2Vs bF90IHNidmFydHlwZTsKKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBidWZmZXI7CisgICAgZ3J1 Yl9pZWVlMTI3NV9jZWxsX3QgYnVmZmVyX2xlbjsKKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBk YXRhX2xlbjsKKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCByYzsKKyAgfSBhcmdzOworCisgIElO SVRfSUVFRTEyNzVfQ09NTU9OICgmYXJncy5jb21tb24sICJwa3MtcmVhZC1zYnZhciIsIDQsIDIp OworICBhcmdzLnNidmFyZmxhZ3MgPSAoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpIHNidmFyZmxhZ3M7 CisgIGFyZ3Muc2J2YXJ0eXBlID0gKGdydWJfaWVlZTEyNzVfY2VsbF90KSBzYnZhcnR5cGU7Cisg IGFyZ3MuYnVmZmVyID0gKGdydWJfaWVlZTEyNzVfY2VsbF90KSBidWZmZXI7CisgIGFyZ3MuYnVm ZmVyX2xlbiA9IChncnViX2llZWUxMjc1X2NlbGxfdCkgYnVmZmVyX2xlbjsKKworICBpZiAoSUVF RTEyNzVfQ0FMTF9FTlRSWV9GTiAoJmFyZ3MpID09IC0xKQorICAgIHJldHVybiAtMTsKKworICBp ZiAoYXJncy5kYXRhX2xlbiA9PSBJRUVFMTI3NV9DRUxMX0lOVkFMSUQpCisgICAgcmV0dXJuIC0x OworCisgICpkYXRhX2xlbiA9IGFyZ3MuZGF0YV9sZW47CisKKyAgcmV0dXJuIChpbnQpIGFyZ3Mu cmM7Cit9CmRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi9wb3dlcnBjL2llZWUxMjc1L3BsYXRm b3JtX2tleXN0b3JlLmMgYi9ncnViLWNvcmUva2Vybi9wb3dlcnBjL2llZWUxMjc1L3BsYXRmb3Jt X2tleXN0b3JlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4zYWYxZWEy OGEKLS0tIC9kZXYvbnVsbAorKysgYi9ncnViLWNvcmUva2Vybi9wb3dlcnBjL2llZWUxMjc1L3Bs YXRmb3JtX2tleXN0b3JlLmMKQEAgLTAsMCArMSwzNDMgQEAKKy8qCisgKiAgR1JVQiAgLS0gIEdS YW5kIFVuaWZpZWQgQm9vdGxvYWRlcgorICogIENvcHlyaWdodCAoQykgMjAyNCAgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgKiAgQ29weXJpZ2h0IChDKSAyMDIyLCAyMDIzLCAyMDI0 LCAyMDI1IElCTSBDb3Jwb3JhdGlvbgorICoKKyAqICBHUlVCIGlzIGZyZWUgc29mdHdhcmU6IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICog IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg KiAgR1JVQiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCBHUlVCLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNs dWRlIDxncnViL21tLmg+CisjaW5jbHVkZSA8Z3J1Yi90eXBlcy5oPgorI2luY2x1ZGUgPGdydWIv bWlzYy5oPgorI2luY2x1ZGUgPGdydWIvbG9ja2Rvd24uaD4KKyNpbmNsdWRlIDxncnViL2llZWUx Mjc1L2llZWUxMjc1Lmg+CisjaW5jbHVkZSA8Z3J1Yi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1 Lmg+CisjaW5jbHVkZSA8Z3J1Yi9wb3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tleXN0b3JlLmg+ CisKKy8qIFBLUyBjb25zdW1lciB0eXBlIGZvciBmaXJtd2FyZS4gKi8KKyNkZWZpbmUgUEtTX0NP TlNVTUVSX0ZXICAgICAgKChncnViX3VpbnQ4X3QpIDEpCisKKy8qIFBLUyByZWFkIG9iamVjdCBs YWJsZSBmb3Igc2VjdXJlIGJvb3QgdmVyc2lvbi4gKi8KKyNkZWZpbmUgU0JfVkVSU0lPTl9LRVlf TkFNRSAgKChncnViX3VpbnQ4X3QgKikgIlNCX1ZFUlNJT04iKQorI2RlZmluZSBTQl9WRVJTSU9O X0tFWV9MRU4gICAoKGdydWJfc2l6ZV90KSAxMCkKKworLyogUEtTIHJlYWQgc2VjdXJlIGJvb3Qg dmFyaWFibGUgcmVxdWVzdCB0eXBlIGZvciBkYiBhbmQgZGJ4LiAqLworI2RlZmluZSBEQiAgICAg ICAgICAgICAgICAgICAoKGdydWJfdWludDhfdCkgMSkKKyNkZWZpbmUgREJYICAgICAgICAgICAg ICAgICAgKChncnViX3VpbnQ4X3QpIDIpCisKK3N0YXRpYyBncnViX3NpemVfdCBwa3NfbWF4X29i amVjdF9zaXplOworZ3J1Yl91aW50OF90IGdydWJfcGtzX3VzZV9rZXlzdG9yZSA9IDA7CisKKy8q IFBsYXRmb3JtIEtleXN0b3JlLiAqLworZ3J1Yl9wa3NfdCBncnViX3Brc19rZXlzdG9yZSA9IHsg LmRiID0gTlVMTCwgLmRieCA9IE5VTEwsIC5kYl9lbnRyaWVzID0gMCwgLmRieF9lbnRyaWVzID0g MCB9OworCisvKiBDb252ZXJ0IHRoZSBlc2wgZGF0YSBpbnRvIHRoZSBFU0wuICovCitzdGF0aWMg Z3J1Yl9lc2xfdCAqCitjb252ZXJ0X3RvX2VzbCAoY29uc3QgZ3J1Yl91aW50OF90ICplc2xfZGF0 YSwgY29uc3QgZ3J1Yl9zaXplX3QgZXNsX2RhdGFfc2l6ZSkKK3sKKyAgZ3J1Yl9lc2xfdCAqZXNs ID0gTlVMTDsKKworICBpZiAoZXNsX2RhdGFfc2l6ZSA8IHNpemVvZiAoZ3J1Yl9lc2xfdCkgfHwg ZXNsX2RhdGEgPT0gTlVMTCkKKyAgICByZXR1cm4gZXNsOworCisgIGVzbCA9IChncnViX2VzbF90 ICopIGVzbF9kYXRhOworCisgIHJldHVybiBlc2w7Cit9CisKKy8qCisgKiBJbXBvcnQgdGhlIEdV SUQsIGVzZCwgYW5kIGl0cyBzaXplIGludG8gdGhlIHBrcyBzZCBidWZmZXIgYW5kCisgKiBwa3Mg c2QgZW50cmllcyBmcm9tIHRoZSBFRkkgc2lnbmF0dXJlIGxpc3QuCisgKi8KK3N0YXRpYyBncnVi X2Vycl90Citlc2RfZnJvbV9lc2wgKGNvbnN0IGdydWJfdWludDhfdCAqZXNsX2RhdGEsIGdydWJf c2l6ZV90IGVzbF9zaXplLAorICAgICAgICAgICAgICBjb25zdCBncnViX3NpemVfdCBzaWduYXR1 cmVfc2l6ZSwgY29uc3QgZ3J1Yl9wYWNrZWRfZ3VpZF90ICpndWlkLAorICAgICAgICAgICAgICBn cnViX3Brc19zZF90ICoqcGtzX3NkLCBncnViX3NpemVfdCAqcGtzX3NkX2VudHJpZXMpCit7Cisg IGdydWJfZXNkX3QgKmVzZDsKKyAgZ3J1Yl9wa3Nfc2RfdCAqc2lnbmF0dXJlID0gKnBrc19zZDsK KyAgZ3J1Yl9zaXplX3QgZW50cmllcyA9ICpwa3Nfc2RfZW50cmllczsKKyAgZ3J1Yl9zaXplX3Qg ZGF0YV9zaXplLCBvZmZzZXQgPSAwOworCisgIC8qIFJlYWRzIHRoZSBlc2QgZnJvbSBlc2wuICov CisgIHdoaWxlIChlc2xfc2l6ZSA+IDApCisgICAgeworICAgICAgZXNkID0gKGdydWJfZXNkX3Qg KikgKGVzbF9kYXRhICsgb2Zmc2V0KTsKKyAgICAgIGRhdGFfc2l6ZSA9IHNpZ25hdHVyZV9zaXpl IC0gc2l6ZW9mIChncnViX2VzZF90KTsKKworICAgICAgc2lnbmF0dXJlID0gZ3J1Yl9yZWFsbG9j IChzaWduYXR1cmUsIChlbnRyaWVzICsgMSkgKiBzaXplb2YgKGdydWJfcGtzX3NkX3QpKTsKKyAg ICAgIGlmIChzaWduYXR1cmUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdS VUJfRVJSX09VVF9PRl9NRU1PUlksICJvdXQgb2YgbWVtb3J5LiIpOworCisgICAgICBzaWduYXR1 cmVbZW50cmllc10uZGF0YSA9IGdydWJfbWFsbG9jIChkYXRhX3NpemUgKiBzaXplb2YgKGdydWJf dWludDhfdCkpOworICAgICAgaWYgKHNpZ25hdHVyZVtlbnRyaWVzXS5kYXRhID09IE5VTEwpCisg ICAgICAgIHsKKyAgICAgICAgICAvKgorICAgICAgICAgICAqIEFsbG9jYXRlZCBtZW1vcnkgd2ls bCBiZSBmcmVlZCBieQorICAgICAgICAgICAqIGdydWJfZnJlZV9wbGF0Zm9ybV9rZXlzdG9yZS4K KyAgICAgICAgICAgKi8KKyAgICAgICAgICAqcGtzX3NkID0gc2lnbmF0dXJlOworICAgICAgICAg ICpwa3Nfc2RfZW50cmllcyA9IGVudHJpZXMgKyAxOworICAgICAgICAgIHJldHVybiBncnViX2Vy cm9yIChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCAib3V0IG9mIG1lbW9yeS4iKTsKKyAgICAgICAg fQorCisgICAgICBncnViX21lbWNweSAoc2lnbmF0dXJlW2VudHJpZXNdLmRhdGEsIGVzZC0+c2ln bmF0dXJlX2RhdGEsIGRhdGFfc2l6ZSk7CisgICAgICBzaWduYXR1cmVbZW50cmllc10uZGF0YV9z aXplID0gZGF0YV9zaXplOworICAgICAgc2lnbmF0dXJlW2VudHJpZXNdLmd1aWQgPSAqZ3VpZDsK KyAgICAgIGVudHJpZXMrKzsKKyAgICAgIGVzbF9zaXplIC09IHNpZ25hdHVyZV9zaXplOworICAg ICAgb2Zmc2V0ICs9IHNpZ25hdHVyZV9zaXplOworICAgIH0KKworICAqcGtzX3NkID0gc2lnbmF0 dXJlOworICAqcGtzX3NkX2VudHJpZXMgPSBlbnRyaWVzOworCisgIHJldHVybiBHUlVCX0VSUl9O T05FOworfQorCisvKiBFeHRyYWN0IHRoZSBlc2QgYWZ0ZXIgcmVtb3ZpbmcgdGhlIGVzbCBoZWFk ZXIgZnJvbSBlc2wuICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorZXNsX3RvX2VzZCAoY29uc3QgZ3J1 Yl91aW50OF90ICplc2xfZGF0YSwgZ3J1Yl9zaXplX3QgKm5leHRfZXNsLAorICAgICAgICAgICAg Z3J1Yl9wa3Nfc2RfdCAqKnBrc19zZCwgZ3J1Yl9zaXplX3QgKnBrc19zZF9lbnRyaWVzKQorewor ICBncnViX3BhY2tlZF9ndWlkX3QgZ3VpZDsKKyAgZ3J1Yl9lc2xfdCAqZXNsOworICBncnViX3Np emVfdCBvZmZzZXQsIGVzbF9zaXplLAorICAgICAgICAgICAgICBzaWduYXR1cmVfc2l6ZSwgc2ln bmF0dXJlX2hlYWRlcl9zaXplOworCisgIGVzbCA9IGNvbnZlcnRfdG9fZXNsIChlc2xfZGF0YSwg Km5leHRfZXNsKTsKKyAgaWYgKGVzbCA9PSBOVUxMKQorICAgIHJldHVybiBncnViX2Vycm9yIChH UlVCX0VSUl9CVUcsICJpbnZhbGlkIEVTTC4iKTsKKworICBlc2xfc2l6ZSA9IGdydWJfbGVfdG9f Y3B1MzIgKGVzbC0+c2lnbmF0dXJlX2xpc3Rfc2l6ZSk7CisgIHNpZ25hdHVyZV9oZWFkZXJfc2l6 ZSA9IGdydWJfbGVfdG9fY3B1MzIgKGVzbC0+c2lnbmF0dXJlX2hlYWRlcl9zaXplKTsKKyAgc2ln bmF0dXJlX3NpemUgPSBncnViX2xlX3RvX2NwdTMyIChlc2wtPnNpZ25hdHVyZV9zaXplKTsKKyAg Z3J1Yl9tZW1jcHkgKCZndWlkLCAmZXNsLT5zaWduYXR1cmVfdHlwZSwgc2l6ZW9mIChncnViX3Bh Y2tlZF9ndWlkX3QpKTsKKworICBpZiAoZXNsX3NpemUgPCBzaXplb2YgKGdydWJfZXNsX3QpIHx8 IGVzbF9zaXplID4gKm5leHRfZXNsKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9C VUcsICJpbnZhbGlkIEVTTCBzaXplICgldSlcbiIsIGVzbF9zaXplKTsKKworICAqbmV4dF9lc2wg PSBlc2xfc2l6ZTsKKyAgb2Zmc2V0ID0gc2l6ZW9mIChncnViX2VzbF90KSArIHNpZ25hdHVyZV9o ZWFkZXJfc2l6ZTsKKyAgZXNsX3NpemUgPSBlc2xfc2l6ZSAtIG9mZnNldDsKKworICByZXR1cm4g ZXNkX2Zyb21fZXNsIChlc2xfZGF0YSArIG9mZnNldCwgZXNsX3NpemUsIHNpZ25hdHVyZV9zaXpl LCAmZ3VpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgcGtzX3NkLCBwa3Nfc2RfZW50cmllcyk7 Cit9CisKKy8qCisgKiBJbXBvcnQgdGhlIEVGSSBzaWduYXR1cmUgZGF0YSBhbmQgdGhlIG51bWJl ciBvZiBlc2QgZnJvbSB0aGUgZXNsCisgKiBpbnRvIHRoZSBwa3Mgc2QgYnVmZmVyIGFuZCBwa3Mg c2QgZW50cmllcy4KKyAqLworc3RhdGljIGdydWJfZXJyX3QKK3Brc19zZF9mcm9tX2VzbCAoY29u c3QgZ3J1Yl91aW50OF90ICplc2xfZGF0YSwgZ3J1Yl9zaXplX3QgZXNsX3NpemUsCisgICAgICAg ICAgICAgICAgIGdydWJfcGtzX3NkX3QgKipwa3Nfc2QsIGdydWJfc2l6ZV90ICpwa3Nfc2RfZW50 cmllcykKK3sKKyAgZ3J1Yl9lcnJfdCByYzsKKyAgZ3J1Yl9zaXplX3QgbmV4dF9lc2wgPSBlc2xf c2l6ZTsKKworICBkbworICAgIHsKKyAgICAgIHJjID0gZXNsX3RvX2VzZCAoZXNsX2RhdGEsICZu ZXh0X2VzbCwgcGtzX3NkLCBwa3Nfc2RfZW50cmllcyk7CisgICAgICBpZiAocmMgIT0gR1JVQl9F UlJfTk9ORSkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGVzbF9kYXRhICs9IG5leHRfZXNsOwor ICAgICAgZXNsX3NpemUgLT0gbmV4dF9lc2w7CisgICAgICBuZXh0X2VzbCA9IGVzbF9zaXplOwor ICAgIH0KKyAgd2hpbGUgKGVzbF9zaXplID4gMCk7CisKKyAgcmV0dXJuIHJjOworfQorCisvKgor ICogUmVhZCB0aGUgc2VjdXJlIGJvb3QgdmVyc2lvbiBmcm9tIFBLUyBhcyBhbiBvYmplY3QuCisg KiBjYWxsZXIgbXVzdCBmcmVlIHJlc3VsdC4KKyAqLworc3RhdGljIGdydWJfZXJyX3QKK3JlYWRf c2J2ZXJzaW9uX2Zyb21fcGtzIChncnViX3VpbnQ4X3QgKipvdXQsIGdydWJfc2l6ZV90ICpvdXRs ZW4sIGdydWJfc2l6ZV90ICpwb2xpY3kpCit7CisgIGludCByYzsKKworICAqb3V0ID0gZ3J1Yl9t YWxsb2MgKHBrc19tYXhfb2JqZWN0X3NpemUpOworICBpZiAoKm91dCA9PSBOVUxMKQorICAgIHJl dHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCAib3V0IG9mIG1lbW9yeS4i KTsKKworICByYyA9IGdydWJfaWVlZTEyNzVfcGtzX3JlYWRfb2JqZWN0IChQS1NfQ09OU1VNRVJf RlcsIFNCX1ZFUlNJT05fS0VZX05BTUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNCX1ZFUlNJT05fS0VZX0xFTiwgKm91dCwgcGtzX21heF9vYmplY3Rfc2l6ZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGVuLCBwb2xpY3kpOworICBp ZiAocmMgIT0gMCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfUkVBRF9FUlJPUiwg IlNCIHZlcnNpb24gcmVhZCBmYWlsZWQgKCVkKVxuIiwgcmMpOworCisgIHJldHVybiBHUlVCX0VS Ul9OT05FOworfQorCisvKgorICogUmVhZHMgdGhlIHNlY3VyZSBib290IHZhcmlhYmxlIGZyb20g UEtTLgorICogY2FsbGVyIG11c3QgZnJlZSByZXN1bHQuCisgKi8KK3N0YXRpYyBncnViX2Vycl90 CityZWFkX3NidmFyX2Zyb21fcGtzIChjb25zdCBncnViX3VpbnQ4X3Qgc2J2YXJmbGFncywgY29u c3QgZ3J1Yl91aW50OF90IHNidmFydHlwZSwKKyAgICAgICAgICAgICAgICAgICAgIGdydWJfdWlu dDhfdCAqKm91dCwgZ3J1Yl9zaXplX3QgKm91dGxlbikKK3sKKyAgaW50IHJjOworCisgICpvdXQg PSBncnViX21hbGxvYyAocGtzX21heF9vYmplY3Rfc2l6ZSk7CisgIGlmICgqb3V0ID09IE5VTEwp CisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJvdXQgb2Yg bWVtb3J5LiIpOworCisgIHJjID0gZ3J1Yl9pZWVlMTI3NV9wa3NfcmVhZF9zYnZhciAoc2J2YXJm bGFncywgc2J2YXJ0eXBlLCAqb3V0LCBwa3NfbWF4X29iamVjdF9zaXplLCBvdXRsZW4pOworICBp ZiAocmMgPT0gKGludCkgSUVFRTEyNzVfQ0VMTF9OT1RfRk9VTkQpCisgICAgcmV0dXJuIGdydWJf ZXJyb3IgKEdSVUJfRVJSX1VOS05PV05fQ09NTUFORCwgInNlY3VyZSBib290IHZhcmlhYmxlICVz IG5vdCBmb3VuZCAoJWQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgKHNidmFydHlwZSA9PSBE QiA/ICJkYiIgOiAiZGJ4IiksIHJjKTsKKyAgZWxzZSBpZiAocmMgIT0gMCkKKyAgICByZXR1cm4g Z3J1Yl9lcnJvciAoR1JVQl9FUlJfUkVBRF9FUlJPUiwgInNlY3VyZSBib290IHZhcmlhYmxlICVz IHJlYWRpbmcgKCVkKSIsCisgICAgICAgICAgICAgICAgICAgICAgIChzYnZhcnR5cGUgPT0gREIg PyAiZGIiIDogImRieCIpLCByYyk7CisKKyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7Cit9CisKKy8q IFRlc3QgdGhlIGF2YWlsYWJpbGl0eSBvZiBQS1Mgc3VwcG9ydC4gKi8KK3N0YXRpYyBncnViX2Vy cl90Citpc19zdXBwb3J0X3BrcyAodm9pZCkKK3sKKyAgaW50IHJjOworICBncnViX2llZWUxMjc1 X2NlbGxfdCBtaXNzaW5nID0gMDsKKworICByYyA9IGdydWJfaWVlZTEyNzVfdGVzdCAoInBrcy1t YXgtb2JqZWN0LXNpemUiLCAmbWlzc2luZyk7CisgIGlmIChyYyAhPSAwIHx8IG1pc3NpbmcgPT0g SUVFRTEyNzVfQ0VMTF9JTlZBTElEKQorICAgIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9GSVJN V0FSRSwgImZpcm13YXJlIGRvZXNuJ3QgaGF2ZSBQS1Mgc3VwcG9ydC5cbiIpOworICBlbHNlCisg ICAgeworICAgICAgcmMgPSBncnViX2llZWUxMjc1X3Brc19tYXhfb2JqZWN0X3NpemUgKCZwa3Nf bWF4X29iamVjdF9zaXplKTsKKyAgICAgIGlmIChyYyAhPSAwKQorICAgICAgICBncnViX2Vycm9y IChHUlVCX0VSUl9CQURfTlVNQkVSLCAiUEtTIHN1cHBvcnQgaXMgdGhlcmUgYnV0IGl0IGhhcyB6 ZXJvIG9iamVjdHMuXG4iKTsKKyAgICB9CisKKyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7Cit9CisK Ky8qCisgKiBSZXRyaWV2ZSB0aGUgc2VjdXJlIGJvb3QgdmFyaWFibGUgZnJvbSBQS1MsIHVucGFj a3MgaXQsIHJlYWQgdGhlIGVzZAorICogZnJvbSBFU0wsIGFuZCBzdG9yZSB0aGUgaW5mb3JtYXRp b24gaW4gdGhlIHBrcyBzZCBidWZmZXIuCisgKi8KK3N0YXRpYyBncnViX2Vycl90CityZWFkX3Nl Y3VyZV9ib290X3ZhcmlhYmxlcyAoY29uc3QgZ3J1Yl91aW50OF90IHNidmFyZmxhZ3MsIGNvbnN0 IGdydWJfdWludDhfdCBzYnZhcnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1 Yl9wa3Nfc2RfdCAqKnBrc19zZCwgZ3J1Yl9zaXplX3QgKnBrc19zZF9lbnRyaWVzKQoreworICBn cnViX2Vycl90IHJjOworICBncnViX3VpbnQ4X3QgKmVzbF9kYXRhID0gTlVMTDsKKyAgZ3J1Yl9z aXplX3QgZXNsX2RhdGFfc2l6ZSA9IDA7CisKKyAgcmMgPSByZWFkX3NidmFyX2Zyb21fcGtzIChz YnZhcmZsYWdzLCBzYnZhcnR5cGUsICZlc2xfZGF0YSwgJmVzbF9kYXRhX3NpemUpOworICBpZiAo cmMgPT0gR1JVQl9FUlJfTk9ORSAmJiBlc2xfZGF0YV9zaXplICE9IDApCisgICAgcmMgPSBwa3Nf c2RfZnJvbV9lc2wgKChjb25zdCBncnViX3VpbnQ4X3QgKikgZXNsX2RhdGEsIGVzbF9kYXRhX3Np emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBrc19zZCwgcGtzX3NkX2VudHJpZXMpOwor ICBncnViX2ZyZWUgKGVzbF9kYXRhKTsKKworICByZXR1cm4gcmM7Cit9CisKKy8qCisgKiBSZWFk cyBzZWN1cmUgYm9vdCB2ZXJzaW9uIChTQl9WRVJTSU9OKSBhbmQgaXQgc3VwcG9ydHMgZm9sbG93 aW5nLgorICogU0JfVkVSU0lPTgorICogMSAtIFBLUworICogMCAtIHN0YXRpYyBrZXkgKGVtYmVk ZWQga2V5KQorICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorZ2V0X3NlY3VyZV9ib290X3ZlcnNpb24g KHZvaWQpCit7CisgIGdydWJfZXJyX3QgcmM7CisgIGdydWJfdWludDhfdCAqZGF0YSA9IE5VTEw7 CisgIGdydWJfc2l6ZV90IGxlbiA9IDAsIHBvbGljeSA9IDA7CisKKyAgcmMgPSByZWFkX3NidmVy c2lvbl9mcm9tX3BrcyAoJmRhdGEsICZsZW4sICZwb2xpY3kpOworICBpZiAocmMgPT0gR1JVQl9F UlJfTk9ORSAmJiAobGVuICE9IDEgfHwgKCpkYXRhID49IDIpKSkKKyAgICByYyA9IGdydWJfZXJy b3IgKEdSVUJfRVJSX0JBRF9OVU1CRVIsICJmb3VuZCB1bmV4cGVjdGVkIFNCIHZlcnNpb24gKCVk KVxuIiwgKmRhdGEpOworCisgIGlmIChyYyAhPSBHUlVCX0VSUl9OT05FKQorICAgIHsKKyAgICAg IGdydWJfcHJpbnRmICgic3dpdGNoIHRvIHN0YXRpYyBrZXkuXG4iKTsKKyAgICAgIGlmIChncnVi X2lzX2xvY2tkb3duICgpID09IEdSVUJfTE9DS0RPV05fRU5BQkxFRCkKKyAgICAgICAgZ3J1Yl9m YXRhbCAoInNlY3VyZSBib290IGxvY2tlZCBkb3duLiIpOworICAgIH0KKyAgZWxzZQorICAgIGdy dWJfcGtzX3VzZV9rZXlzdG9yZSA9ICpkYXRhOworCisgIGdydWJfZnJlZSAoZGF0YSk7CisKKyAg cmV0dXJuIHJjOworfQorCisvKiBGcmVlIGFsbG9jYXRlZCBtZW1vcnkuICovCit2b2lkCitncnVi X3Brc19mcmVlX2tleXN0b3JlICh2b2lkKQoreworICBncnViX3NpemVfdCBpOworCisgIGZvciAo aSA9IDA7IGkgPCBncnViX3Brc19rZXlzdG9yZS5kYl9lbnRyaWVzOyBpKyspCisgICAgZ3J1Yl9m cmVlIChncnViX3Brc19rZXlzdG9yZS5kYltpXS5kYXRhKTsKKworICBmb3IgKGkgPSAwOyBpIDwg Z3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4X2VudHJpZXM7IGkrKykKKyAgICBncnViX2ZyZWUgKGdydWJf cGtzX2tleXN0b3JlLmRieFtpXS5kYXRhKTsKKworICBncnViX2ZyZWUgKGdydWJfcGtzX2tleXN0 b3JlLmRiKTsKKyAgZ3J1Yl9mcmVlIChncnViX3Brc19rZXlzdG9yZS5kYngpOworICBncnViX21l bXNldCAoJmdydWJfcGtzX2tleXN0b3JlLCAwLCBzaXplb2YgKGdydWJfcGtzX3QpKTsKK30KKwor LyogSW5pdGlhbGl6YXRpb24gb2YgdGhlIFBsYXRmb3JtIEtleXN0b3JlLiAqLworZ3J1Yl9lcnJf dAorZ3J1Yl9wa3Nfa2V5c3RvcmVfaW5pdCAodm9pZCkKK3sKKyAgZ3J1Yl9lcnJfdCByYzsKKwor ICBncnViX2RwcmludGYgKCJpZWVlMTI3NSIsICJ0cnlpbmcgdG8gbG9hZCBQbGF0Zm9ybSBLZXlz dG9yZS5cbiIpOworCisgIHJjID0gaXNfc3VwcG9ydF9wa3MgKCk7CisgIGlmIChyYyAhPSBHUlVC X0VSUl9OT05FKQorICAgIHsKKyAgICAgIGdydWJfcHJpbnRmICgic3dpdGNoIHRvIHN0YXRpYyBr ZXkuXG4iKTsKKyAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgLyogUmVhZCBTQl9WRVJTSU9O IGZyb20gUEtTLiAqLworICByYyA9IGdldF9zZWN1cmVfYm9vdF92ZXJzaW9uICgpOworICBpZiAo cmMgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICByZXR1cm4gcmM7CisKKyAgaWYgKGdydWJfcGtzX3Vz ZV9rZXlzdG9yZSkKKyAgICB7CisgICAgICBncnViX21lbXNldCAoJmdydWJfcGtzX2tleXN0b3Jl LCAwLCBzaXplb2YgKGdydWJfcGtzX3QpKTsKKyAgICAgIC8qIFJlYWQgREIgZnJvbSBQS1MuICov CisgICAgICByYyA9IHJlYWRfc2VjdXJlX2Jvb3RfdmFyaWFibGVzICgwLCBEQiwgJmdydWJfcGtz X2tleXN0b3JlLmRiLCAmZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJfZW50cmllcyk7CisgICAgICBpZiAo cmMgPT0gR1JVQl9FUlJfTk9ORSkKKyAgICAgICAgeworICAgICAgICAgIC8qIFJlYWQgREJYIGZy b20gUEtTLiAqLworICAgICAgICAgIHJjID0gcmVhZF9zZWN1cmVfYm9vdF92YXJpYWJsZXMgKDAs IERCWCwgJmdydWJfcGtzX2tleXN0b3JlLmRieCwgJmdydWJfcGtzX2tleXN0b3JlLmRieF9lbnRy aWVzKTsKKyAgICAgICAgICBpZiAocmMgPT0gR1JVQl9FUlJfVU5LTk9XTl9DT01NQU5EKQorICAg ICAgICAgICAgeworICAgICAgICAgICAgICBncnViX2RwcmludGYgKCJpZWVlMTI3NSIsICJkYngg aXMgbm90IGZvdW5kIGluIFBLUy5cbiIpOworICAgICAgICAgICAgICByYyA9IEdSVUJfRVJSX05P TkU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0KKworICBpZiAocmMgIT0gR1JV Ql9FUlJfTk9ORSkKKyAgICBncnViX3Brc19mcmVlX2tleXN0b3JlICgpOworCisgIHJldHVybiBy YzsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9pZWVlMTI3NS9pZWVlMTI3NS5oIGIvaW5j bHVkZS9ncnViL2llZWUxMjc1L2llZWUxMjc1LmgKaW5kZXggYzQ0NWQwNDk5Li4zOTY1YzVmYzYg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi9pZWVlMTI3NS9pZWVlMTI3NS5oCisrKyBiL2luY2x1 ZGUvZ3J1Yi9pZWVlMTI3NS9pZWVlMTI3NS5oCkBAIC0yNCw2ICsyNCw5IEBACiAjaW5jbHVkZSA8 Z3J1Yi90eXBlcy5oPgogI2luY2x1ZGUgPGdydWIvbWFjaGluZS9pZWVlMTI3NS5oPgogCisjZGVm aW5lIElFRUUxMjc1X0NFTExfSU5WQUxJRCAgICAgICAgICAoKGdydWJfaWVlZTEyNzVfY2VsbF90 KSAtMSkKKyNkZWZpbmUgSUVFRTEyNzVfQ0VMTF9OT1RfRk9VTkQgICAgICAgICgoZ3J1Yl9pZWVl MTI3NV9jZWxsX3QpIC03KQorCiAjZGVmaW5lIEdSVUJfSUVFRTEyNzVfQ0VMTF9GQUxTRSAgICAg ICAoKGdydWJfaWVlZTEyNzVfY2VsbF90KSAwKQogI2RlZmluZSBHUlVCX0lFRUUxMjc1X0NFTExf VFJVRSAgICAgICAgKChncnViX2llZWUxMjc1X2NlbGxfdCkgLTEpCiAKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvZ3J1Yi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1LmggYi9pbmNsdWRlL2dydWIvcG93 ZXJwYy9pZWVlMTI3NS9pZWVlMTI3NS5oCmluZGV4IDRlYjIwNzAxOC4uMTc3MmQxZjZkIDEwMDY0 NAotLS0gYS9pbmNsdWRlL2dydWIvcG93ZXJwYy9pZWVlMTI3NS9pZWVlMTI3NS5oCisrKyBiL2lu Y2x1ZGUvZ3J1Yi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1LmgKQEAgLTI4LDQgKzI4LDI1IEBA IHR5cGVkZWYgZ3J1Yl91aW50MzJfdCBncnViX2llZWUxMjc1X2NlbGxfdDsKICNkZWZpbmUgUFJJ eEdSVUJfSUVFRTEyNzVfQ0VMTF9UCVBSSXhHUlVCX1VJTlQzMl9UCiAjZGVmaW5lIFBSSXVHUlVC X0lFRUUxMjc1X0NFTExfVAlQUkl1R1JVQl9VSU5UMzJfVAogCisjaWZkZWYgX19wb3dlcnBjX18K KworZXh0ZXJuIGludAorRVhQT1JUX0ZVTkMgKGdydWJfaWVlZTEyNzVfdGVzdCkgKGNvbnN0IGNo YXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1Yl9pZWVlMTI3 NV9jZWxsX3QgKm1pc3NpbmcpOworCitleHRlcm4gaW50CitncnViX2llZWUxMjc1X3Brc19tYXhf b2JqZWN0X3NpemUgKGdydWJfc2l6ZV90ICpyZXN1bHQpOworCitleHRlcm4gaW50CitncnViX2ll ZWUxMjc1X3Brc19yZWFkX29iamVjdCAoZ3J1Yl91aW50OF90IGNvbnN1bWVyLCBncnViX3VpbnQ4 X3QgKmxhYmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfc2l6ZV90IGxh YmVsX2xlbiwgZ3J1Yl91aW50OF90ICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3J1Yl9zaXplX3QgYnVmZmVyX2xlbiwgZ3J1Yl9zaXplX3QgKmRhdGFfbGVuLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfdWludDMyX3QgKnBvbGljaWVzKTsKKwor ZXh0ZXJuIGludAorZ3J1Yl9pZWVlMTI3NV9wa3NfcmVhZF9zYnZhciAoZ3J1Yl91aW50OF90IHNi dmFyZmxhZ3MsIGdydWJfdWludDhfdCBzYnZhcnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBncnViX3VpbnQ4X3QgKmJ1ZmZlciwgZ3J1Yl9zaXplX3QgYnVmZmVyX2xlbiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfc2l6ZV90ICpkYXRhX2xlbik7CisjZW5k aWYKKwogI2VuZGlmIC8qICEgR1JVQl9JRUVFMTI3NV9NQUNISU5FX0hFQURFUiAqLwpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9ncnViL3Bvd2VycGMvaWVlZTEyNzUvcGxhdGZvcm1fa2V5c3RvcmUuaCBi L2luY2x1ZGUvZ3J1Yi9wb3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tleXN0b3JlLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5kNDhjNjAyMDAKLS0tIC9kZXYvbnVsbAor KysgYi9pbmNsdWRlL2dydWIvcG93ZXJwYy9pZWVlMTI3NS9wbGF0Zm9ybV9rZXlzdG9yZS5oCkBA IC0wLDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxNSwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMKKyAqIHByb2dyYW0gYW5kIHRo ZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUK KyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgMi1DbGF1c2UgQlNEIExp Y2Vuc2Ugd2hpY2gKKyAqIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLgorICoKKyAqIFJl ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25z IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAor ICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K KyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQv b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg Q09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI VCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K KyAqCisgKiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazItc3RhZ2luZyAoZWRrMi1z dGFnaW5nIHJlcG8gb2YgdGlhbm9jb3JlKSwKKyAqIHRoZSBJbWFnZUF1dGhlbnRpY2F0aW9uLmgg ZmlsZSB1bmRlciBpdCwgYW5kIGhlcmUncyB0aGUgY29weXJpZ2h0IGFuZCBsaWNlbnNlLgorICoK KyAqIE1kZVBrZy9JbmNsdWRlL0d1aWQvSW1hZ2VBdXRoZW50aWNhdGlvbi5oCisgKgorICogQ29w eXJpZ2h0IDIwMjIsIDIwMjMsIDIwMjQsIDIwMjUgSUJNIENvcnAuCisgKi8KKworI2lmbmRlZiBf X1BMQVRGT1JNX0tFWVNUT1JFX0hfXworI2RlZmluZSBfX1BMQVRGT1JNX0tFWVNUT1JFX0hfXwor CisjaW5jbHVkZSA8Z3J1Yi9zeW1ib2wuaD4KKyNpbmNsdWRlIDxncnViL21tLmg+CisjaW5jbHVk ZSA8Z3J1Yi90eXBlcy5oPgorCisjaWYgX19HTlVDX18gPj0gOQorI3ByYWdtYSBHQ0MgZGlhZ25v c3RpYyBpZ25vcmVkICItV2FkZHJlc3Mtb2YtcGFja2VkLW1lbWJlciIKKyNlbmRpZgorCisjZGVm aW5lIEdSVUJfTUFYX0hBU0hfU0laRSA2NAorCisvKiBTZWN1cmUgQm9vdCBNb2RlLiAqLworI2Rl ZmluZSBTQl9ESVNBQkxFRCAgICAgICAgMAorI2RlZmluZSBTQl9FTkZPUkNFRCAgICAgICAgMgor CisvKgorICogSXQgaXMgZGVyaXZlZCBmcm9tIEVGSV9TSUdOQVRVUkVfREFUQQorICogaHR0cHM6 Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLXN0YWdpbmcvYmxvYi9tYXN0ZXIvTWRlUGtnL0lu Y2x1ZGUvR3VpZC9JbWFnZUF1dGhlbnRpY2F0aW9uLmgKKyAqCisgKiBUaGUgc3RydWN0dXJlIG9m IGFuIEVGSSBzaWduYXR1cmUgZGF0YWJhc2UgKEVTRCkuKi8KK3N0cnVjdCBncnViX2VzZAorewor ICAvKgorICAgKiBBbiBpZGVudGlmaWVyIHdoaWNoIGlkZW50aWZpZXMgdGhlIGFnZW50IHdoaWNo IGFkZGVkCisgICAqIHRoZSBzaWduYXR1cmUgdG8gdGhlIGxpc3QuCisgICAqLworICBncnViX3Bh Y2tlZF9ndWlkX3Qgc2lnbmF0dXJlX293bmVyOworICAvKiBUaGUgZm9ybWF0IG9mIHRoZSBzaWdu YXR1cmUgaXMgZGVmaW5lZCBieSB0aGUgU2lnbmF0dXJlVHlwZS4qLworICBncnViX3VpbnQ4X3Qg c2lnbmF0dXJlX2RhdGFbXTsKK30gR1JVQl9QQUNLRUQ7CisKK3R5cGVkZWYgc3RydWN0IGdydWJf ZXNkIGdydWJfZXNkX3Q7CisKKy8qCisgKiBJdCBpcyBkZXJpdmVkIGZyb20gRUZJX1NJR05BVFVS RV9MSVNUCisgKiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazItc3RhZ2luZy9ibG9i L21hc3Rlci9NZGVQa2cvSW5jbHVkZS9HdWlkL0ltYWdlQXV0aGVudGljYXRpb24uaAorICoKKyAq IFRoZSBzdHJ1Y3R1cmUgb2YgYW4gRUZJIHNpZ25hdHVyZSBsaXN0IChFU0wpLiovCitzdHJ1Y3Qg Z3J1Yl9lc2wKK3sKKyAgLyogVHlwZSBvZiB0aGUgc2lnbmF0dXJlLiBHVUlEIHNpZ25hdHVyZSB0 eXBlcyBhcmUgZGVmaW5lZCBpbiBiZWxvdy4qLworICBncnViX3BhY2tlZF9ndWlkX3Qgc2lnbmF0 dXJlX3R5cGU7CisgIC8qIFRvdGFsIHNpemUgb2YgdGhlIHNpZ25hdHVyZSBsaXN0LCBpbmNsdWRp bmcgdGhpcyBoZWFkZXIuKi8KKyAgZ3J1Yl91aW50MzJfdCBzaWduYXR1cmVfbGlzdF9zaXplOwor ICAvKgorICAgKiBTaXplIG9mIHRoZSBzaWduYXR1cmUgaGVhZGVyIHdoaWNoIHByZWNlZGVzCisg ICAqIHRoZSBhcnJheSBvZiBzaWduYXR1cmVzLgorICAgKi8KKyAgZ3J1Yl91aW50MzJfdCBzaWdu YXR1cmVfaGVhZGVyX3NpemU7CisgIC8qIFNpemUgb2YgZWFjaCBzaWduYXR1cmUuKi8KKyAgZ3J1 Yl91aW50MzJfdCBzaWduYXR1cmVfc2l6ZTsKK30gR1JVQl9QQUNLRUQ7CisKK3R5cGVkZWYgc3Ry dWN0IGdydWJfZXNsIGdydWJfZXNsX3Q7CisKKy8qIFRoZSBzdHJ1Y3R1cmUgb2YgYSBQS1Mgc2ln bmF0dXJlIGRhdGEuKi8KK3N0cnVjdCBncnViX3Brc19zZAoreworICBncnViX3BhY2tlZF9ndWlk X3QgZ3VpZDsgLyogU2lnbmF0dXJlIHR5cGUuICovCisgIGdydWJfdWludDhfdCAqZGF0YTsgICAg ICAvKiBTaWduYXR1cmUgZGF0YS4gKi8KKyAgZ3J1Yl9zaXplX3QgZGF0YV9zaXplOyAgIC8qIFNp emUgb2Ygc2lnbmF0dXJlIGRhdGEuICovCit9IEdSVUJfUEFDS0VEOworCit0eXBlZGVmIHN0cnVj dCBncnViX3Brc19zZCBncnViX3Brc19zZF90OworCisvKiBUaGUgc3RydWN0dXJlIG9mIGEgUEtT LiovCitzdHJ1Y3QgZ3J1Yl9wa3MKK3sKKyAgZ3J1Yl9wa3Nfc2RfdCAqZGI7ICAgICAgICAvKiBT aWduYXR1cmUgZGF0YWJhc2UuICovCisgIGdydWJfcGtzX3NkX3QgKmRieDsgICAgICAgLyogRm9y YmlkZGVuIHNpZ25hdHVyZSBkYXRhYmFzZS4gKi8KKyAgZ3J1Yl9zaXplX3QgZGJfZW50cmllczsg ICAvKiBTaXplIG9mIHNpZ25hdHVyZSBkYXRhYmFzZS4gKi8KKyAgZ3J1Yl9zaXplX3QgZGJ4X2Vu dHJpZXM7ICAvKiBTaXplIG9mIGZvcmJpZGRlbiBzaWduYXR1cmUgZGF0YWJhc2UuICovCit9IEdS VUJfUEFDS0VEOworCit0eXBlZGVmIHN0cnVjdCBncnViX3BrcyBncnViX3Brc190OworCisvKiBJ bml0aWFsaXphdGlvbiBvZiB0aGUgUGxhdGZvcm0gS2V5c3RvcmUuICovCitleHRlcm4gZ3J1Yl9l cnJfdAorZ3J1Yl9wa3Nfa2V5c3RvcmVfaW5pdCAodm9pZCk7CisKKy8qIEZyZWUgYWxsb2NhdGVk IG1lbW9yeS4gKi8KK2V4dGVybiB2b2lkCitFWFBPUlRfRlVOQyAoZ3J1Yl9wa3NfZnJlZV9rZXlz dG9yZSkgKHZvaWQpOworCitleHRlcm4gZ3J1Yl91aW50OF90IEVYUE9SVF9WQVIgKGdydWJfcGtz X3VzZV9rZXlzdG9yZSk7CitleHRlcm4gZ3J1Yl9wa3NfdCBFWFBPUlRfVkFSIChncnViX3Brc19r ZXlzdG9yZSk7CisKKyNlbmRpZgotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkdydWItZGV2ZWwgbWFpbGlu ZyBsaXN0CkdydWItZGV2ZWxAZ251Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcvbWFpbG1hbi9s aXN0aW5mby9ncnViLWRldmVsCg==