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 A6F97CAC592 for ; Mon, 22 Sep 2025 09:30:53 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v0crf-0001M3-Tz; Mon, 22 Sep 2025 05:29:43 -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 1v0cra-0001Ky-HX for grub-devel@gnu.org; Mon, 22 Sep 2025 05:29:39 -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 1v0crS-0007Ny-Fq for grub-devel@gnu.org; Mon, 22 Sep 2025 05:29:38 -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 58M5WqhU008240; Mon, 22 Sep 2025 09:29:25 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=yCLyRhroLulNG9q+F Y94ru5suWukaxpwrjofnfkehrw=; b=q7ef3rPzen96xm0HMU6vlv1M81/OgUn2X YClBuyp8X3Bfhi96QahbWW5rKxO3Mf/RmToFphymniMX5q40dQlKzLy7V7KTPLl2 PmJv4abWfrwPCCM66nJ9XfDkV2ANVAajWo6DB6VhY6Pd1LeDpEVBFTcUiaaYbpT0 QYiZBaPS6oiIwyJObv/TyeGN02tb1L+nnQpVmqPMdyu9Pczbv3184IR4Fq1CkGOk nVoT+5gej+ZpMBtvIliv6QI/1srka3kSR+stDqhzy7vuqt1BvaWq8QA4Y/lxtW7x wV4KDMXUkm9i7cOYBB8VmN0zDh4uQD9XAE+xcS2/731Y4SqWBrl5Q== 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 499hpq1t5w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 Sep 2025 09:29:25 +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 58M66Rud030345; Mon, 22 Sep 2025 09:29:24 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 49a9a0w4gg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 Sep 2025 09:29:24 +0000 Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 58M9TK2F47972712 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 22 Sep 2025 09:29:20 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C502C2004F; Mon, 22 Sep 2025 09:29:20 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id AB72420043; Mon, 22 Sep 2025 09:29:17 +0000 (GMT) Received: from localhost.localdomain (unknown [9.124.218.27]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 22 Sep 2025 09:29:17 +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 v12 11/22] powerpc_ieee1275: Read the db and dbx secure boot variables Date: Mon, 22 Sep 2025 14:57:52 +0530 Message-ID: <20250922092814.39630-12-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250922092814.39630-1-sudhakar@linux.ibm.com> References: <20250922092814.39630-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=FrEF/3rq c=1 sm=1 tr=0 ts=68d116f5 cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=yJojWOMRYYMA:10 a=mDV3o1hIAAAA:8 a=NEAV23lmAAAA:8 a=VnNF1IyMAAAA:8 a=-gF6cklxeiXeCHP5XHIA:9 a=3ZKOabzyN94A:10 X-Proofpoint-ORIG-GUID: TpDGmM9p29ufiKvyTQ9Ng80MBi7Cc8M- X-Proofpoint-GUID: TpDGmM9p29ufiKvyTQ9Ng80MBi7Cc8M- X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTE5MDIyNCBTYWx0ZWRfX5RknUBnWCWyt oBBnip5pcE5KgFX+QdoXPUaW/aO1KDhsD9GDMpzHoODAmlcHXVK8UY23zmTMlttC/jNeaU2O9VH r3KEqmNKN5aOCRgiW94TZ1hqxEqYoZsHZkEzuLkoB8e2oOY0ADy9MOSVrbjyYO2H6+dSXCNcJOn LTJ3tufLVRgOShIvzo7raIN0jjmN8VQ4NRivWLDeTaPkUDY/FfHCEMSAqFY/LxT2JUlZR7fZYzV G6EJKR0vFW/d66cjLY87EeD5/Cq9ajBSyY1jkYZ6sPXQo4bw1WQ9XFe9R9+BHPTYsx8JqazxS78 ZlNAroceTCgHCTBE0S0i4Zi5mpGT1r7QjNAEpmYoDVGx+Dpo4FcnaOlsKM4VWq9n+OMP5X7vAAE 21d31k4X X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-22_01,2025-09-19_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 phishscore=0 priorityscore=1501 malwarescore=0 adultscore=0 clxscore=1015 impostorscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2509190224 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.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 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 b3JlIChQS1MpIGZlYXR1cmUsCndoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgU0JfVkVSU0lP TiwgZGIsIGFuZCBkYnggc2VjdXJlIGJvb3QgdmFyaWFibGVzCmZyb20gUEtTLgoKSWYgUEtTIGlz IGVuYWJsZWQsIGl0IHdpbGwgcmVhZCBzZWN1cmUgYm9vdCB2YXJpYWJsZXMgc3VjaCBhcyBkYiBh bmQgZGJ4CmZyb20gUEtTIGFuZCBleHRyYWN0IEVGSSBTaWduYXR1cmUgTGlzdCAoRVNMKSBmcm9t IGl0LiBUaGUgRVNMcyB3b3VsZCBiZQpzYXZlZCBpbiB0aGUgUGxhdGZvcm0gS2V5c3RvcmUgYnVm ZmVyLCBhbmQgdGhlIGFwcGVuZGVkc2lnIG1vZHVsZSB3b3VsZApyZWFkIGl0IGxhdGVyIHRvIGV4 dHJhY3QgdGhlIGNlcnRpZmljYXRlJ3MgZGV0YWlscyBmcm9tIEVTTC4KCkluIHRoZSBmb2xsb3dp bmcgc2NlbmFyaW9zLCBzdGF0aWMga2V5IG1hbmFnZW1lbnQgbW9kZSB3aWxsIGJlIGFjdGl2YXRl ZDoKIDEuIFdoZW4gU2VjdXJlIEJvb3QgaXMgZW5hYmxlZCB3aXRoIHN0YXRpYyBrZXkgbWFuYWdl bWVudCBtb2RlCiAyLiBXaGVuIFNCX1ZFUlNJT04gaXMgdW5hdmFpbGFibGUgYnV0IFNlY3VyZSBC b290IGlzIGVuYWJsZWQKIDMuIFdoZW4gUEtTIHN1cHBvcnQgaXMgdW5hdmFpbGFibGUgYnV0IFNl Y3VyZSBCb290IGlzIGVuYWJsZWQKCk5vdGU6LQoKIFNCX1ZFUlNJT046IEtleSBNYW5hZ2VtZW50 IE1vZGUKIDEgLSBFbmFibGUgZHluYW1pYyBrZXkgbWFuYWdlbWVudCBtb2RlLiBSZWFkIHRoZSBk YiBhbmQgZGJ4IHZhcmlhYmxlcyBmcm9tIFBLUywKICAgICBhbmQgdXNlIHRoZW0gZm9yIHNpZ25h dHVyZSB2ZXJpZmljYXRpb24uCiAwIC0gRW5hYmxlIHN0YXRpYyBrZXkgbWFuYWdlbWVudCBtb2Rl LiBSZWFkIGtleXMgZnJvbSB0aGUgR1JVQiBFTEYgTm90ZSBhbmQKICAgICB1c2UgaXQgZm9yIHNp Z25hdHVyZSB2ZXJpZmljYXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBTdWRoYWthciBLdXBwdXNhbXkg PHN1ZGhha2FyQGxpbnV4LmlibS5jb20+Ci0tLQogZ3J1Yi1jb3JlL01ha2VmaWxlLmFtICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyICsKIGdydWItY29yZS9NYWtlZmlsZS5jb3JlLmRlZiAg ICAgICAgICAgICAgICAgICB8ICAgMiArCiBncnViLWNvcmUva2Vybi9pZWVlMTI3NS9pZWVlMTI3 NS5jICAgICAgICAgICAgfCAgIDEgLQogZ3J1Yi1jb3JlL2tlcm4vaWVlZTEyNzUvaW5pdC5jICAg ICAgICAgICAgICAgIHwgICA0ICsKIGdydWItY29yZS9rZXJuL3Bvd2VycGMvaWVlZTEyNzUvaWVl ZTEyNzUuYyAgICB8IDEzNyArKysrKysrCiAuLi4va2Vybi9wb3dlcnBjL2llZWUxMjc1L3BsYXRm b3JtX2tleXN0b3JlLmMgfCAzNDcgKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2dydWIvaWVl ZTEyNzUvaWVlZTEyNzUuaCAgICAgICAgICAgICAgfCAgIDMgKwogaW5jbHVkZS9ncnViL3Bvd2Vy cGMvaWVlZTEyNzUvaWVlZTEyNzUuaCAgICAgIHwgIDE4ICsKIC4uLi9ncnViL3Bvd2VycGMvaWVl ZTEyNzUvcGxhdGZvcm1fa2V5c3RvcmUuaCB8IDEyNiArKysrKysrCiA5IGZpbGVzIGNoYW5nZWQs IDYzOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ3J1 Yi1jb3JlL2tlcm4vcG93ZXJwYy9pZWVlMTI3NS9pZWVlMTI3NS5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ3J1Yi1jb3JlL2tlcm4vcG93ZXJwYy9pZWVlMTI3NS9wbGF0Zm9ybV9rZXlzdG9yZS5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9ncnViL3Bvd2VycGMvaWVlZTEyNzUvcGxhdGZvcm1f a2V5c3RvcmUuaAoKZGlmZiAtLWdpdCBhL2dydWItY29yZS9NYWtlZmlsZS5hbSBiL2dydWItY29y ZS9NYWtlZmlsZS5hbQppbmRleCBlNTBkYjgxMDYuLjg1Nzc0NjJkNSAxMDA2NDQKLS0tIGEvZ3J1 Yi1jb3JlL01ha2VmaWxlLmFtCisrKyBiL2dydWItY29yZS9NYWtlZmlsZS5hbQpAQCAtMjQ2LDYg KzI0Niw4IEBAIEtFUk5FTF9IRUFERVJfRklMRVMgKz0gJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL2dy dWIvaWVlZTEyNzUvYWxsb2MuaAogS0VSTkVMX0hFQURFUl9GSUxFUyArPSAkKHRvcF9zcmNkaXIp L2luY2x1ZGUvZ3J1Yi90ZXJtaW5mby5oCiBLRVJORUxfSEVBREVSX0ZJTEVTICs9ICQodG9wX3Ny Y2RpcikvaW5jbHVkZS9ncnViL2V4dGNtZC5oCiBLRVJORUxfSEVBREVSX0ZJTEVTICs9ICQodG9w X3NyY2RpcikvaW5jbHVkZS9ncnViL2xpYi9hcmcuaAorS0VSTkVMX0hFQURFUl9GSUxFUyArPSAk KHRvcF9zcmNkaXIpL2luY2x1ZGUvZ3J1Yi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1LmgKK0tF Uk5FTF9IRUFERVJfRklMRVMgKz0gJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL2dydWIvcG93ZXJwYy9p ZWVlMTI3NS9wbGF0Zm9ybV9rZXlzdG9yZS5oCiBlbmRpZgogCiBpZiBDT05EX3NwYXJjNjRfaWVl ZTEyNzUKZGlmZiAtLWdpdCBhL2dydWItY29yZS9NYWtlZmlsZS5jb3JlLmRlZiBiL2dydWItY29y ZS9NYWtlZmlsZS5jb3JlLmRlZgppbmRleCA2ODI0YTBlZTQuLjg1M2Q4NzlhNCAxMDA2NDQKLS0t IGEvZ3J1Yi1jb3JlL01ha2VmaWxlLmNvcmUuZGVmCisrKyBiL2dydWItY29yZS9NYWtlZmlsZS5j b3JlLmRlZgpAQCAtMzM0LDYgKzMzNCw4IEBAIGtlcm5lbCA9IHsKICAgcG93ZXJwY19pZWVlMTI3 NSA9IGtlcm4vcG93ZXJwYy9kbC5jOwogICBwb3dlcnBjX2llZWUxMjc1ID0ga2Vybi9wb3dlcnBj L2NvbXBpbGVyLXJ0LlM7CiAgIHBvd2VycGNfaWVlZTEyNzUgPSBrZXJuL2xvY2tkb3duLmM7Cisg IHBvd2VycGNfaWVlZTEyNzUgPSBrZXJuL3Bvd2VycGMvaWVlZTEyNzUvaWVlZTEyNzUuYzsKKyAg cG93ZXJwY19pZWVlMTI3NSA9IGtlcm4vcG93ZXJwYy9pZWVlMTI3NS9wbGF0Zm9ybV9rZXlzdG9y ZS5jOwogCiAgIHNwYXJjNjRfaWVlZTEyNzUgPSBrZXJuL3NwYXJjNjQvY2FjaGUuUzsKICAgc3Bh cmM2NF9pZWVlMTI3NSA9IGtlcm4vc3BhcmM2NC9kbC5jOwpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3Jl L2tlcm4vaWVlZTEyNzUvaWVlZTEyNzUuYyBiL2dydWItY29yZS9rZXJuL2llZWUxMjc1L2llZWUx Mjc1LmMKaW5kZXggMzZjYTJkYmZjLi5hZmEzN2E5ZjAgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9r ZXJuL2llZWUxMjc1L2llZWUxMjc1LmMKKysrIGIvZ3J1Yi1jb3JlL2tlcm4vaWVlZTEyNzUvaWVl ZTEyNzUuYwpAQCAtMjMsNyArMjMsNiBAQAogCiAjZGVmaW5lIElFRUUxMjc1X1BIQU5ETEVfSU5W QUxJRCAgKChncnViX2llZWUxMjc1X2NlbGxfdCkgLTEpCiAjZGVmaW5lIElFRUUxMjc1X0lIQU5E TEVfSU5WQUxJRCAgKChncnViX2llZWUxMjc1X2NlbGxfdCkgMCkKLSNkZWZpbmUgSUVFRTEyNzVf Q0VMTF9JTlZBTElEICAgICAoKGdydWJfaWVlZTEyNzVfY2VsbF90KSAtMSkKIAogDAogCmRpZmYg LS1naXQgYS9ncnViLWNvcmUva2Vybi9pZWVlMTI3NS9pbml0LmMgYi9ncnViLWNvcmUva2Vybi9p ZWVlMTI3NS9pbml0LmMKaW5kZXggOGY1MzZkOWI1Li5hNTA4YzE2NDEgMTAwNjQ0Ci0tLSBhL2dy dWItY29yZS9rZXJuL2llZWUxMjc1L2luaXQuYworKysgYi9ncnViLWNvcmUva2Vybi9pZWVlMTI3 NS9pbml0LmMKQEAgLTUxLDYgKzUxLDggQEAKICNlbmRpZgogI2lmIGRlZmluZWQoX19wb3dlcnBj X18pCiAjaW5jbHVkZSA8Z3J1Yi9sb2NrZG93bi5oPgorI2luY2x1ZGUgPGdydWIvcG93ZXJwYy9p ZWVlMTI3NS9pZWVlMTI3NS5oPgorI2luY2x1ZGUgPGdydWIvcG93ZXJwYy9pZWVlMTI3NS9wbGF0 Zm9ybV9rZXlzdG9yZS5oPgogI2VuZGlmCiAKICNpZmRlZiBfX3Bvd2VycGNfXwpAQCAtMTA0Myw2 ICsxMDQ1LDggQEAgZ3J1Yl9pZWVlMTI3NV9nZXRfc2VjdXJlX2Jvb3QgKHZvaWQpCiAgICAgfQog ICBlbHNlCiAgICAgZ3J1Yl9kcHJpbnRmICgiaWVlZTEyNzUiLCAiU2VjdXJlIEJvb3QgRGlzYWJs ZWRcbiIpOworCisgIGdydWJfcGtzX2tleXN0b3JlX2luaXQgKCk7CiB9CiAjZW5kaWYgLyogX19w b3dlcnBjX18gKi8KIGdydWJfYWRkcl90IGdydWJfbW9kYmFzZTsKZGlmZiAtLWdpdCBhL2dydWIt Y29yZS9rZXJuL3Bvd2VycGMvaWVlZTEyNzUvaWVlZTEyNzUuYyBiL2dydWItY29yZS9rZXJuL3Bv d2VycGMvaWVlZTEyNzUvaWVlZTEyNzUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAuLjM4Y2ZlNGQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL2dydWItY29yZS9rZXJuL3Bvd2Vy cGMvaWVlZTEyNzUvaWVlZTEyNzUuYwpAQCAtMCwwICsxLDEzNyBAQAorLyogaWVlZTEyNzUuYyAt IEFjY2VzcyB0aGUgT3BlbiBGaXJtd2FyZSBjbGllbnQgaW50ZXJmYWNlLiAgKi8KKy8qCisgKiAg R1JVQiAgLS0gIEdSYW5kIFVuaWZpZWQgQm9vdGxvYWRlcgorICogIENvcHlyaWdodCAoQykgMjAw MywyMDA0LDIwMDUsMjAwNywyMDA4LDIwMDkgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorICogIENvcHlyaWdodCAoQykgMjAyMCwgMjAyMSwgMjAyMiwgMjAyMywgMjAyNCwgMjAyNSBJ Qk0gQ29ycG9yYXRpb24KKyAqCisgKiAgR1JVQiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIEdSVUIg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggR1JVQi4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworI2luY2x1ZGUgPGdydWIv aWVlZTEyNzUvaWVlZTEyNzUuaD4KKyNpbmNsdWRlIDxncnViL3Bvd2VycGMvaWVlZTEyNzUvaWVl ZTEyNzUuaD4KKyNpbmNsdWRlIDxncnViL21pc2MuaD4KKworZ3J1Yl9pbnQzMl90CitncnViX2ll ZWUxMjc1X3Rlc3QgKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgIHN0cnVjdCB0ZXN0X2FyZ3MKKyAg eworICAgIHN0cnVjdCBncnViX2llZWUxMjc1X2NvbW1vbl9oZHIgY29tbW9uOy8qIFRoZSBoZWFk ZXIgaW5mb3JtYXRpb24gbGlrZSBpbnRlcmZhY2UgbmFtZSwgbnVtYmVyIG9mIGlucHV0cyBhbmQg b3V0cHV0cy4gKi8KKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBuYW1lOyAgICAgICAgICAgICAv KiBUaGUgaW50ZXJmYWNlIG5hbWUuICovCisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgbWlzc2lu ZzsKKyAgfSBhcmdzOworCisgIElOSVRfSUVFRTEyNzVfQ09NTU9OICgmYXJncy5jb21tb24sICJ0 ZXN0IiwgMSwgMSk7CisgIGFyZ3MubmFtZSA9IChncnViX2llZWUxMjc1X2NlbGxfdCkgbmFtZTsK KworICBpZiAoSUVFRTEyNzVfQ0FMTF9FTlRSWV9GTiAoJmFyZ3MpID09IC0xKQorICAgIHJldHVy biAtMTsKKworICBpZiAoYXJncy5taXNzaW5nID09IElFRUUxMjc1X0NFTExfSU5WQUxJRCkKKyAg ICByZXR1cm4gLTE7CisKKyAgcmV0dXJuIDA7Cit9CisKK2dydWJfaW50MzJfdAorZ3J1Yl9pZWVl MTI3NV9wa3NfbWF4X29iamVjdF9zaXplIChncnViX3VpbnQzMl90ICpyZXN1bHQpCit7CisgIHN0 cnVjdCBtb3NfYXJncworICB7CisgICAgc3RydWN0IGdydWJfaWVlZTEyNzVfY29tbW9uX2hkciBj b21tb247LyogVGhlIGhlYWRlciBpbmZvcm1hdGlvbiBsaWtlIGludGVyZmFjZSBuYW1lLCBudW1i ZXIgb2YgaW5wdXRzIGFuZCBvdXRwdXRzLiAqLworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IHNp emU7ICAgICAgICAgICAgIC8qIFRoZSBtYXhpbXVtIG9iamVjdCBzaXplIGZvciBhIFBLUyBvYmpl Y3QuICovCisgIH0gYXJnczsKKworICBJTklUX0lFRUUxMjc1X0NPTU1PTiAoJmFyZ3MuY29tbW9u LCAicGtzLW1heC1vYmplY3Qtc2l6ZSIsIDAsIDEpOworCisgIGlmIChJRUVFMTI3NV9DQUxMX0VO VFJZX0ZOICgmYXJncykgPT0gLTEpCisgICAgcmV0dXJuIC0xOworCisgIGlmIChhcmdzLnNpemUg PT0gSUVFRTEyNzVfQ0VMTF9JTlZBTElEKQorICAgIHJldHVybiAtMTsKKworICAqcmVzdWx0ID0g YXJncy5zaXplOworCisgIHJldHVybiAwOworfQorCitncnViX2ludDMyX3QKK2dydWJfaWVlZTEy NzVfcGtzX3JlYWRfb2JqZWN0IChjb25zdCBncnViX3VpbnQzMl90IGNvbnN1bWVyLCBjb25zdCBj aGFyICpsYWJlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnViX3Vp bnQzMl90IGxhYmVsX2xlbiwgY29uc3QgZ3J1Yl91aW50MzJfdCBidWZmZXJfbGVuLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfdWludDhfdCAqYnVmZmVyLCBncnViX3VpbnQz Ml90ICpkYXRhX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnViX3VpbnQz Ml90ICpwb2xpY2llcykKK3sKKyAgc3RydWN0IHBrc19yZWFkX2FyZ3MKKyAgeworICAgIHN0cnVj dCBncnViX2llZWUxMjc1X2NvbW1vbl9oZHIgY29tbW9uOyAvKiBUaGUgaGVhZGVyIGluZm9ybWF0 aW9uIGxpa2UgaW50ZXJmYWNlIG5hbWUsIG51bWJlciBvZiBpbnB1dHMgYW5kIG91dHB1dHMuICov CisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgY29uc3VtZXI7ICAgICAgICAgIC8qIFRoZSBvYmpl Y3QgYmVsb25naW5nIHRvIGNvbnN1bWVyIHdpdGggdGhlIGxhYmVsLiAqLworICAgIGdydWJfaWVl ZTEyNzVfY2VsbF90IGxhYmVsOyAgICAgICAgICAgICAvKiBPYmplY3QgbGFiZWwgYnVmZmVyIGxv Z2ljYWwgcmVhbCBhZGRyZXNzLiAqLworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGxhYmVsX2xl bjsgICAgICAgICAvKiBUaGUgYnl0ZSBsZW5ndGggb2YgdGhlIG9iamVjdCBsYWJlbC4gKi8KKyAg ICBncnViX2llZWUxMjc1X2NlbGxfdCBidWZmZXI7ICAgICAgICAgICAgLyogT3V0cHV0IGJ1ZmZl ciBsb2dpY2FsIHJlYWwgYWRkcmVzcy4gKi8KKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBidWZm ZXJfbGVuOyAgICAgICAgLyogTGVuZ3RoIG9mIHRoZSBvdXRwdXQgYnVmZmVyLiAqLworICAgIGdy dWJfaWVlZTEyNzVfY2VsbF90IGRhdGFfbGVuOyAgICAgICAgICAvKiBUaGUgbnVtYmVyIG9mIGJ5 dGVzIGNvcGllZCB0byB0aGUgb3V0cHV0IGJ1ZmZlci4gKi8KKyAgICBncnViX2llZWUxMjc1X2Nl bGxfdCBwb2xpY2llczsgICAgICAgICAgLyogVGhlIG9iamVjdCBwb2xpY2llcy4gKi8KKyAgICBn cnViX2ludDMyX3QgcmM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIHJldHVybiBjb2Rl LiAqLworICB9IGFyZ3M7CisKKyAgSU5JVF9JRUVFMTI3NV9DT01NT04gKCZhcmdzLmNvbW1vbiwg InBrcy1yZWFkLW9iamVjdCIsIDUsIDMpOworICBhcmdzLmNvbnN1bWVyID0gY29uc3VtZXI7Cisg IGFyZ3MubGFiZWxfbGVuID0gbGFiZWxfbGVuOworICBhcmdzLmJ1ZmZlcl9sZW4gPSBidWZmZXJf bGVuOworICBhcmdzLmxhYmVsID0gKGdydWJfaWVlZTEyNzVfY2VsbF90KSBsYWJlbDsKKyAgYXJn cy5idWZmZXIgPSAoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpIGJ1ZmZlcjsKKworICBpZiAoSUVFRTEy NzVfQ0FMTF9FTlRSWV9GTiAoJmFyZ3MpID09IC0xKQorICAgIHJldHVybiAtMTsKKworICBpZiAo YXJncy5kYXRhX2xlbiA9PSBJRUVFMTI3NV9DRUxMX0lOVkFMSUQpCisgICAgcmV0dXJuIC0xOwor CisgICpkYXRhX2xlbiA9IGFyZ3MuZGF0YV9sZW47CisgICpwb2xpY2llcyA9IGFyZ3MucG9saWNp ZXM7CisKKyAgcmV0dXJuIGFyZ3MucmM7Cit9CisKK2dydWJfaW50MzJfdAorZ3J1Yl9pZWVlMTI3 NV9wa3NfcmVhZF9zYnZhciAoY29uc3QgZ3J1Yl91aW50MzJfdCBzYnZhcl9mbGFncywgY29uc3Qg Z3J1Yl91aW50MzJfdCBzYnZhcl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgZ3J1Yl91aW50MzJfdCBidWZmZXJfbGVuLCBncnViX3VpbnQ4X3QgKmJ1ZmZlciwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfc2l6ZV90ICpkYXRhX2xlbikKK3sKKyAg c3RydWN0IHBrc19yZWFkX3NidmFyX2FyZ3MKKyAgeworICAgIHN0cnVjdCBncnViX2llZWUxMjc1 X2NvbW1vbl9oZHIgY29tbW9uOyAvKiBUaGUgaGVhZGVyIGluZm9ybWF0aW9uIGxpa2UgaW50ZXJm YWNlIG5hbWUsIG51bWJlciBvZiBpbnB1dHMgYW5kIG91dHB1dHMuICovCisgICAgZ3J1Yl9pZWVl MTI3NV9jZWxsX3Qgc2J2YXJfZmxhZ3M7ICAgICAgIC8qIFRoZSBzYnZhciBvcGVyYXRpb24gZmxh Z3MuICovCisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3Qgc2J2YXJfdHlwZTsgICAgICAgIC8qIFRo ZSBzYnZhciBiZWluZyByZXF1ZXN0ZWQuICovCisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgYnVm ZmVyOyAgICAgICAgICAgIC8qIE91dHB1dCBidWZmZXIgbG9naWNhbCByZWFsIGFkZHJlc3MuICov CisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgYnVmZmVyX2xlbjsgICAgICAgIC8qIExlbmd0aCBv ZiB0aGUgT3V0cHV0IGJ1ZmZlci4gKi8KKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBkYXRhX2xl bjsgICAgICAgICAgLyogVGhlIG51bWJlciBvZiBieXRlcyBjb3BpZWQgdG8gdGhlIG91dHB1dCBi dWZmZXIuICovCisgICAgZ3J1Yl9pbnQzMl90IHJjOyAgICAgICAgICAgICAgICAgICAgICAgIC8q IFRoZSByZXR1cm4gY29kZS4gKi8KKyAgfSBhcmdzOworCisgIElOSVRfSUVFRTEyNzVfQ09NTU9O ICgmYXJncy5jb21tb24sICJwa3MtcmVhZC1zYnZhciIsIDQsIDIpOworICBhcmdzLnNidmFyX2Zs YWdzID0gc2J2YXJfZmxhZ3M7CisgIGFyZ3Muc2J2YXJfdHlwZSA9IHNidmFyX3R5cGU7CisgIGFy Z3MuYnVmZmVyX2xlbiA9IGJ1ZmZlcl9sZW47CisgIGFyZ3MuYnVmZmVyID0gKGdydWJfaWVlZTEy NzVfY2VsbF90KSBidWZmZXI7CisKKyAgaWYgKElFRUUxMjc1X0NBTExfRU5UUllfRk4gKCZhcmdz KSA9PSAtMSkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYgKGFyZ3MuZGF0YV9sZW4gPT0gSUVFRTEy NzVfQ0VMTF9JTlZBTElEKQorICAgIHJldHVybiAtMTsKKworICAqZGF0YV9sZW4gPSBhcmdzLmRh dGFfbGVuOworCisgIHJldHVybiBhcmdzLnJjOworfQpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tl cm4vcG93ZXJwYy9pZWVlMTI3NS9wbGF0Zm9ybV9rZXlzdG9yZS5jIGIvZ3J1Yi1jb3JlL2tlcm4v cG93ZXJwYy9pZWVlMTI3NS9wbGF0Zm9ybV9rZXlzdG9yZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMC4uN2QwYWQ2N2U5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3J1Yi1jb3Jl L2tlcm4vcG93ZXJwYy9pZWVlMTI3NS9wbGF0Zm9ybV9rZXlzdG9yZS5jCkBAIC0wLDAgKzEsMzQ3 IEBACisvKgorICogIEdSVUIgIC0tICBHUmFuZCBVbmlmaWVkIEJvb3Rsb2FkZXIKKyAqICBDb3B5 cmlnaHQgKEMpIDIwMjQgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICogIENvcHly aWdodCAoQykgMjAyMiwgMjAyMywgMjAyNCwgMjAyNSBJQk0gQ29ycG9yYXRpb24KKyAqCisgKiAg R1JVQiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIEdSVUIgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorICogIGFsb25nIHdpdGggR1JVQi4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8Z3J1Yi9tbS5oPgorI2luY2x1ZGUgPGdydWIv dHlwZXMuaD4KKyNpbmNsdWRlIDxncnViL21pc2MuaD4KKyNpbmNsdWRlIDxncnViL2xvY2tkb3du Lmg+CisjaW5jbHVkZSA8Z3J1Yi9pZWVlMTI3NS9pZWVlMTI3NS5oPgorI2luY2x1ZGUgPGdydWIv cG93ZXJwYy9pZWVlMTI3NS9pZWVlMTI3NS5oPgorI2luY2x1ZGUgPGdydWIvcG93ZXJwYy9pZWVl MTI3NS9wbGF0Zm9ybV9rZXlzdG9yZS5oPgorCisvKgorICogVGhlIGdydWJfZXNsX3QsIGdydWJf ZXNkX3QgYW5kIGdydWJfcGtzXyogaGFzICJwYWNrZWQiIG1lbWJlcnMsCisgKiBhbmQgR0NDID49 IDkgZ2l2ZXMgYSB1bmFsaWduZWQgcG9pbnRlciBlcnJvciB3aXRoIHRoZQorICogIi1XYWRkcmVz cy1vZi1wYWNrZWQtbWVtYmVyIiBmbGFnLiBTbywgd2UgYXJlIGlnbm9yaW5nIHRoaXMgZmxhZyBo ZXJlLgorICovCisjaWYgX19HTlVDX18gPj0gOQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25v cmVkICItV2FkZHJlc3Mtb2YtcGFja2VkLW1lbWJlciIKKyNlbmRpZgorCisvKiBQS1MgY29uc3Vt ZXIgdHlwZSBmb3IgZmlybXdhcmUuICovCisjZGVmaW5lIFBLU19DT05TVU1FUl9GVyAgICAgICgo Z3J1Yl91aW50MzJfdCkgMSkKKworLyogVGhlIG1heGltdW0gb2JqZWN0IHNpemUgaW50ZXJmYWNl IG5hbWUgZm9yIGEgUEtTIG9iamVjdC4gKi8KKyNkZWZpbmUgUEtTX01BWF9PQkpfU0laRSAgICAg InBrcy1tYXgtb2JqZWN0LXNpemUiCisKKy8qIFBLUyByZWFkIG9iamVjdCBsYWJsZSBmb3Igc2Vj dXJlIGJvb3QgdmVyc2lvbi4gKi8KKyNkZWZpbmUgU0JfVkVSU0lPTl9LRVlfTkFNRSAgIlNCX1ZF UlNJT04iCisjZGVmaW5lIFNCX1ZFUlNJT05fS0VZX0xFTiAgIChzaXplb2YgKFNCX1ZFUlNJT05f S0VZX05BTUUpIC0gMSkKKworLyogUEtTIHJlYWQgc2VjdXJlIGJvb3QgdmFyaWFibGUgcmVxdWVz dCB0eXBlIGZvciBkYiBhbmQgZGJ4LiAqLworI2RlZmluZSBQS1NfU0JWQVJfREIgICAgICAgICAo KGdydWJfdWludDMyX3QpIDEpCisjZGVmaW5lIFBLU19TQlZBUl9EQlggICAgICAgICgoZ3J1Yl91 aW50MzJfdCkgMikKKworc3RhdGljIGdydWJfdWludDMyX3QgcGtzX21heF9vYmplY3Rfc2l6ZSA9 IDA7CisKKy8qIFBsYXRmb3JtIEtleVN0b3JlIGRiIGFuZCBkYnguICovCitzdGF0aWMgZ3J1Yl9w a3NfdCBwa3Nfa2V5c3RvcmUgPSB7IC5kYiA9IE5VTEwsIC5kYnggPSBOVUxMLCAuZGJfZW50cmll cyA9IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kYnhfZW50cmllcyA9 IDB9OworLyoKKyAqIHBrc191c2Vfa2V5c3RvcmU6IEtleSBNYW5hZ2VtZW50IE1vZGVzCisgKiBG YWxzZTogU3RhdGljIGtleSBtYW5hZ2VtZW50ICh1c2UgYnVpbHQtaW4gS2V5cykuIFRoaXMgaXMg ZGVmYXVsdC4KKyAqIFRydWU6IER5bmFtaWMga2V5IG1hbmFnZW1lbnQgKHVzZSBQbGF0Zm9ybSBL ZXlTb3RyZSkuCisgKi8KK3N0YXRpYyBib29sIHBrc191c2Vfa2V5c3RvcmUgPSBmYWxzZTsKKwor LyoKKyAqIFJlYWRzIHRoZSBHbG9iYWxseSBVbmlxdWUgSWRlbnRpZmllciAoR1VJRCksIEVGSSBT aWduYXR1cmUgRGF0YWJhc2UgKEVTRCksCisgKiBhbmQgaXRzIHNpemUgZnJvbSB0aGUgUGxhdGZv cm0gS2V5U3RvcmUgRUZJIFNpZ25hdHVyZSBMaXN0IChFU0wpLCB0aGVuCisgKiBzdG9yZXMgdGhl bSBpbnRvIHRoZSBQS1MgU2lnbmF0dXJlIERhdGFiYXNlIChTRCkgKGkuZS4sIHBrc19zZCBidWZm ZXIKKyAqIGFuZCBwa3Nfc2QgZW50cmllcykgaW4gdGhlIEdSVUIuCisgKi8KK3N0YXRpYyBncnVi X2Vycl90CitfZXNsX3RvX2VzZCAoY29uc3QgZ3J1Yl91aW50OF90ICplc2xfZGF0YSwgZ3J1Yl9z aXplX3QgZXNsX3NpemUsCisgICAgICAgICAgICAgY29uc3QgZ3J1Yl9zaXplX3Qgc2lnbmF0dXJl X3NpemUsIGNvbnN0IGdydWJfcGFja2VkX2d1aWRfdCAqZ3VpZCwKKyAgICAgICAgICAgICBncnVi X3Brc19zZF90ICoqcGtzX3NkLCBncnViX3VpbnQzMl90ICpwa3Nfc2RfZW50cmllcykKK3sKKyAg Z3J1Yl9lc2RfdCAqZXNkOworICBncnViX3Brc19zZF90ICpzaWduYXR1cmUgPSAqcGtzX3NkOwor ICBncnViX3VpbnQzMl90IGVudHJpZXMgPSAqcGtzX3NkX2VudHJpZXM7CisgIGdydWJfc2l6ZV90 IGRhdGFfc2l6ZSwgb2Zmc2V0ID0gMDsKKworICAvKiBSZWFkcyB0aGUgRVNEIGZyb20gRVNMLiAq LworICB3aGlsZSAoZXNsX3NpemUgPiAwKQorICAgIHsKKyAgICAgIGVzZCA9IChncnViX2VzZF90 ICopIChlc2xfZGF0YSArIG9mZnNldCk7CisgICAgICBkYXRhX3NpemUgPSBzaWduYXR1cmVfc2l6 ZSAtIHNpemVvZiAoZ3J1Yl9lc2RfdCk7CisKKyAgICAgIHNpZ25hdHVyZSA9IGdydWJfcmVhbGxv YyAoc2lnbmF0dXJlLCAoZW50cmllcyArIDEpICogc2l6ZW9mIChncnViX3Brc19zZF90KSk7Cisg ICAgICBpZiAoc2lnbmF0dXJlID09IE5VTEwpCisgICAgICAgIHJldHVybiBncnViX2Vycm9yIChH UlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCAib3V0IG9mIG1lbW9yeSIpOworCisgICAgICBzaWduYXR1 cmVbZW50cmllc10uZGF0YSA9IGdydWJfbWFsbG9jIChkYXRhX3NpemUgKiBzaXplb2YgKGdydWJf dWludDhfdCkpOworICAgICAgaWYgKHNpZ25hdHVyZVtlbnRyaWVzXS5kYXRhID09IE5VTEwpCisg ICAgICAgIHsKKyAgICAgICAgICAvKgorICAgICAgICAgICAqIEFsbG9jYXRlZCBtZW1vcnkgd2ls bCBiZSBmcmVlZCBieQorICAgICAgICAgICAqIGdydWJfcGtzX3RtcF9mcmVlLgorICAgICAgICAg ICAqLworICAgICAgICAgICpwa3Nfc2QgPSBzaWduYXR1cmU7CisgICAgICAgICAgKnBrc19zZF9l bnRyaWVzID0gZW50cmllcyArIDE7CisgICAgICAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJf RVJSX09VVF9PRl9NRU1PUlksICJvdXQgb2YgbWVtb3J5Iik7CisgICAgICAgIH0KKworICAgICAg Z3J1Yl9tZW1jcHkgKHNpZ25hdHVyZVtlbnRyaWVzXS5kYXRhLCBlc2QtPnNpZ25hdHVyZV9kYXRh LCBkYXRhX3NpemUpOworICAgICAgc2lnbmF0dXJlW2VudHJpZXNdLmRhdGFfc2l6ZSA9IGRhdGFf c2l6ZTsKKyAgICAgIHNpZ25hdHVyZVtlbnRyaWVzXS5ndWlkID0gKmd1aWQ7CisgICAgICBlbnRy aWVzKys7CisgICAgICBlc2xfc2l6ZSAtPSBzaWduYXR1cmVfc2l6ZTsKKyAgICAgIG9mZnNldCAr PSBzaWduYXR1cmVfc2l6ZTsKKyAgICB9CisKKyAgKnBrc19zZCA9IHNpZ25hdHVyZTsKKyAgKnBr c19zZF9lbnRyaWVzID0gZW50cmllczsKKworICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKK30KKwor LyogRXh0cmFjdCB0aGUgRVNEIGFmdGVyIHJlbW92aW5nIHRoZSBFU0wgaGVhZGVyIGZyb20gRVNM LiAqLworc3RhdGljIGdydWJfZXJyX3QKK2VzbF90b19lc2QgKGNvbnN0IGdydWJfdWludDhfdCAq ZXNsX2RhdGEsIGdydWJfc2l6ZV90ICpuZXh0X2VzbCwKKyAgICAgICAgICAgIGdydWJfcGtzX3Nk X3QgKipwa3Nfc2QsIGdydWJfdWludDMyX3QgKnBrc19zZF9lbnRyaWVzKQoreworICBncnViX3Bh Y2tlZF9ndWlkX3QgZ3VpZDsKKyAgZ3J1Yl9lc2xfdCAqZXNsOworICBncnViX3NpemVfdCBvZmZz ZXQsIGVzbF9zaXplLCBzaWduYXR1cmVfc2l6ZSwgc2lnbmF0dXJlX2hlYWRlcl9zaXplOworCisg IC8qIENvbnZlcnQgdGhlIEVTTCBkYXRhIGludG8gdGhlIEVTTC4gKi8KKyAgZXNsID0gKGdydWJf ZXNsX3QgKikgZXNsX2RhdGE7CisgIGlmICgqbmV4dF9lc2wgPCBzaXplb2YgKGdydWJfZXNsX3Qp IHx8IGVzbCA9PSBOVUxMKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CVUcsICJp bnZhbGlkIEVTTCIpOworCisgIGVzbF9zaXplID0gZ3J1Yl9sZV90b19jcHUzMiAoZXNsLT5zaWdu YXR1cmVfbGlzdF9zaXplKTsKKyAgc2lnbmF0dXJlX2hlYWRlcl9zaXplID0gZ3J1Yl9sZV90b19j cHUzMiAoZXNsLT5zaWduYXR1cmVfaGVhZGVyX3NpemUpOworICBzaWduYXR1cmVfc2l6ZSA9IGdy dWJfbGVfdG9fY3B1MzIgKGVzbC0+c2lnbmF0dXJlX3NpemUpOworICBncnViX21lbWNweSAoJmd1 aWQsICZlc2wtPnNpZ25hdHVyZV90eXBlLCBzaXplb2YgKGdydWJfcGFja2VkX2d1aWRfdCkpOwor CisgIGlmIChlc2xfc2l6ZSA8IHNpemVvZiAoZ3J1Yl9lc2xfdCkgfHwgZXNsX3NpemUgPiAqbmV4 dF9lc2wpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JVRywgImludmFsaWQgRVNM IHNpemUgKCV1KVxuIiwgZXNsX3NpemUpOworCisgICpuZXh0X2VzbCA9IGVzbF9zaXplOworICBv ZmZzZXQgPSBzaXplb2YgKGdydWJfZXNsX3QpICsgc2lnbmF0dXJlX2hlYWRlcl9zaXplOworICBl c2xfc2l6ZSA9IGVzbF9zaXplIC0gb2Zmc2V0OworCisgIHJldHVybiBfZXNsX3RvX2VzZCAoZXNs X2RhdGEgKyBvZmZzZXQsIGVzbF9zaXplLCBzaWduYXR1cmVfc2l6ZSwgJmd1aWQsCisgICAgICAg ICAgICAgICAgICAgICAgcGtzX3NkLCBwa3Nfc2RfZW50cmllcyk7Cit9CisKKy8qCisgKiBJbXBv cnQgdGhlIEVGSSBTaWduYXR1cmUgRGF0YWJhc2UgKEVTRCkgYW5kIHRoZSBudW1iZXIgb2YgRVNE IGZyb20gdGhlIEVTTAorICogaW50byB0aGUgcGtzX3NkIGJ1ZmZlciBhbmQgcGtzX3NkIGVudHJp ZXMuCisgKi8KK3N0YXRpYyBncnViX2Vycl90Citwa3Nfc2RfZnJvbV9lc2wgKGNvbnN0IGdydWJf dWludDhfdCAqZXNsX2RhdGEsIGdydWJfc2l6ZV90IGVzbF9zaXplLAorICAgICAgICAgICAgICAg ICBncnViX3Brc19zZF90ICoqcGtzX3NkLCBncnViX3VpbnQzMl90ICpwa3Nfc2RfZW50cmllcykK K3sKKyAgZ3J1Yl9lcnJfdCByYzsKKyAgZ3J1Yl9zaXplX3QgbmV4dF9lc2wgPSBlc2xfc2l6ZTsK KworICBkbworICAgIHsKKyAgICAgIHJjID0gZXNsX3RvX2VzZCAoZXNsX2RhdGEsICZuZXh0X2Vz bCwgcGtzX3NkLCBwa3Nfc2RfZW50cmllcyk7CisgICAgICBpZiAocmMgIT0gR1JVQl9FUlJfTk9O RSkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGVzbF9kYXRhICs9IG5leHRfZXNsOworICAgICAg ZXNsX3NpemUgLT0gbmV4dF9lc2w7CisgICAgICBuZXh0X2VzbCA9IGVzbF9zaXplOworICAgIH0K KyAgd2hpbGUgKGVzbF9zaXplID4gMCk7CisKKyAgcmV0dXJuIHJjOworfQorCisvKgorICogUmVh ZCB0aGUgc2VjdXJlIGJvb3QgdmVyc2lvbiBmcm9tIFBLUyBhcyBhbiBvYmplY3QuCisgKiBDYWxs ZXIgbXVzdCBmcmVlIHJlc3VsdC4KKyAqLworc3RhdGljIGdydWJfZXJyX3QKK3JlYWRfc2J2ZXJz aW9uX2Zyb21fcGtzIChncnViX3VpbnQ4X3QgKipvdXQpCit7CisgIGdydWJfaW50MzJfdCByYzsK KyAgZ3J1Yl91aW50MzJfdCBvdXRsZW4gPSAwLCBwb2xpY3kgPSAwOworCisgICpvdXQgPSBncnVi X21hbGxvYyAocGtzX21heF9vYmplY3Rfc2l6ZSk7CisgIGlmICgqb3V0ID09IE5VTEwpCisgICAg cmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJvdXQgb2YgbWVtb3J5 Iik7CisKKyAgcmMgPSBncnViX2llZWUxMjc1X3Brc19yZWFkX29iamVjdCAoUEtTX0NPTlNVTUVS X0ZXLCBTQl9WRVJTSU9OX0tFWV9OQU1FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTQl9WRVJTSU9OX0tFWV9MRU4sIHBrc19tYXhfb2JqZWN0X3NpemUsICpvdXQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRsZW4sICZwb2xpY3kpOwor ICBpZiAocmMgPCAwKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9SRUFEX0VSUk9S LCAiU0IgdmVyc2lvbiByZWFkIGZhaWxlZCAoJWQpXG4iLCByYyk7CisKKyAgaWYgKG91dGxlbiAh PSAxIHx8ICgqKm91dCA+PSAyKSkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFE X05VTUJFUiwgImZvdW5kIHVuZXhwZWN0ZWQgU0IgdmVyc2lvbjogJXVcbiIsICoqb3V0KTsKKwor ICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKK30KKworLyoKKyAqIFJlYWRzIHRoZSBzZWN1cmUgYm9v dCB2YXJpYWJsZSBmcm9tIFBLUywgdW5wYWNrcyBpdCwgcmVhZCB0aGUgRVNECisgKiBmcm9tIEVT TCwgYW5kIHN0b3JlIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgcGtzX3NkIGJ1ZmZlci4KKyAqLwor c3RhdGljIGdydWJfZXJyX3QKK3JlYWRfc2J2YXJfZnJvbV9wa3MgKGNvbnN0IGdydWJfdWludDMy X3Qgc2J2YXJmbGFncywgY29uc3QgZ3J1Yl91aW50MzJfdCBzYnZhcnR5cGUsCisgICAgICAgICAg ICAgICAgICAgICBncnViX3Brc19zZF90ICoqcGtzX3NkLCBncnViX3VpbnQzMl90ICpwa3Nfc2Rf ZW50cmllcykKK3sKKyAgZ3J1Yl9pbnQzMl90IHJjOworICBncnViX2Vycl90IGVyciA9IEdSVUJf RVJSX05PTkU7CisgIGdydWJfdWludDhfdCAqZXNsX2RhdGEgPSBOVUxMOworICBncnViX3NpemVf dCBlc2xfZGF0YV9zaXplID0gMDsKKworICBlc2xfZGF0YSA9IGdydWJfbWFsbG9jIChwa3NfbWF4 X29iamVjdF9zaXplKTsKKyAgaWYgKGVzbF9kYXRhID09IE5VTEwpCisgICAgcmV0dXJuIGdydWJf ZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJvdXQgb2YgbWVtb3J5Iik7CisKKyAgcmMg PSBncnViX2llZWUxMjc1X3Brc19yZWFkX3NidmFyIChzYnZhcmZsYWdzLCBzYnZhcnR5cGUsIHBr c19tYXhfb2JqZWN0X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZXNsX2RhdGEsICZlc2xfZGF0YV9zaXplKTsKKyAgaWYgKHJjID09IElFRUUxMjc1X0NFTExfTk9U X0ZPVU5EKQorICAgIHsKKyAgICAgIGVyciA9ICBncnViX2Vycm9yIChHUlVCX0VSUl9GSUxFX05P VF9GT1VORCwgInNlY3VyZSBib290IHZhcmlhYmxlICVzIG5vdCBmb3VuZCAoJWQpIiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAoKHNidmFydHlwZSA9PSBQS1NfU0JWQVJfREIpID8gImRiIiA6 ICJkYngiKSwgcmMpOworICAgICAgZ290byBmYWlsOworICAgIH0KKyAgZWxzZSBpZiAocmMgPCAw KQorICAgIHsKKyAgICAgIGVyciA9IGdydWJfZXJyb3IgKEdSVUJfRVJSX1JFQURfRVJST1IsICJz ZWN1cmUgYm9vdCB2YXJpYWJsZSAlcyByZWFkaW5nICglZCkiLAorICAgICAgICAgICAgICAgICAg ICAgICAgKChzYnZhcnR5cGUgPT0gUEtTX1NCVkFSX0RCKSA/ICJkYiIgOiAiZGJ4IiksIHJjKTsK KyAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgaWYgKGVzbF9kYXRhX3NpemUgPiAwKQorICAg IGVyciA9IHBrc19zZF9mcm9tX2VzbCAoZXNsX2RhdGEsIGVzbF9kYXRhX3NpemUsIHBrc19zZCwg cGtzX3NkX2VudHJpZXMpOworICBlbHNlCisgICAgZXJyID0gR1JVQl9FUlJfQkFEX05VTUJFUjsK KworIGZhaWw6CisgIGdydWJfZnJlZSAoZXNsX2RhdGEpOworCisgIHJldHVybiBlcnI7Cit9CisK Ky8qCisgKiBUZXN0IHRoZSBhdmFpbGFiaWxpdHkgb2YgUEtTIHN1cHBvcnQuIElmIFBLUyBzdXBw b3J0IGlzIGF2YWlhbGJsZSBhbmQKKyAqIG9iamVjdHMgcHJlc2VudCwgaXQgcmVhZHMgdGhlIHNl Y3VyZSBib290IHZlcnNpb24gKFNCX1ZFUlNJT04pIGZyb20gUEtTLgorICoKKyAqIFNCX1ZFUlNJ T046IEtleSBNYW5hZ2VtZW50IE1vZGUKKyAqIDEgLSBFbmFibGUgZHluYW1pYyBrZXkgbWFuYWdl bWVudCBtb2RlLiBSZWFkIHRoZSBkYiBhbmQgZGJ4IHZhcmlhYmxlcyBmcm9tIFBLUywKKyAgICAg ICBhbmQgdXNlIHRoZW0gZm9yIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24uCisgKiAwIC0gRW5hYmxl IHN0YXRpYyBrZXkgbWFuYWdlbWVudCBtb2RlLiBSZWFkIGtleXMgZnJvbSB0aGUgR1JVQiBFTEYg Tm90ZSBhbmQKKyAqICAgICB1c2UgaXQgZm9yIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24uCisgKi8K K3N0YXRpYyBib29sCitpc19wa3NfcHJlc2VudCAodm9pZCkKK3sKKyAgZ3J1Yl9lcnJfdCBlcnI7 CisgIGdydWJfaW50MzJfdCByYzsKKyAgZ3J1Yl91aW50OF90ICpkYXRhID0gTlVMTDsKKyAgYm9v bCByZXQgPSBmYWxzZTsKKworICByYyA9IGdydWJfaWVlZTEyNzVfdGVzdCAoUEtTX01BWF9PQkpf U0laRSk7CisgIGlmIChyYyA8IDApCisgICAgeworICAgICAgZ3J1Yl9lcnJvciAoR1JVQl9FUlJf QkFEX0ZJUk1XQVJFLCAiZmlybXdhcmUgZG9lc24ndCBoYXZlIFBLUyBzdXBwb3J0XG4iKTsKKyAg ICAgIHJldHVybiByZXQ7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgcmMgPSBncnViX2ll ZWUxMjc1X3Brc19tYXhfb2JqZWN0X3NpemUgKCZwa3NfbWF4X29iamVjdF9zaXplKTsKKyAgICAg IGlmIChyYyA8IDApCisgICAgICAgIHsKKyAgICAgICAgICBncnViX2Vycm9yIChHUlVCX0VSUl9C QURfTlVNQkVSLCAiUEtTIHN1cHBvcnQgaXMgdGhlcmUgYnV0IGl0IGhhcyB6ZXJvIG9iamVjdHNc biIpOworICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgZXJyID0g cmVhZF9zYnZlcnNpb25fZnJvbV9wa3MgKCZkYXRhKTsKKyAgaWYgKGVyciAhPSBHUlVCX0VSUl9O T05FKQorICAgIHsKKyAgICAgIGdydWJfZnJlZSAoZGF0YSk7CisgICAgICByZXR1cm4gcmV0Owor ICAgIH0KKworICAvKgorICAgKiBJZiAqZGF0YSA9PSAxLCB1c2UgZHluYW1pYyBrZXkgbWFuYWdl bWVudCBhbmQgcmVhZCB0aGUga2V5cyBmcm9tIHRoZSBQS1MuCisgICAqIEVsc2UsIHVzZSBzdGF0 aWMga2V5IG1hbmFnZW1lbnQgYW5kIHJlYWQgdGhlIGtleXMgZnJvbSB0aGUgR1JVQiBFTEYgTm90 ZS4KKyAgICovCisgIHJldCA9ICgoKmRhdGEgPT0gMSkgPyB0cnVlIDogZmFsc2UpOworCisgIGdy dWJfZnJlZSAoZGF0YSk7CisKKyAgcmV0dXJuIHJldDsKK30KKworLyogRnJlZSBhbGxvY2F0ZWQg bWVtb3J5LiAqLwordm9pZAorZ3J1Yl9wa3NfdG1wX2ZyZWUgKHZvaWQpCit7CisgIGdydWJfc2l6 ZV90IGk7CisKKyAgZm9yIChpID0gMDsgaSA8IHBrc19rZXlzdG9yZS5kYl9lbnRyaWVzOyBpKysp CisgICAgZ3J1Yl9mcmVlIChwa3Nfa2V5c3RvcmUuZGJbaV0uZGF0YSk7CisKKyAgZm9yIChpID0g MDsgaSA8IHBrc19rZXlzdG9yZS5kYnhfZW50cmllczsgaSsrKQorICAgIGdydWJfZnJlZSAocGtz X2tleXN0b3JlLmRieFtpXS5kYXRhKTsKKworICBncnViX2ZyZWUgKHBrc19rZXlzdG9yZS5kYik7 CisgIGdydWJfZnJlZSAocGtzX2tleXN0b3JlLmRieCk7CisgIGdydWJfbWVtc2V0ICgmcGtzX2tl eXN0b3JlLCAwLCBzaXplb2YgKGdydWJfcGtzX3QpKTsKK30KKworZ3J1Yl9wa3NfdCAqCitncnVi X3Brc19nZXRfa2V5c3RvcmUgKHZvaWQpCit7CisgIC8qIElmIGR5bmFtaWMga2V5IG1hbmFnZW1l bnQgbW9kZSBpcyBlbmFibGVkLCB1c2UgUEtTIGtleXN0b3JlLiAqLworICBpZiAocGtzX3VzZV9r ZXlzdG9yZSA9PSB0cnVlKQorICAgIHJldHVybiAmcGtzX2tleXN0b3JlOworCisgIHJldHVybiBO VUxMOworfQorCisvKiBJbml0aWFsaXphdGlvbiBvZiB0aGUgUGxhdGZvcm0gS2V5U3RvcmUuICov Cit2b2lkCitncnViX3Brc19rZXlzdG9yZV9pbml0ICh2b2lkKQoreworICBncnViX2Vycl90IHJj OworCisgIGdydWJfZHByaW50ZiAoImllZWUxMjc1IiwgInRyeWluZyB0byBsb2FkIFBsYXRmb3Jt IEtleVN0b3JlXG4iKTsKKworICBpZiAoaXNfcGtzX3ByZXNlbnQgKCkgPT0gZmFsc2UpCisgICAg eworICAgICAgZ3J1Yl9kcHJpbnRmICgiaWVlZTEyNzUiLCAiUGxhdGZvcm0gUEtTIGlzIG5vdCBh dmFpbGFibGVcbiIpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAvKiBSZWFkIGRiIGZyb20g UEtTLiAqLworICByYyA9IHJlYWRfc2J2YXJfZnJvbV9wa3MgKDAsIFBLU19TQlZBUl9EQiwgJnBr c19rZXlzdG9yZS5kYiwgJnBrc19rZXlzdG9yZS5kYl9lbnRyaWVzKTsKKyAgaWYgKHJjID09IEdS VUJfRVJSX05PTkUpCisgICAgeworICAgICAgLyogUmVhZCBkYnggZnJvbSBQS1MuICovCisgICAg ICByYyA9IHJlYWRfc2J2YXJfZnJvbV9wa3MgKDAsIFBLU19TQlZBUl9EQlgsICZwa3Nfa2V5c3Rv cmUuZGJ4LCAmcGtzX2tleXN0b3JlLmRieF9lbnRyaWVzKTsKKyAgICAgIGlmIChyYyA9PSBHUlVC X0VSUl9GSUxFX05PVF9GT1VORCB8fCByYyA9PSBHUlVCX0VSUl9CQURfTlVNQkVSKQorICAgICAg ICByYyA9IEdSVUJfRVJSX05PTkU7CisgICAgfQorCisgIGlmIChyYyAhPSBHUlVCX0VSUl9OT05F KQorICAgIGdydWJfcGtzX3RtcF9mcmVlICgpOworCisgIHBrc191c2Vfa2V5c3RvcmUgPSB0cnVl OworfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL2llZWUxMjc1L2llZWUxMjc1LmggYi9pbmNs dWRlL2dydWIvaWVlZTEyNzUvaWVlZTEyNzUuaAppbmRleCBjNDQ1ZDA0OTkuLjE1N2VkNTdiZSAx MDA2NDQKLS0tIGEvaW5jbHVkZS9ncnViL2llZWUxMjc1L2llZWUxMjc1LmgKKysrIGIvaW5jbHVk ZS9ncnViL2llZWUxMjc1L2llZWUxMjc1LmgKQEAgLTI0LDYgKzI0LDkgQEAKICNpbmNsdWRlIDxn cnViL3R5cGVzLmg+CiAjaW5jbHVkZSA8Z3J1Yi9tYWNoaW5lL2llZWUxMjc1Lmg+CiAKKyNkZWZp bmUgSUVFRTEyNzVfQ0VMTF9JTlZBTElEICAgICAgICAgICgoZ3J1Yl9pZWVlMTI3NV9jZWxsX3Qp IC0xKQorI2RlZmluZSBJRUVFMTI3NV9DRUxMX05PVF9GT1VORCAgICAgICAgKChncnViX2ludDMy X3QpIC03KQorCiAjZGVmaW5lIEdSVUJfSUVFRTEyNzVfQ0VMTF9GQUxTRSAgICAgICAoKGdydWJf aWVlZTEyNzVfY2VsbF90KSAwKQogI2RlZmluZSBHUlVCX0lFRUUxMjc1X0NFTExfVFJVRSAgICAg ICAgKChncnViX2llZWUxMjc1X2NlbGxfdCkgLTEpCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1 Yi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1LmggYi9pbmNsdWRlL2dydWIvcG93ZXJwYy9pZWVl MTI3NS9pZWVlMTI3NS5oCmluZGV4IDRlYjIwNzAxOC4uNzU2ODk2YWI3IDEwMDY0NAotLS0gYS9p bmNsdWRlL2dydWIvcG93ZXJwYy9pZWVlMTI3NS9pZWVlMTI3NS5oCisrKyBiL2luY2x1ZGUvZ3J1 Yi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1LmgKQEAgLTI4LDQgKzI4LDIyIEBAIHR5cGVkZWYg Z3J1Yl91aW50MzJfdCBncnViX2llZWUxMjc1X2NlbGxfdDsKICNkZWZpbmUgUFJJeEdSVUJfSUVF RTEyNzVfQ0VMTF9UCVBSSXhHUlVCX1VJTlQzMl9UCiAjZGVmaW5lIFBSSXVHUlVCX0lFRUUxMjc1 X0NFTExfVAlQUkl1R1JVQl9VSU5UMzJfVAogCisjaWZkZWYgX19wb3dlcnBjX18KK2V4dGVybiBn cnViX2ludDMyX3QKK2dydWJfaWVlZTEyNzVfdGVzdCAoY29uc3QgY2hhciAqbmFtZSk7CisKK2V4 dGVybiBncnViX2ludDMyX3QKK2dydWJfaWVlZTEyNzVfcGtzX21heF9vYmplY3Rfc2l6ZSAoZ3J1 Yl91aW50MzJfdCAqcmVzdWx0KTsKKworZXh0ZXJuIGdydWJfaW50MzJfdAorZ3J1Yl9pZWVlMTI3 NV9wa3NfcmVhZF9vYmplY3QgKGNvbnN0IGdydWJfdWludDMyX3QgY29uc3VtZXIsIGNvbnN0IGNo YXIgKmxhYmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdydWJfdWlu dDMyX3QgbGFiZWxfbGVuLCBjb25zdCBncnViX3VpbnQzMl90IGJ1ZmZlcl9sZW4sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3J1Yl91aW50OF90ICpidWZmZXIsIGdydWJfdWludDMy X3QgKmRhdGFfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfdWludDMy X3QgKnBvbGljaWVzKTsKKworZXh0ZXJuIGdydWJfaW50MzJfdAorZ3J1Yl9pZWVlMTI3NV9wa3Nf cmVhZF9zYnZhciAoY29uc3QgZ3J1Yl91aW50MzJfdCBzYnZhcl9mbGFncywgY29uc3QgZ3J1Yl91 aW50MzJfdCBzYnZhcl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Z3J1Yl91aW50MzJfdCBidWZmZXJfbGVuLCBncnViX3VpbnQ4X3QgKmJ1ZmZlciwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdydWJfc2l6ZV90ICpkYXRhX2xlbik7CisjZW5kaWYgLyog X19wb3dlcnBjX18gKi8KICNlbmRpZiAvKiAhIEdSVUJfSUVFRTEyNzVfTUFDSElORV9IRUFERVIg Ki8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9wb3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tl eXN0b3JlLmggYi9pbmNsdWRlL2dydWIvcG93ZXJwYy9pZWVlMTI3NS9wbGF0Zm9ybV9rZXlzdG9y ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uYjE4YmQ0Njg4Ci0tLSAv ZGV2L251bGwKKysrIGIvaW5jbHVkZS9ncnViL3Bvd2VycGMvaWVlZTEyNzUvcGxhdGZvcm1fa2V5 c3RvcmUuaApAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwNiAtIDIw MTUsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzCisgKiBwcm9n cmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbGljZW5zZWQgYW5kIG1hZGUg YXZhaWxhYmxlCisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIDItQ2xh dXNlIEJTRCBMaWNlbnNlIHdoaWNoCisgKiBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4K KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlz dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0 IG5vdGljZSwKKyAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqIGRvY3VtZW50 YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP TERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI RSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkg RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VD SCBEQU1BR0UuCisgKgorICogaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLXN0YWdp bmcgKGVkazItc3RhZ2luZyByZXBvIG9mIHRpYW5vY29yZSksCisgKiB0aGUgSW1hZ2VBdXRoZW50 aWNhdGlvbi5oIGZpbGUgdW5kZXIgaXQsIGFuZCBoZXJlJ3MgdGhlIGNvcHlyaWdodCBhbmQgbGlj ZW5zZS4KKyAqCisgKiBNZGVQa2cvSW5jbHVkZS9HdWlkL0ltYWdlQXV0aGVudGljYXRpb24uaAor ICoKKyAqIENvcHlyaWdodCAyMDIyLCAyMDIzLCAyMDI0LCAyMDI1IElCTSBDb3JwLgorICovCisK KyNpZm5kZWYgUExBVEZPUk1fS0VZU1RPUkVfSEVBREVSCisjZGVmaW5lIFBMQVRGT1JNX0tFWVNU T1JFX0hFQURFUiAgICAxCisKKyNpbmNsdWRlIDxncnViL3N5bWJvbC5oPgorI2luY2x1ZGUgPGdy dWIvbW0uaD4KKyNpbmNsdWRlIDxncnViL3R5cGVzLmg+CisKKy8qCisgKiBJdCBpcyBkZXJpdmVk IGZyb20gRUZJX1NJR05BVFVSRV9EQVRBCisgKiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3Jl L2VkazItc3RhZ2luZy9ibG9iL21hc3Rlci9NZGVQa2cvSW5jbHVkZS9HdWlkL0ltYWdlQXV0aGVu dGljYXRpb24uaAorICoKKyAqIFRoZSBzdHJ1Y3R1cmUgb2YgYW4gRUZJIFNpZ25hdHVyZSBEYXRh YmFzZSAoRVNEKS4gKi8KK3N0cnVjdCBncnViX2VzZAoreworICAvKgorICAgKiBBbiBpZGVudGlm aWVyIHdoaWNoIGlkZW50aWZpZXMgdGhlIGFnZW50IHdoaWNoIGFkZGVkCisgICAqIHRoZSBzaWdu YXR1cmUgdG8gdGhlIGxpc3QuCisgICAqLworICBncnViX3BhY2tlZF9ndWlkX3Qgc2lnbmF0dXJl X293bmVyOworICAvKiBUaGUgZm9ybWF0IG9mIHRoZSBzaWduYXR1cmUgaXMgZGVmaW5lZCBieSB0 aGUgU2lnbmF0dXJlVHlwZS4gKi8KKyAgZ3J1Yl91aW50OF90IHNpZ25hdHVyZV9kYXRhW107Cit9 IEdSVUJfUEFDS0VEOwordHlwZWRlZiBzdHJ1Y3QgZ3J1Yl9lc2QgZ3J1Yl9lc2RfdDsKKworLyoK KyAqIEl0IGlzIGRlcml2ZWQgZnJvbSBFRklfU0lHTkFUVVJFX0xJU1QKKyAqIGh0dHBzOi8vZ2l0 aHViLmNvbS90aWFub2NvcmUvZWRrMi1zdGFnaW5nL2Jsb2IvbWFzdGVyL01kZVBrZy9JbmNsdWRl L0d1aWQvSW1hZ2VBdXRoZW50aWNhdGlvbi5oCisgKgorICogVGhlIHN0cnVjdHVyZSBvZiBhbiBF RkkgU2lnbmF0dXJlIExpc3QgKEVTTCkuICovCitzdHJ1Y3QgZ3J1Yl9lc2wKK3sKKyAgLyogVHlw ZSBvZiB0aGUgc2lnbmF0dXJlLiBHVUlEIHNpZ25hdHVyZSB0eXBlcyBhcmUgZGVmaW5lZCBpbiBi ZWxvdy4gKi8KKyAgZ3J1Yl9wYWNrZWRfZ3VpZF90IHNpZ25hdHVyZV90eXBlOworICAvKiBUb3Rh bCBzaXplIG9mIHRoZSBzaWduYXR1cmUgbGlzdCwgaW5jbHVkaW5nIHRoaXMgaGVhZGVyLiAqLwor ICBncnViX3VpbnQzMl90IHNpZ25hdHVyZV9saXN0X3NpemU7CisgIC8qCisgICAqIFNpemUgb2Yg dGhlIHNpZ25hdHVyZSBoZWFkZXIgd2hpY2ggcHJlY2VkZXMKKyAgICogdGhlIGFycmF5IG9mIHNp Z25hdHVyZXMuCisgICAqLworICBncnViX3VpbnQzMl90IHNpZ25hdHVyZV9oZWFkZXJfc2l6ZTsK KyAgLyogU2l6ZSBvZiBlYWNoIHNpZ25hdHVyZS4qLworICBncnViX3VpbnQzMl90IHNpZ25hdHVy ZV9zaXplOworfSBHUlVCX1BBQ0tFRDsKK3R5cGVkZWYgc3RydWN0IGdydWJfZXNsIGdydWJfZXNs X3Q7CisKKy8qIFRoZSBzdHJ1Y3R1cmUgb2YgYSBQS1MgU2lnbmF0dXJlIERhdGFiYXNlIChTRCku ICovCitzdHJ1Y3QgZ3J1Yl9wa3Nfc2QKK3sKKyAgZ3J1Yl9wYWNrZWRfZ3VpZF90IGd1aWQ7IC8q IFNpZ25hdHVyZSB0eXBlLiAqLworICBncnViX3VpbnQ4X3QgKmRhdGE7ICAgICAgLyogU2lnbmF0 dXJlIGRhdGEuICovCisgIGdydWJfc2l6ZV90IGRhdGFfc2l6ZTsgICAvKiBTaXplIG9mIHNpZ25h dHVyZSBkYXRhLiAqLworfSBHUlVCX1BBQ0tFRDsKK3R5cGVkZWYgc3RydWN0IGdydWJfcGtzX3Nk IGdydWJfcGtzX3NkX3Q7CisKKy8qIFRoZSBzdHJ1Y3R1cmUgb2YgYSBQbGF0Zm9ybSBLZXlTdG9y ZSAoUEtTKS4gKi8KK3N0cnVjdCBncnViX3BrcworeworICBncnViX3Brc19zZF90ICpkYjsgICAg ICAgIC8qIFNpZ25hdHVyZSBkYXRhYmFzZS4gKi8KKyAgZ3J1Yl9wa3Nfc2RfdCAqZGJ4OyAgICAg ICAvKiBGb3JiaWRkZW4gc2lnbmF0dXJlIGRhdGFiYXNlLiAqLworICBncnViX3VpbnQzMl90IGRi X2VudHJpZXM7IC8qIFNpemUgb2Ygc2lnbmF0dXJlIGRhdGFiYXNlLiAqLworICBncnViX3VpbnQz Ml90IGRieF9lbnRyaWVzOy8qIFNpemUgb2YgZm9yYmlkZGVuIHNpZ25hdHVyZSBkYXRhYmFzZS4g Ki8KK30gR1JVQl9QQUNLRUQ7Cit0eXBlZGVmIHN0cnVjdCBncnViX3BrcyBncnViX3Brc190Owor CisjaWYgZGVmaW5lZChfX3Bvd2VycGNfXykKKy8qIEluaXRpYWxpemF0aW9uIG9mIHRoZSBQbGF0 Zm9ybSBLZXlzdG9yZS4gKi8KK2V4dGVybiB2b2lkCitncnViX3Brc19rZXlzdG9yZV9pbml0ICh2 b2lkKTsKKworLyogUGxhdGZvcm0gS2V5U3RvcmUgZGIgYW5kIGRieC4gKi8KK2V4dGVybiBncnVi X3Brc190ICoKK0VYUE9SVF9GVU5DIChncnViX3Brc19nZXRfa2V5c3RvcmUpICh2b2lkKTsKKwor LyogRnJlZSBhbGxvY2F0ZWQgbWVtb3J5LiAqLworZXh0ZXJuIHZvaWQKK0VYUE9SVF9GVU5DIChn cnViX3Brc190bXBfZnJlZSkgKHZvaWQpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgZ3J1Yl9wa3Nf dCAqCitncnViX3Brc19nZXRfa2V5c3RvcmUgKHZvaWQpCit7CisgIHJldHVybiBOVUxMOworfQor CitzdGF0aWMgaW5saW5lIHZvaWQKK2dydWJfcGtzX3RtcF9mcmVlICh2b2lkKQoreworICByZXR1 cm47Cit9CisjZW5kaWYgLyogX19wb3dlcnBjX18gKi8KKyNlbmRpZgotLSAKMi41MC4xIChBcHBs ZSBHaXQtMTU1KQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkdydWItZGV2ZWwgbWFpbGluZyBsaXN0CkdydWItZGV2ZWxAZ251Lm9yZwpodHRwczovL2xp c3RzLmdudS5vcmcvbWFpbG1hbi9saXN0aW5mby9ncnViLWRldmVsCg==