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 8CE08CCA470 for ; Mon, 6 Oct 2025 07:28:33 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v5fbs-0007u3-7R; Mon, 06 Oct 2025 03:26:16 -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 1v5fbp-0007qJ-Gb for grub-devel@gnu.org; Mon, 06 Oct 2025 03:26:14 -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 1v5fbl-0001xT-Or for grub-devel@gnu.org; Mon, 06 Oct 2025 03:26:13 -0400 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 595LGE9o019098; Mon, 6 Oct 2025 07:26:06 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=c1U7ce7OlGXu68i51 T46GWFTg5LpC/nh5lHH+aq5i9k=; b=VGr7/9S/beZEJW6G0jdqQ/0syILzfXOOz V0C3IkdIbPsBTOIRnin/jkzG5qon5YmZX7mINiVOp9dkVTbDIrHUifzHOdtzLjW0 BlAVaCrTnH+uGYoTF+4SrFgQ6Pt5DHaZht/hPSnhcsEjIpx7hdqwrOrD2ShNzZLi QhIz0Sbe80WSV/jiejixziRtXca/QkRDKCRpv1MBUubf26CQbUrrLPyCqzA4sCZc YJTZn8HRQKzhr5KIEQAlLFu5271aiwSW3l9oBAdwzglb5ZtMkOmTdpZnmDB1Bv35 UFTaadbXu5udoHj1EjGN7fCUPEgFaJPd9ep8GRvuDpcO7ZVs92lSA== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 49jua8yt0x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Oct 2025 07:26:05 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 5965nuM4030998; Mon, 6 Oct 2025 07:26:04 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 49kfdjvrmq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Oct 2025 07:26:04 +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 5967Q0Zl57606510 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 6 Oct 2025 07:26:00 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EE3FD20043; Mon, 6 Oct 2025 07:25:59 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0AD3420040; Mon, 6 Oct 2025 07:25:57 +0000 (GMT) Received: from localhost.localdomain (unknown [9.124.213.16]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 6 Oct 2025 07:25:56 +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, Daniel Kiper Subject: [PATCH v18 11/20] powerpc_ieee1275: Read the db and dbx secure boot variables Date: Mon, 6 Oct 2025 12:54:56 +0530 Message-ID: <20251006072508.19088-12-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20251006072508.19088-1-sudhakar@linux.ibm.com> References: <20251006072508.19088-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: 6Hiy_2tpFnVGDWHs8TX4S31GClfbipvG X-Proofpoint-ORIG-GUID: 6Hiy_2tpFnVGDWHs8TX4S31GClfbipvG X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDA0MDAyMiBTYWx0ZWRfX9nTKdDKNPj/h ZzAuzdoorIeshAbK7YI9u6GaEc9xPsiZj9DM4ViGBZZqR1N8n+/iaYPoLvThtfhFteM8LoVpnkq sI+nSNZQ/1+JTxwrPkfIgioKofr38pp5rmJyrJmiTuVrpiD9QxOR33I6JjESmGIStemTWq0dq4c Du6txb4HM3LgTxac5hMJI9XiYueYht+UQIhP8IZtvgo5U1kukfDFSMZv0FMJC+eF9xVeGZQa2/z yS6vpBBFxTcMNxu3N9CtwAyInMhFwc2aed9cQZZ6GQNtPGXHGYhZwt9kB1rXNHFM4p3nLgL+lX2 kRQTII7/o6ZKfKjWbUokuI+9mWpG1g7Usy41EhMO7rLpJ38UHYQoJtPQJsufRHQ+iaRU6DlTZak s/ARrbWGKoKsbE/DCMmpWvIhe9ZlZQ== X-Authority-Analysis: v=2.4 cv=QdBrf8bv c=1 sm=1 tr=0 ts=68e36f0d cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=x6icFKpwvdMA:10 a=mDV3o1hIAAAA:8 a=NEAV23lmAAAA:8 a=VnNF1IyMAAAA:8 a=yPCof4ZbAAAA:8 a=-gF6cklxeiXeCHP5XHIA:9 a=3ZKOabzyN94A:10 a=cPQSjfK2_nFv0Q5t_7PE:22 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-10-06_02,2025-10-02_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 clxscore=1015 suspectscore=0 adultscore=0 malwarescore=0 bulkscore=0 spamscore=0 lowpriorityscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2509150000 definitions=main-2510040022 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.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, 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 b3JlIChQS1MpIGZlYXR1cmUsCndoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgU0JfVkVSU0lP TiwgZGIsIGFuZCBkYnggc2VjdXJlIGJvb3QgdmFyaWFibGVzCmZyb20gUEtTLgoKSWYgUEtTIGlz IGVuYWJsZWQsIGl0IHdpbGwgcmVhZCBzZWN1cmUgYm9vdCB2YXJpYWJsZXMgc3VjaCBhcyBkYiBh bmQgZGJ4CmZyb20gUEtTIGFuZCBleHRyYWN0IEVGSSBTaWduYXR1cmUgTGlzdCAoRVNMKSBmcm9t IGl0LiBUaGUgRVNMcyB3b3VsZCBiZQpzYXZlZCBpbiB0aGUgUGxhdGZvcm0gS2V5c3RvcmUgYnVm ZmVyLCBhbmQgdGhlIGFwcGVuZGVkc2lnIG1vZHVsZSB3b3VsZApyZWFkIGl0IGxhdGVyIHRvIGV4 dHJhY3QgdGhlIGNlcnRpZmljYXRlJ3MgZGV0YWlscyBmcm9tIEVTTC4KCkluIHRoZSBmb2xsb3dp bmcgc2NlbmFyaW9zLCBzdGF0aWMga2V5IG1hbmFnZW1lbnQgbW9kZSB3aWxsIGJlIGFjdGl2YXRl ZDoKIDEuIFdoZW4gU2VjdXJlIEJvb3QgaXMgZW5hYmxlZCB3aXRoIHN0YXRpYyBrZXkgbWFuYWdl bWVudCBtb2RlCiAyLiBXaGVuIFNCX1ZFUlNJT04gaXMgdW5hdmFpbGFibGUgYnV0IFNlY3VyZSBC b290IGlzIGVuYWJsZWQKIDMuIFdoZW4gUEtTIHN1cHBvcnQgaXMgdW5hdmFpbGFibGUgYnV0IFNl Y3VyZSBCb290IGlzIGVuYWJsZWQKCk5vdGU6LQoKIFNCX1ZFUlNJT046IEtleSBNYW5hZ2VtZW50 IE1vZGUKIDEgLSBFbmFibGUgZHluYW1pYyBrZXkgbWFuYWdlbWVudCBtb2RlLiBSZWFkIHRoZSBk YiBhbmQgZGJ4IHZhcmlhYmxlcyBmcm9tIFBLUywKICAgICBhbmQgdXNlIHRoZW0gZm9yIHNpZ25h dHVyZSB2ZXJpZmljYXRpb24uCiAwIC0gRW5hYmxlIHN0YXRpYyBrZXkgbWFuYWdlbWVudCBtb2Rl LiBSZWFkIGtleXMgZnJvbSB0aGUgR1JVQiBFTEYgTm90ZSBhbmQKICAgICB1c2UgaXQgZm9yIHNp Z25hdHVyZSB2ZXJpZmljYXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBTdWRoYWthciBLdXBwdXNhbXkg PHN1ZGhha2FyQGxpbnV4LmlibS5jb20+ClJldmlld2VkLWJ5OiBBdm5pc2ggQ2hvdWhhbiA8YXZu aXNoQGxpbnV4LmlibS5jb20+ClJldmlld2VkLWJ5OiBEYW5pZWwgS2lwZXIgPGRhbmllbC5raXBl ckBvcmFjbGUuY29tPgotLS0KIGdydWItY29yZS9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMiArCiBncnViLWNvcmUvTWFrZWZpbGUuY29yZS5kZWYgICAgICAgICAgICAg ICAgICAgfCAgIDIgKwogZ3J1Yi1jb3JlL2tlcm4vaWVlZTEyNzUvaWVlZTEyNzUuYyAgICAgICAg ICAgIHwgICAxIC0KIGdydWItY29yZS9rZXJuL2llZWUxMjc1L2luaXQuYyAgICAgICAgICAgICAg ICB8ICAgNCArCiBncnViLWNvcmUva2Vybi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1LmMgICAg fCAxMzcgKysrKysrKwogLi4uL2tlcm4vcG93ZXJwYy9pZWVlMTI3NS9wbGF0Zm9ybV9rZXlzdG9y ZS5jIHwgMzMzICsrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9ncnViL2llZWUxMjc1L2llZWUx Mjc1LmggICAgICAgICAgICAgIHwgICAzICsKIGluY2x1ZGUvZ3J1Yi9wb3dlcnBjL2llZWUxMjc1 L2llZWUxMjc1LmggICAgICB8ICAzNiArKwogLi4uL2dydWIvcG93ZXJwYy9pZWVlMTI3NS9wbGF0 Zm9ybV9rZXlzdG9yZS5oIHwgMTIzICsrKysrKysKIDkgZmlsZXMgY2hhbmdlZCwgNjQwIGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBncnViLWNvcmUva2Vy bi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBncnViLWNv cmUva2Vybi9wb3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tleXN0b3JlLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBpbmNsdWRlL2dydWIvcG93ZXJwYy9pZWVlMTI3NS9wbGF0Zm9ybV9rZXlzdG9yZS5o CgpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL01ha2VmaWxlLmFtIGIvZ3J1Yi1jb3JlL01ha2VmaWxl LmFtCmluZGV4IGU1MGRiODEwNi4uODU3NzQ2MmQ1IDEwMDY0NAotLS0gYS9ncnViLWNvcmUvTWFr ZWZpbGUuYW0KKysrIGIvZ3J1Yi1jb3JlL01ha2VmaWxlLmFtCkBAIC0yNDYsNiArMjQ2LDggQEAg S0VSTkVMX0hFQURFUl9GSUxFUyArPSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvZ3J1Yi9pZWVlMTI3 NS9hbGxvYy5oCiBLRVJORUxfSEVBREVSX0ZJTEVTICs9ICQodG9wX3NyY2RpcikvaW5jbHVkZS9n cnViL3Rlcm1pbmZvLmgKIEtFUk5FTF9IRUFERVJfRklMRVMgKz0gJCh0b3Bfc3JjZGlyKS9pbmNs dWRlL2dydWIvZXh0Y21kLmgKIEtFUk5FTF9IRUFERVJfRklMRVMgKz0gJCh0b3Bfc3JjZGlyKS9p bmNsdWRlL2dydWIvbGliL2FyZy5oCitLRVJORUxfSEVBREVSX0ZJTEVTICs9ICQodG9wX3NyY2Rp cikvaW5jbHVkZS9ncnViL3Bvd2VycGMvaWVlZTEyNzUvaWVlZTEyNzUuaAorS0VSTkVMX0hFQURF Ul9GSUxFUyArPSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvZ3J1Yi9wb3dlcnBjL2llZWUxMjc1L3Bs YXRmb3JtX2tleXN0b3JlLmgKIGVuZGlmCiAKIGlmIENPTkRfc3BhcmM2NF9pZWVlMTI3NQpkaWZm IC0tZ2l0IGEvZ3J1Yi1jb3JlL01ha2VmaWxlLmNvcmUuZGVmIGIvZ3J1Yi1jb3JlL01ha2VmaWxl LmNvcmUuZGVmCmluZGV4IDY4MjRhMGVlNC4uODUzZDg3OWE0IDEwMDY0NAotLS0gYS9ncnViLWNv cmUvTWFrZWZpbGUuY29yZS5kZWYKKysrIGIvZ3J1Yi1jb3JlL01ha2VmaWxlLmNvcmUuZGVmCkBA IC0zMzQsNiArMzM0LDggQEAga2VybmVsID0gewogICBwb3dlcnBjX2llZWUxMjc1ID0ga2Vybi9w b3dlcnBjL2RsLmM7CiAgIHBvd2VycGNfaWVlZTEyNzUgPSBrZXJuL3Bvd2VycGMvY29tcGlsZXIt cnQuUzsKICAgcG93ZXJwY19pZWVlMTI3NSA9IGtlcm4vbG9ja2Rvd24uYzsKKyAgcG93ZXJwY19p ZWVlMTI3NSA9IGtlcm4vcG93ZXJwYy9pZWVlMTI3NS9pZWVlMTI3NS5jOworICBwb3dlcnBjX2ll ZWUxMjc1ID0ga2Vybi9wb3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tleXN0b3JlLmM7CiAKICAg c3BhcmM2NF9pZWVlMTI3NSA9IGtlcm4vc3BhcmM2NC9jYWNoZS5TOwogICBzcGFyYzY0X2llZWUx Mjc1ID0ga2Vybi9zcGFyYzY0L2RsLmM7CmRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi9pZWVl MTI3NS9pZWVlMTI3NS5jIGIvZ3J1Yi1jb3JlL2tlcm4vaWVlZTEyNzUvaWVlZTEyNzUuYwppbmRl eCAzNmNhMmRiZmMuLmFmYTM3YTlmMCAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2tlcm4vaWVlZTEy NzUvaWVlZTEyNzUuYworKysgYi9ncnViLWNvcmUva2Vybi9pZWVlMTI3NS9pZWVlMTI3NS5jCkBA IC0yMyw3ICsyMyw2IEBACiAKICNkZWZpbmUgSUVFRTEyNzVfUEhBTkRMRV9JTlZBTElEICAoKGdy dWJfaWVlZTEyNzVfY2VsbF90KSAtMSkKICNkZWZpbmUgSUVFRTEyNzVfSUhBTkRMRV9JTlZBTElE ICAoKGdydWJfaWVlZTEyNzVfY2VsbF90KSAwKQotI2RlZmluZSBJRUVFMTI3NV9DRUxMX0lOVkFM SUQgICAgICgoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpIC0xKQogCiAMCiAKZGlmZiAtLWdpdCBhL2dy dWItY29yZS9rZXJuL2llZWUxMjc1L2luaXQuYyBiL2dydWItY29yZS9rZXJuL2llZWUxMjc1L2lu aXQuYwppbmRleCAyODY1M2E1YTQuLjBlZjg4ODA1OCAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2tl cm4vaWVlZTEyNzUvaW5pdC5jCisrKyBiL2dydWItY29yZS9rZXJuL2llZWUxMjc1L2luaXQuYwpA QCAtNTEsNiArNTEsOCBAQAogI2VuZGlmCiAjaWYgZGVmaW5lZChfX3Bvd2VycGNfXykKICNpbmNs dWRlIDxncnViL2xvY2tkb3duLmg+CisjaW5jbHVkZSA8Z3J1Yi9wb3dlcnBjL2llZWUxMjc1L2ll ZWUxMjc1Lmg+CisjaW5jbHVkZSA8Z3J1Yi9wb3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tleXN0 b3JlLmg+CiAjZW5kaWYKIAogI2lmZGVmIF9fcG93ZXJwY19fCkBAIC0xMDQzLDYgKzEwNDUsOCBA QCBncnViX2llZWUxMjc1X2dldF9zZWN1cmVfYm9vdCAodm9pZCkKICAgICB9CiAgIGVsc2UKICAg ICBncnViX2RwcmludGYgKCJpZWVlMTI3NSIsICJTZWN1cmUgQm9vdCBEaXNhYmxlZFxuIik7CisK KyAgZ3J1Yl9wa3Nfa2V5c3RvcmVfaW5pdCAoKTsKIH0KICNlbmRpZiAvKiBfX3Bvd2VycGNfXyAq LwogZ3J1Yl9hZGRyX3QgZ3J1Yl9tb2RiYXNlOwpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4v cG93ZXJwYy9pZWVlMTI3NS9pZWVlMTI3NS5jIGIvZ3J1Yi1jb3JlL2tlcm4vcG93ZXJwYy9pZWVl MTI3NS9pZWVlMTI3NS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMjBj NDllMzcxCi0tLSAvZGV2L251bGwKKysrIGIvZ3J1Yi1jb3JlL2tlcm4vcG93ZXJwYy9pZWVlMTI3 NS9pZWVlMTI3NS5jCkBAIC0wLDAgKzEsMTM3IEBACisvKiBpZWVlMTI3NS5jIC0gQWNjZXNzIHRo ZSBPcGVuIEZpcm13YXJlIGNsaWVudCBpbnRlcmZhY2UuICAqLworLyoKKyAqICBHUlVCICAtLSAg R1JhbmQgVW5pZmllZCBCb290bG9hZGVyCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLDIwMDQsMjAw NSwyMDA3LDIwMDgsMjAwOSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgKiAgQ29w eXJpZ2h0IChDKSAyMDIwLCAyMDIxLCAyMDIyLCAyMDIzLCAyMDI0LCAyMDI1IElCTSBDb3Jwb3Jh dGlvbgorICoKKyAqICBHUlVCIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgR1JVQiBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCBHUlVCLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisjaW5jbHVkZSA8Z3J1Yi9pZWVlMTI3NS9p ZWVlMTI3NS5oPgorI2luY2x1ZGUgPGdydWIvcG93ZXJwYy9pZWVlMTI3NS9pZWVlMTI3NS5oPgor I2luY2x1ZGUgPGdydWIvbWlzYy5oPgorCitncnViX2ludDMyX3QKK2dydWJfaWVlZTEyNzVfdGVz dCAoY29uc3QgY2hhciAqaW50ZXJmYWNlX25hbWUpCit7CisgIHN0cnVjdCB0ZXN0X2FyZ3MKKyAg eworICAgIHN0cnVjdCBncnViX2llZWUxMjc1X2NvbW1vbl9oZHIgY29tbW9uOy8qIFRoZSBoZWFk ZXIgaW5mb3JtYXRpb24gbGlrZSBpbnRlcmZhY2UgbmFtZSwgbnVtYmVyIG9mIGlucHV0cyBhbmQg b3V0cHV0cy4gKi8KKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBuYW1lOyAgICAgICAgICAgICAv KiBUaGUgaW50ZXJmYWNlIG5hbWUuICovCisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgbWlzc2lu ZzsKKyAgfSBhcmdzOworCisgIElOSVRfSUVFRTEyNzVfQ09NTU9OICgmYXJncy5jb21tb24sICJ0 ZXN0IiwgMSwgMSk7CisgIGFyZ3MubmFtZSA9IChncnViX2llZWUxMjc1X2NlbGxfdCkgaW50ZXJm YWNlX25hbWU7CisKKyAgaWYgKElFRUUxMjc1X0NBTExfRU5UUllfRk4gKCZhcmdzKSA9PSAtMSkK KyAgICByZXR1cm4gLTE7CisKKyAgaWYgKGFyZ3MubWlzc2luZyA9PSBJRUVFMTI3NV9DRUxMX0lO VkFMSUQpCisgICAgcmV0dXJuIC0xOworCisgIHJldHVybiAwOworfQorCitncnViX2ludDMyX3QK K2dydWJfaWVlZTEyNzVfcGtzX21heF9vYmplY3Rfc2l6ZSAoZ3J1Yl91aW50MzJfdCAqcmVzdWx0 KQoreworICBzdHJ1Y3QgbW9zX2FyZ3MKKyAgeworICAgIHN0cnVjdCBncnViX2llZWUxMjc1X2Nv bW1vbl9oZHIgY29tbW9uOy8qIFRoZSBoZWFkZXIgaW5mb3JtYXRpb24gbGlrZSBpbnRlcmZhY2Ug bmFtZSwgbnVtYmVyIG9mIGlucHV0cyBhbmQgb3V0cHV0cy4gKi8KKyAgICBncnViX2llZWUxMjc1 X2NlbGxfdCBzaXplOyAgICAgICAgICAgICAvKiBUaGUgbWF4aW11bSBvYmplY3Qgc2l6ZSBmb3Ig YSBQS1Mgb2JqZWN0LiAqLworICB9IGFyZ3M7CisKKyAgSU5JVF9JRUVFMTI3NV9DT01NT04gKCZh cmdzLmNvbW1vbiwgR1JVQl9QS1NfTUFYX09CSl9JTlRFUkZBQ0UsIDAsIDEpOworCisgIGlmIChJ RUVFMTI3NV9DQUxMX0VOVFJZX0ZOICgmYXJncykgPT0gLTEpCisgICAgcmV0dXJuIC0xOworCisg IGlmIChhcmdzLnNpemUgPT0gSUVFRTEyNzVfQ0VMTF9JTlZBTElEIHx8IGFyZ3Muc2l6ZSA9PSAw KQorICAgIHJldHVybiAtMTsKKworICAqcmVzdWx0ID0gYXJncy5zaXplOworCisgIHJldHVybiAw OworfQorCitncnViX2ludDMyX3QKK2dydWJfaWVlZTEyNzVfcGtzX3JlYWRfb2JqZWN0IChjb25z dCBncnViX3VpbnQzMl90IGNvbnN1bWVyLCBjb25zdCBjaGFyICpsYWJlbCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBncnViX3VpbnQzMl90IGxhYmVsX2xlbiwgY29uc3Qg Z3J1Yl91aW50MzJfdCBidWZmZXJfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdydWJfdWludDhfdCAqYnVmZmVyLCBncnViX3VpbnQzMl90ICpkYXRhX2xlbiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBncnViX3VpbnQzMl90ICpwb2xpY2llcykKK3sKKyAgc3Ry dWN0IHBrc19yZWFkX2FyZ3MKKyAgeworICAgIHN0cnVjdCBncnViX2llZWUxMjc1X2NvbW1vbl9o ZHIgY29tbW9uOyAvKiBUaGUgaGVhZGVyIGluZm9ybWF0aW9uIGxpa2UgaW50ZXJmYWNlIG5hbWUs IG51bWJlciBvZiBpbnB1dHMgYW5kIG91dHB1dHMuICovCisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxs X3QgY29uc3VtZXI7ICAgICAgICAgIC8qIFRoZSBvYmplY3QgYmVsb25naW5nIHRvIGNvbnN1bWVy IHdpdGggdGhlIGxhYmVsLiAqLworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGxhYmVsOyAgICAg ICAgICAgICAvKiBPYmplY3QgbGFiZWwgYnVmZmVyIGxvZ2ljYWwgcmVhbCBhZGRyZXNzLiAqLwor ICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGxhYmVsX2xlbjsgICAgICAgICAvKiBUaGUgYnl0ZSBs ZW5ndGggb2YgdGhlIG9iamVjdCBsYWJlbC4gKi8KKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBi dWZmZXI7ICAgICAgICAgICAgLyogT3V0cHV0IGJ1ZmZlciBsb2dpY2FsIHJlYWwgYWRkcmVzcy4g Ki8KKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBidWZmZXJfbGVuOyAgICAgICAgLyogTGVuZ3Ro IG9mIHRoZSBvdXRwdXQgYnVmZmVyLiAqLworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGRhdGFf bGVuOyAgICAgICAgICAvKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCB0byB0aGUgb3V0cHV0 IGJ1ZmZlci4gKi8KKyAgICBncnViX2llZWUxMjc1X2NlbGxfdCBwb2xpY2llczsgICAgICAgICAg LyogVGhlIG9iamVjdCBwb2xpY2llcy4gKi8KKyAgICBncnViX2ludDMyX3QgcmM7ICAgICAgICAg ICAgICAgICAgICAgICAgLyogVGhlIHJldHVybiBjb2RlLiAqLworICB9IGFyZ3M7CisKKyAgSU5J VF9JRUVFMTI3NV9DT01NT04gKCZhcmdzLmNvbW1vbiwgR1JVQl9QS1NfUkVBRF9PQkpfSU5URVJG QUNFLCA1LCAzKTsKKyAgYXJncy5jb25zdW1lciA9IGNvbnN1bWVyOworICBhcmdzLmxhYmVsX2xl biA9IGxhYmVsX2xlbjsKKyAgYXJncy5idWZmZXJfbGVuID0gYnVmZmVyX2xlbjsKKyAgYXJncy5s YWJlbCA9IChncnViX2llZWUxMjc1X2NlbGxfdCkgbGFiZWw7CisgIGFyZ3MuYnVmZmVyID0gKGdy dWJfaWVlZTEyNzVfY2VsbF90KSBidWZmZXI7CisKKyAgaWYgKElFRUUxMjc1X0NBTExfRU5UUllf Rk4gKCZhcmdzKSA9PSAtMSkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYgKGFyZ3MuZGF0YV9sZW4g PT0gSUVFRTEyNzVfQ0VMTF9JTlZBTElEKQorICAgIHJldHVybiAtMTsKKworICAqZGF0YV9sZW4g PSBhcmdzLmRhdGFfbGVuOworICAqcG9saWNpZXMgPSBhcmdzLnBvbGljaWVzOworCisgIHJldHVy biBhcmdzLnJjOworfQorCitncnViX2ludDMyX3QKK2dydWJfaWVlZTEyNzVfcGtzX3JlYWRfc2J2 YXIgKGNvbnN0IGdydWJfdWludDMyX3Qgc2J2YXJfZmxhZ3MsIGNvbnN0IGdydWJfdWludDMyX3Qg c2J2YXJfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdydWJfdWlu dDMyX3QgYnVmZmVyX2xlbiwgZ3J1Yl91aW50OF90ICpidWZmZXIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBncnViX3NpemVfdCAqZGF0YV9sZW4pCit7CisgIHN0cnVjdCBwa3NfcmVh ZF9zYnZhcl9hcmdzCisgIHsKKyAgICBzdHJ1Y3QgZ3J1Yl9pZWVlMTI3NV9jb21tb25faGRyIGNv bW1vbjsgLyogVGhlIGhlYWRlciBpbmZvcm1hdGlvbiBsaWtlIGludGVyZmFjZSBuYW1lLCBudW1i ZXIgb2YgaW5wdXRzIGFuZCBvdXRwdXRzLiAqLworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IHNi dmFyX2ZsYWdzOyAgICAgICAvKiBUaGUgc2J2YXIgb3BlcmF0aW9uIGZsYWdzLiAqLworICAgIGdy dWJfaWVlZTEyNzVfY2VsbF90IHNidmFyX3R5cGU7ICAgICAgICAvKiBUaGUgc2J2YXIgYmVpbmcg cmVxdWVzdGVkLiAqLworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGJ1ZmZlcjsgICAgICAgICAg ICAvKiBPdXRwdXQgYnVmZmVyIGxvZ2ljYWwgcmVhbCBhZGRyZXNzLiAqLworICAgIGdydWJfaWVl ZTEyNzVfY2VsbF90IGJ1ZmZlcl9sZW47ICAgICAgICAvKiBMZW5ndGggb2YgdGhlIE91dHB1dCBi dWZmZXIuICovCisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgZGF0YV9sZW47ICAgICAgICAgIC8q IFRoZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkIHRvIHRoZSBvdXRwdXQgYnVmZmVyLiAqLworICAg IGdydWJfaW50MzJfdCByYzsgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgcmV0dXJuIGNv ZGUuICovCisgIH0gYXJnczsKKworICBJTklUX0lFRUUxMjc1X0NPTU1PTiAoJmFyZ3MuY29tbW9u LCBHUlVCX1BLU19SRUFEX1NCVkFSX0lOVEVSRkFDRSwgNCwgMik7CisgIGFyZ3Muc2J2YXJfZmxh Z3MgPSBzYnZhcl9mbGFnczsKKyAgYXJncy5zYnZhcl90eXBlID0gc2J2YXJfdHlwZTsKKyAgYXJn cy5idWZmZXJfbGVuID0gYnVmZmVyX2xlbjsKKyAgYXJncy5idWZmZXIgPSAoZ3J1Yl9pZWVlMTI3 NV9jZWxsX3QpIGJ1ZmZlcjsKKworICBpZiAoSUVFRTEyNzVfQ0FMTF9FTlRSWV9GTiAoJmFyZ3Mp ID09IC0xKQorICAgIHJldHVybiAtMTsKKworICBpZiAoYXJncy5kYXRhX2xlbiA9PSBJRUVFMTI3 NV9DRUxMX0lOVkFMSUQpCisgICAgcmV0dXJuIC0xOworCisgICpkYXRhX2xlbiA9IGFyZ3MuZGF0 YV9sZW47CisKKyAgcmV0dXJuIGFyZ3MucmM7Cit9CmRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vy bi9wb3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tleXN0b3JlLmMgYi9ncnViLWNvcmUva2Vybi9w b3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tleXN0b3JlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi5jYzJkNDkzYmIKLS0tIC9kZXYvbnVsbAorKysgYi9ncnViLWNvcmUv a2Vybi9wb3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tleXN0b3JlLmMKQEAgLTAsMCArMSwzMzMg QEAKKy8qCisgKiAgR1JVQiAgLS0gIEdSYW5kIFVuaWZpZWQgQm9vdGxvYWRlcgorICogIENvcHly aWdodCAoQykgMjAyNCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgKiAgQ29weXJp Z2h0IChDKSAyMDIyLCAyMDIzLCAyMDI0LCAyMDI1IElCTSBDb3Jwb3JhdGlvbgorICoKKyAqICBH UlVCIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgR1JVQiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisgKiAgYWxvbmcgd2l0aCBHUlVCLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDxncnViL21tLmg+CisjaW5jbHVkZSA8Z3J1Yi90 eXBlcy5oPgorI2luY2x1ZGUgPGdydWIvbWlzYy5oPgorI2luY2x1ZGUgPGdydWIvbG9ja2Rvd24u aD4KKyNpbmNsdWRlIDxncnViL2llZWUxMjc1L2llZWUxMjc1Lmg+CisjaW5jbHVkZSA8Z3J1Yi9w b3dlcnBjL2llZWUxMjc1L2llZWUxMjc1Lmg+CisjaW5jbHVkZSA8Z3J1Yi9wb3dlcnBjL2llZWUx Mjc1L3BsYXRmb3JtX2tleXN0b3JlLmg+CisKKy8qIFBLUyBvYmplY3QgbWF4aW11bSBzaXplLiAq Lworc3RhdGljIGdydWJfdWludDMyX3QgcGtzX21heF9vYmplY3Rfc2l6ZSA9IDA7CisKKy8qIFBs YXRmb3JtIEtleVN0b3JlIGRiIGFuZCBkYnguICovCitzdGF0aWMgZ3J1Yl9wa3NfdCBwa3Nfa2V5 c3RvcmUgPSB7IC5kYiA9IE5VTEwsIC5kYnggPSBOVUxMLCAuZGJfZW50cmllcyA9IDAsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kYnhfZW50cmllcyA9IDAsIC5kYl9leGlz dHMgPSB0cnVlfTsKKy8qCisgKiBwa3NfdXNlX2tleXN0b3JlOiBLZXkgTWFuYWdlbWVudCBNb2Rl cworICogRmFsc2U6IFN0YXRpYyBrZXkgbWFuYWdlbWVudCAodXNlIGJ1aWx0LWluIEtleXMpLiBU aGlzIGlzIGRlZmF1bHQuCisgKiBUcnVlOiBEeW5hbWljIGtleSBtYW5hZ2VtZW50ICh1c2UgUGxh dGZvcm0gS2V5U290cmUpLgorICovCitzdGF0aWMgYm9vbCBwa3NfdXNlX2tleXN0b3JlID0gZmFs c2U7CisKKy8qCisgKiBSZWFkcyB0aGUgR2xvYmFsbHkgVW5pcXVlIElkZW50aWZpZXIgKEdVSUQp LCBFRkkgU2lnbmF0dXJlIERhdGFiYXNlIChFU0QpLAorICogYW5kIGl0cyBzaXplIGZyb20gdGhl IFBsYXRmb3JtIEtleVN0b3JlIEVGSSBTaWduYXR1cmUgTGlzdCAoRVNMKSwgdGhlbgorICogc3Rv cmVzIHRoZW0gaW50byB0aGUgUEtTIFNpZ25hdHVyZSBEYXRhYmFzZSAoU0QpIChpLmUuLCBwa3Nf c2QgYnVmZmVyCisgKiBhbmQgcGtzX3NkIGVudHJpZXMpIGluIHRoZSBHUlVCLgorICovCitzdGF0 aWMgZ3J1Yl9lcnJfdAorX2VzbF90b19lc2QgKGNvbnN0IGdydWJfdWludDhfdCAqZXNsX2RhdGEs IGdydWJfc2l6ZV90IGVzbF9zaXplLAorICAgICAgICAgICAgIGNvbnN0IGdydWJfc2l6ZV90IHNp Z25hdHVyZV9zaXplLCBjb25zdCBncnViX3BhY2tlZF9ndWlkX3QgKmd1aWQsCisgICAgICAgICAg ICAgZ3J1Yl9wa3Nfc2RfdCAqKnBrc19zZCwgZ3J1Yl91aW50MzJfdCAqcGtzX3NkX2VudHJpZXMp Cit7CisgIGdydWJfZXNkX3QgKmVzZDsKKyAgZ3J1Yl9wa3Nfc2RfdCAqc2lnbmF0dXJlID0gKnBr c19zZDsKKyAgZ3J1Yl91aW50MzJfdCBlbnRyaWVzID0gKnBrc19zZF9lbnRyaWVzOworICBncnVi X3NpemVfdCBkYXRhX3NpemUsIG9mZnNldCA9IDA7CisKKyAgLyogUmVhZHMgdGhlIEVTRCBmcm9t IEVTTC4gKi8KKyAgd2hpbGUgKGVzbF9zaXplID4gMCkKKyAgICB7CisgICAgICBlc2QgPSAoZ3J1 Yl9lc2RfdCAqKSAoZXNsX2RhdGEgKyBvZmZzZXQpOworICAgICAgZGF0YV9zaXplID0gc2lnbmF0 dXJlX3NpemUgLSBzaXplb2YgKGdydWJfZXNkX3QpOworCisgICAgICBzaWduYXR1cmUgPSBncnVi X3JlYWxsb2MgKHNpZ25hdHVyZSwgKGVudHJpZXMgKyAxKSAqIHNpemVvZiAoZ3J1Yl9wa3Nfc2Rf dCkpOworICAgICAgaWYgKHNpZ25hdHVyZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gZ3J1Yl9l cnJvciAoR1JVQl9FUlJfT1VUX09GX01FTU9SWSwgIm91dCBvZiBtZW1vcnkiKTsKKworICAgICAg c2lnbmF0dXJlW2VudHJpZXNdLmRhdGEgPSBncnViX21hbGxvYyAoZGF0YV9zaXplICogc2l6ZW9m IChncnViX3VpbnQ4X3QpKTsKKyAgICAgIGlmIChzaWduYXR1cmVbZW50cmllc10uZGF0YSA9PSBO VUxMKQorICAgICAgICB7CisgICAgICAgICAgLyogQWxsb2NhdGVkIG1lbW9yeSB3aWxsIGJlIGZy ZWVkIGJ5IGdydWJfcGtzX2ZyZWVfZGF0YSgpLiAqLworICAgICAgICAgICpwa3Nfc2QgPSBzaWdu YXR1cmU7CisgICAgICAgICAgKnBrc19zZF9lbnRyaWVzID0gZW50cmllcyArIDE7CisgICAgICAg ICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJvdXQgb2YgbWVt b3J5Iik7CisgICAgICAgIH0KKworICAgICAgZ3J1Yl9tZW1jcHkgKHNpZ25hdHVyZVtlbnRyaWVz XS5kYXRhLCBlc2QtPnNpZ25hdHVyZV9kYXRhLCBkYXRhX3NpemUpOworICAgICAgc2lnbmF0dXJl W2VudHJpZXNdLmRhdGFfc2l6ZSA9IGRhdGFfc2l6ZTsKKyAgICAgIHNpZ25hdHVyZVtlbnRyaWVz XS5ndWlkID0gKmd1aWQ7CisgICAgICBlbnRyaWVzKys7CisgICAgICBlc2xfc2l6ZSAtPSBzaWdu YXR1cmVfc2l6ZTsKKyAgICAgIG9mZnNldCArPSBzaWduYXR1cmVfc2l6ZTsKKyAgICB9CisKKyAg KnBrc19zZCA9IHNpZ25hdHVyZTsKKyAgKnBrc19zZF9lbnRyaWVzID0gZW50cmllczsKKworICBy ZXR1cm4gR1JVQl9FUlJfTk9ORTsKK30KKworLyogRXh0cmFjdCB0aGUgRVNEIGFmdGVyIHJlbW92 aW5nIHRoZSBFU0wgaGVhZGVyIGZyb20gRVNMLiAqLworc3RhdGljIGdydWJfZXJyX3QKK2VzbF90 b19lc2QgKGNvbnN0IGdydWJfdWludDhfdCAqZXNsX2RhdGEsIGdydWJfc2l6ZV90ICpuZXh0X2Vz bCwKKyAgICAgICAgICAgIGdydWJfcGtzX3NkX3QgKipwa3Nfc2QsIGdydWJfdWludDMyX3QgKnBr c19zZF9lbnRyaWVzKQoreworICBncnViX3BhY2tlZF9ndWlkX3QgZ3VpZDsKKyAgZ3J1Yl9lc2xf dCAqZXNsOworICBncnViX3NpemVfdCBvZmZzZXQsIGVzbF9zaXplLCBzaWduYXR1cmVfc2l6ZSwg c2lnbmF0dXJlX2hlYWRlcl9zaXplOworCisgIC8qIENvbnZlcnQgdGhlIEVTTCBkYXRhIGludG8g dGhlIEVTTC4gKi8KKyAgZXNsID0gKGdydWJfZXNsX3QgKikgZXNsX2RhdGE7CisgIGlmICgqbmV4 dF9lc2wgPCBzaXplb2YgKGdydWJfZXNsX3QpIHx8IGVzbCA9PSBOVUxMKQorICAgIHJldHVybiBn cnViX2Vycm9yIChHUlVCX0VSUl9CVUcsICJpbnZhbGlkIEVTTCIpOworCisgIGVzbF9zaXplID0g Z3J1Yl9sZV90b19jcHUzMiAoZXNsLT5zaWduYXR1cmVfbGlzdF9zaXplKTsKKyAgc2lnbmF0dXJl X2hlYWRlcl9zaXplID0gZ3J1Yl9sZV90b19jcHUzMiAoZXNsLT5zaWduYXR1cmVfaGVhZGVyX3Np emUpOworICBzaWduYXR1cmVfc2l6ZSA9IGdydWJfbGVfdG9fY3B1MzIgKGVzbC0+c2lnbmF0dXJl X3NpemUpOworICBncnViX21lbWNweSAoJmd1aWQsICZlc2wtPnNpZ25hdHVyZV90eXBlLCBzaXpl b2YgKGdydWJfcGFja2VkX2d1aWRfdCkpOworCisgIGlmIChlc2xfc2l6ZSA8IHNpemVvZiAoZ3J1 Yl9lc2xfdCkgfHwgZXNsX3NpemUgPiAqbmV4dF9lc2wpCisgICAgcmV0dXJuIGdydWJfZXJyb3Ig KEdSVUJfRVJSX0JVRywgImludmFsaWQgRVNMIHNpemUgKCV1KVxuIiwgZXNsX3NpemUpOworCisg ICpuZXh0X2VzbCA9IGVzbF9zaXplOworICBvZmZzZXQgPSBzaXplb2YgKGdydWJfZXNsX3QpICsg c2lnbmF0dXJlX2hlYWRlcl9zaXplOworICBlc2xfc2l6ZSA9IGVzbF9zaXplIC0gb2Zmc2V0Owor CisgIHJldHVybiBfZXNsX3RvX2VzZCAoZXNsX2RhdGEgKyBvZmZzZXQsIGVzbF9zaXplLCBzaWdu YXR1cmVfc2l6ZSwgJmd1aWQsCisgICAgICAgICAgICAgICAgICAgICAgcGtzX3NkLCBwa3Nfc2Rf ZW50cmllcyk7Cit9CisKKy8qCisgKiBJbXBvcnQgdGhlIEVGSSBTaWduYXR1cmUgRGF0YWJhc2Ug KEVTRCkgYW5kIHRoZSBudW1iZXIgb2YgRVNEIGZyb20gdGhlIEVTTAorICogaW50byB0aGUgcGtz X3NkIGJ1ZmZlciBhbmQgcGtzX3NkIGVudHJpZXMuCisgKi8KK3N0YXRpYyBncnViX2Vycl90Citw a3Nfc2RfZnJvbV9lc2wgKGNvbnN0IGdydWJfdWludDhfdCAqZXNsX2RhdGEsIGdydWJfc2l6ZV90 IGVzbF9zaXplLAorICAgICAgICAgICAgICAgICBncnViX3Brc19zZF90ICoqcGtzX3NkLCBncnVi X3VpbnQzMl90ICpwa3Nfc2RfZW50cmllcykKK3sKKyAgZ3J1Yl9lcnJfdCByYzsKKyAgZ3J1Yl9z aXplX3QgbmV4dF9lc2wgPSBlc2xfc2l6ZTsKKworICBkbworICAgIHsKKyAgICAgIHJjID0gZXNs X3RvX2VzZCAoZXNsX2RhdGEsICZuZXh0X2VzbCwgcGtzX3NkLCBwa3Nfc2RfZW50cmllcyk7Cisg ICAgICBpZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGVz bF9kYXRhICs9IG5leHRfZXNsOworICAgICAgZXNsX3NpemUgLT0gbmV4dF9lc2w7CisgICAgICBu ZXh0X2VzbCA9IGVzbF9zaXplOworICAgIH0KKyAgd2hpbGUgKGVzbF9zaXplID4gMCk7CisKKyAg cmV0dXJuIHJjOworfQorCisvKiBSZWFkIHRoZSBzZWN1cmUgYm9vdCB2ZXJzaW9uIGZyb20gUEtT IGFzIGFuIG9iamVjdC4gQ2FsbGVyIG11c3QgZnJlZSByZXN1bHQuICovCitzdGF0aWMgZ3J1Yl9l cnJfdAorcmVhZF9zYnZlcnNpb25fZnJvbV9wa3MgKGdydWJfdWludDhfdCAqKm91dCkKK3sKKyAg Z3J1Yl9pbnQzMl90IHJjOworICBncnViX3VpbnQzMl90IG91dGxlbiA9IDAsIHBvbGljeSA9IDA7 CisKKyAgKm91dCA9IGdydWJfbWFsbG9jIChwa3NfbWF4X29iamVjdF9zaXplKTsKKyAgaWYgKCpv dXQgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfT1VUX09GX01FTU9S WSwgIm91dCBvZiBtZW1vcnkiKTsKKworICByYyA9IGdydWJfaWVlZTEyNzVfcGtzX3JlYWRfb2Jq ZWN0IChHUlVCX1BLU19DT05TVU1FUl9GVywgR1JVQl9TQl9WRVJTSU9OX0tFWV9OQU1FLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlVCX1NCX1ZFUlNJT05fS0VZX0xF TiwgcGtzX21heF9vYmplY3Rfc2l6ZSwgKm91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJm91dGxlbiwgJnBvbGljeSk7CisgIGlmIChyYyA8IDApCisgICAgeworICAg ICAgZ3J1Yl9mcmVlICgqb3V0KTsKKyAgICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9S RUFEX0VSUk9SLCAiU0IgdmVyc2lvbiByZWFkIGZhaWxlZCAoJWQpXG4iLCByYyk7CisgICAgfQor CisgIGlmIChvdXRsZW4gIT0gMSB8fCAoKipvdXQgPj0gMikpCisgICAgeworICAgICAgZ3J1Yl9m cmVlICgqb3V0KTsKKyAgICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfTlVNQkVS LCAiZm91bmQgdW5leHBlY3RlZCBTQiB2ZXJzaW9uOiAldVxuIiwgKipvdXQpOworICAgIH0KKwor ICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKK30KKworLyoKKyAqIFJlYWRzIHRoZSBzZWN1cmUgYm9v dCB2YXJpYWJsZSBmcm9tIFBLUywgdW5wYWNrcyBpdCwgcmVhZCB0aGUgRVNEIGZyb20gRVNMLAor ICogYW5kIHN0b3JlIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgcGtzX3NkIGJ1ZmZlci4KKyAqLwor c3RhdGljIGdydWJfZXJyX3QKK3JlYWRfc2J2YXJfZnJvbV9wa3MgKGNvbnN0IGdydWJfdWludDMy X3Qgc2J2YXJmbGFncywgY29uc3QgZ3J1Yl91aW50MzJfdCBzYnZhcnR5cGUsCisgICAgICAgICAg ICAgICAgICAgICBncnViX3Brc19zZF90ICoqcGtzX3NkLCBncnViX3VpbnQzMl90ICpwa3Nfc2Rf ZW50cmllcykKK3sKKyAgZ3J1Yl9pbnQzMl90IHJjOworICBncnViX2Vycl90IGVyciA9IEdSVUJf RVJSX05PTkU7CisgIGdydWJfdWludDhfdCAqZXNsX2RhdGEgPSBOVUxMOworICBncnViX3NpemVf dCBlc2xfZGF0YV9zaXplID0gMDsKKworICBlc2xfZGF0YSA9IGdydWJfbWFsbG9jIChwa3NfbWF4 X29iamVjdF9zaXplKTsKKyAgaWYgKGVzbF9kYXRhID09IE5VTEwpCisgICAgcmV0dXJuIGdydWJf ZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJvdXQgb2YgbWVtb3J5Iik7CisKKyAgcmMg PSBncnViX2llZWUxMjc1X3Brc19yZWFkX3NidmFyIChzYnZhcmZsYWdzLCBzYnZhcnR5cGUsIHBr c19tYXhfb2JqZWN0X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZXNsX2RhdGEsICZlc2xfZGF0YV9zaXplKTsKKyAgaWYgKHJjID09IElFRUUxMjc1X0NFTExfTk9U X0ZPVU5EKQorICAgIHsKKyAgICAgIGVyciA9ICBncnViX2Vycm9yIChHUlVCX0VSUl9GSUxFX05P VF9GT1VORCwgInNlY3VyZSBib290IHZhcmlhYmxlICVzIG5vdCBmb3VuZCAoJWQpIiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAoc2J2YXJ0eXBlID09IEdSVUJfUEtTX1NCVkFSX0RCKSA/ICJk YiIgOiAiZGJ4IiwgcmMpOworICAgICAgZ290byBmYWlsOworICAgIH0KKyAgZWxzZSBpZiAocmMg PCAwKQorICAgIHsKKyAgICAgIGVyciA9IGdydWJfZXJyb3IgKEdSVUJfRVJSX1JFQURfRVJST1Is ICJzZWN1cmUgYm9vdCB2YXJpYWJsZSAlcyByZWFkaW5nICglZCkiLAorICAgICAgICAgICAgICAg ICAgICAgICAgKHNidmFydHlwZSA9PSBHUlVCX1BLU19TQlZBUl9EQikgPyAiZGIiIDogImRieCIs IHJjKTsKKyAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgaWYgKGVzbF9kYXRhX3NpemUgPiAw KQorICAgIGVyciA9IHBrc19zZF9mcm9tX2VzbCAoZXNsX2RhdGEsIGVzbF9kYXRhX3NpemUsIHBr c19zZCwgcGtzX3NkX2VudHJpZXMpOworICBlbHNlCisgICAgZXJyID0gR1JVQl9FUlJfQkFEX05V TUJFUjsKKworIGZhaWw6CisgIGdydWJfZnJlZSAoZXNsX2RhdGEpOworCisgIHJldHVybiBlcnI7 Cit9CisKKy8qCisgKiBUZXN0IHRoZSBhdmFpbGFiaWxpdHkgb2YgUEtTIHN1cHBvcnQuIElmIFBL UyBzdXBwb3J0IGlzIGF2YWlhbGJsZSBhbmQgb2JqZWN0cworICogcHJlc2VudCwgaXQgcmVhZHMg dGhlIHNlY3VyZSBib290IHZlcnNpb24gKFNCX1ZFUlNJT04pIGZyb20gUEtTLgorICoKKyAqIFNC X1ZFUlNJT046IEtleSBNYW5hZ2VtZW50IE1vZGUKKyAqIDEgLSBFbmFibGUgZHluYW1pYyBrZXkg bWFuYWdlbWVudCBtb2RlLiBSZWFkIHRoZSBkYiBhbmQgZGJ4IHZhcmlhYmxlcyBmcm9tIFBLUywK KyAqICAgICBhbmQgdXNlIHRoZW0gZm9yIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24uCisgKiAwIC0g RW5hYmxlIHN0YXRpYyBrZXkgbWFuYWdlbWVudCBtb2RlLiBSZWFkIGtleXMgZnJvbSB0aGUgR1JV QiBFTEYgTm90ZSBhbmQgdXNlCisgKiAgICAgaXQgZm9yIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24u CisgKi8KK3N0YXRpYyBib29sCitpc19wa3NfcHJlc2VudCAodm9pZCkKK3sKKyAgZ3J1Yl9lcnJf dCBlcnI7CisgIGdydWJfaW50MzJfdCByYzsKKyAgZ3J1Yl91aW50OF90ICpkYXRhID0gTlVMTDsK KyAgYm9vbCByZXQgPSBmYWxzZTsKKworICByYyA9IGdydWJfaWVlZTEyNzVfdGVzdCAoR1JVQl9Q S1NfTUFYX09CSl9JTlRFUkZBQ0UpOworICBpZiAocmMgPCAwKQorICAgIHsKKyAgICAgIGdydWJf ZXJyb3IgKEdSVUJfRVJSX0JBRF9GSVJNV0FSRSwgImZpcm13YXJlIGRvZXNuJ3QgaGF2ZSBQS1Mg c3VwcG9ydFxuIik7CisgICAgICByZXR1cm4gcmV0OworICAgIH0KKyAgZWxzZQorICAgIHsKKyAg ICAgIHJjID0gZ3J1Yl9pZWVlMTI3NV9wa3NfbWF4X29iamVjdF9zaXplICgmcGtzX21heF9vYmpl Y3Rfc2l6ZSk7CisgICAgICBpZiAocmMgPCAwKQorICAgICAgICB7CisgICAgICAgICAgZ3J1Yl9l cnJvciAoR1JVQl9FUlJfQkFEX05VTUJFUiwgIlBLUyBzdXBwb3J0IGlzIHRoZXJlIGJ1dCBpdCBo YXMgemVybyBvYmplY3RzXG4iKTsKKyAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9Cisg ICAgfQorCisgIGVyciA9IHJlYWRfc2J2ZXJzaW9uX2Zyb21fcGtzICgmZGF0YSk7CisgIGlmIChl cnIgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICByZXR1cm4gcmV0OworCisgIC8qCisgICAqIElmICpk YXRhID09IDEsIHVzZSBkeW5hbWljIGtleSBtYW5hZ2VtZW50IGFuZCByZWFkIHRoZSBrZXlzIGZy b20gdGhlIFBLUy4KKyAgICogRWxzZSwgdXNlIHN0YXRpYyBrZXkgbWFuYWdlbWVudCBhbmQgcmVh ZCB0aGUga2V5cyBmcm9tIHRoZSBHUlVCIEVMRiBOb3RlLgorICAgKi8KKyAgcmV0ID0gKCgqZGF0 YSA9PSAxKSA/IHRydWUgOiBmYWxzZSk7CisKKyAgZ3J1Yl9mcmVlIChkYXRhKTsKKworICByZXR1 cm4gcmV0OworfQorCisvKiBGcmVlIGFsbG9jYXRlZCBtZW1vcnkuICovCit2b2lkCitncnViX3Br c19mcmVlX2RhdGEgKHZvaWQpCit7CisgIGdydWJfc2l6ZV90IGk7CisKKyAgZm9yIChpID0gMDsg aSA8IHBrc19rZXlzdG9yZS5kYl9lbnRyaWVzOyBpKyspCisgICAgZ3J1Yl9mcmVlIChwa3Nfa2V5 c3RvcmUuZGJbaV0uZGF0YSk7CisKKyAgZm9yIChpID0gMDsgaSA8IHBrc19rZXlzdG9yZS5kYnhf ZW50cmllczsgaSsrKQorICAgIGdydWJfZnJlZSAocGtzX2tleXN0b3JlLmRieFtpXS5kYXRhKTsK KworICBncnViX2ZyZWUgKHBrc19rZXlzdG9yZS5kYik7CisgIGdydWJfZnJlZSAocGtzX2tleXN0 b3JlLmRieCk7CisgIGdydWJfbWVtc2V0ICgmcGtzX2tleXN0b3JlLCAwLCBzaXplb2YgKGdydWJf cGtzX3QpKTsKK30KKworZ3J1Yl9wa3NfdCAqCitncnViX3Brc19nZXRfa2V5c3RvcmUgKHZvaWQp Cit7CisgIHJldHVybiAocGtzX3VzZV9rZXlzdG9yZSA9PSB0cnVlKSA/ICZwa3Nfa2V5c3RvcmUg OiBOVUxMOworfQorCisvKiBJbml0aWFsaXphdGlvbiBvZiB0aGUgUGxhdGZvcm0gS2V5U3RvcmUu ICovCit2b2lkCitncnViX3Brc19rZXlzdG9yZV9pbml0ICh2b2lkKQoreworICBncnViX2Vycl90 IHJjX2RiLCByY19kYng7CisKKyAgZ3J1Yl9kcHJpbnRmICgiaWVlZTEyNzUiLCAidHJ5aW5nIHRv IGxvYWQgUGxhdGZvcm0gS2V5U3RvcmVcbiIpOworCisgIGlmIChpc19wa3NfcHJlc2VudCAoKSA9 PSBmYWxzZSkKKyAgICB7CisgICAgICBncnViX2RwcmludGYgKCJpZWVlMTI3NSIsICJQbGF0Zm9y bSBQS1MgaXMgbm90IGF2YWlsYWJsZVxuIik7CisgICAgICByZXR1cm47CisgICAgfQorCisgIC8q CisgICAqIFdoZW4gcmVhZCBkYiBmcm9tIFBLUywgdGhlcmUgYXJlIHRocmVlIHNjZW5hcmlvcwor ICAgKiAxLiBkYiBmdWxseSBsb2FkZWQgZnJvbSBQS1MKKyAgICogMi4gZGIgcGFydGlhbGx5IGxv YWRlZCBmcm9tIFBLUworICAgKiAzLiBubyBrZXlzIGFyZSBsb2FkZWQgZnJvbSBkYiAoaWYgZGIg ZG9lcyBub3QgZXhpc3QgaW4gUEtTKSwgZGVmYXVsdCB0bworICAgKiAgICBidWlsdC1pbiBrZXlz IChzdGF0aWMga2V5cykKKyAgICogZWFjaCBvZiB0aGVzZSBzY2VuYXJpb3MsIHRoZSBkYiBrZXlz IGFyZSBjaGVja2VkIGFnYWluc3QgZGJ4LgorICAgKi8KKyAgcmNfZGIgPSByZWFkX3NidmFyX2Zy b21fcGtzICgwLCBHUlVCX1BLU19TQlZBUl9EQiwgJnBrc19rZXlzdG9yZS5kYiwgJnBrc19rZXlz dG9yZS5kYl9lbnRyaWVzKTsKKyAgaWYgKHJjX2RiID09IEdSVUJfRVJSX0ZJTEVfTk9UX0ZPVU5E KQorICAgIHBrc19rZXlzdG9yZS5kYl9leGlzdHMgPSBmYWxzZTsKKworICAvKgorICAgKiBSZWFk IGRieCBmcm9tIFBLUy4gSWYgZGJ4IGlzIG5vdCBjb21wbGV0ZWx5IGxvYWRlZCBmcm9tIFBLUywg dGhlbiB0aGlzCisgICAqIGNvdWxkIGxlYWQgdG8gdGhlIGxvYWRpbmcgb2YgdnVsbmVyYWJsZSBH UlVCIG1vZHVsZXMgYW5kIGtlcm5lbCBiaW5hcmllcy4KKyAgICogU28sIHRoaXMgc2hvdWxkIGJl IHByZXZlbnRlZCBieSBmcmVlaW5nIHVwIGxvYWRlZCBkYnggYW5kIGRiLgorICAgKi8KKyAgcmNf ZGJ4ID0gcmVhZF9zYnZhcl9mcm9tX3BrcyAoMCwgR1JVQl9QS1NfU0JWQVJfREJYLCAmcGtzX2tl eXN0b3JlLmRieCwgJnBrc19rZXlzdG9yZS5kYnhfZW50cmllcyk7CisgIGlmIChyY19kYnggPT0g R1JVQl9FUlJfRklMRV9OT1RfRk9VTkQgfHwgcmNfZGJ4ID09IEdSVUJfRVJSX0JBRF9OVU1CRVIp CisgICAgcmNfZGJ4ID0gR1JVQl9FUlJfTk9ORTsKKworICBpZiAocmNfZGJ4ICE9IEdSVUJfRVJS X05PTkUpCisgICAgZ3J1Yl9wa3NfZnJlZV9kYXRhICgpOworCisgIC8qCisgICAqIEF0IHRoaXMg cG9pbnQsIGl0J3MgZXZpZGVudCB0aGF0IFBLUyBpbmZyYXN0cnVjdHVyZSBleGlzdHMsIHNvIHRo ZSBQS1MKKyAgICoga2V5c3RvcmUgbXVzdCBiZSB1c2VkIGZvciB2YWxpZGF0aW5nIGFwcGVuZGVk IHNpZ25hdHVyZXMuCisgICAqLworICBwa3NfdXNlX2tleXN0b3JlID0gdHJ1ZTsKK30KZGlmZiAt LWdpdCBhL2luY2x1ZGUvZ3J1Yi9pZWVlMTI3NS9pZWVlMTI3NS5oIGIvaW5jbHVkZS9ncnViL2ll ZWUxMjc1L2llZWUxMjc1LmgKaW5kZXggYzQ0NWQwNDk5Li4xNTdlZDU3YmUgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvZ3J1Yi9pZWVlMTI3NS9pZWVlMTI3NS5oCisrKyBiL2luY2x1ZGUvZ3J1Yi9pZWVl MTI3NS9pZWVlMTI3NS5oCkBAIC0yNCw2ICsyNCw5IEBACiAjaW5jbHVkZSA8Z3J1Yi90eXBlcy5o PgogI2luY2x1ZGUgPGdydWIvbWFjaGluZS9pZWVlMTI3NS5oPgogCisjZGVmaW5lIElFRUUxMjc1 X0NFTExfSU5WQUxJRCAgICAgICAgICAoKGdydWJfaWVlZTEyNzVfY2VsbF90KSAtMSkKKyNkZWZp bmUgSUVFRTEyNzVfQ0VMTF9OT1RfRk9VTkQgICAgICAgICgoZ3J1Yl9pbnQzMl90KSAtNykKKwog I2RlZmluZSBHUlVCX0lFRUUxMjc1X0NFTExfRkFMU0UgICAgICAgKChncnViX2llZWUxMjc1X2Nl bGxfdCkgMCkKICNkZWZpbmUgR1JVQl9JRUVFMTI3NV9DRUxMX1RSVUUgICAgICAgICgoZ3J1Yl9p ZWVlMTI3NV9jZWxsX3QpIC0xKQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvcG93ZXJwYy9p ZWVlMTI3NS9pZWVlMTI3NS5oIGIvaW5jbHVkZS9ncnViL3Bvd2VycGMvaWVlZTEyNzUvaWVlZTEy NzUuaAppbmRleCA0ZWIyMDcwMTguLjRiOTk2NmRkNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ncnVi L3Bvd2VycGMvaWVlZTEyNzUvaWVlZTEyNzUuaAorKysgYi9pbmNsdWRlL2dydWIvcG93ZXJwYy9p ZWVlMTI3NS9pZWVlMTI3NS5oCkBAIC0yOCw0ICsyOCw0MCBAQCB0eXBlZGVmIGdydWJfdWludDMy X3QgZ3J1Yl9pZWVlMTI3NV9jZWxsX3Q7CiAjZGVmaW5lIFBSSXhHUlVCX0lFRUUxMjc1X0NFTExf VAlQUkl4R1JVQl9VSU5UMzJfVAogI2RlZmluZSBQUkl1R1JVQl9JRUVFMTI3NV9DRUxMX1QJUFJJ dUdSVUJfVUlOVDMyX1QKIAorI2lmZGVmIF9fcG93ZXJwY19fCisvKiBUaGUgbWF4aW11bSBvYmpl Y3Qgc2l6ZSBpbnRlcmZhY2UgbmFtZSBmb3IgYSBQS1Mgb2JqZWN0LiAqLworI2RlZmluZSBHUlVC X1BLU19NQVhfT0JKX0lOVEVSRkFDRSAgICAicGtzLW1heC1vYmplY3Qtc2l6ZSIKKworLyogUEtT IHJlYWQgb2JqZWN0IGFuZCByZWFkIHNidmFyIGludGVyZmFjZSBuYW1lLiAqLworI2RlZmluZSBH UlVCX1BLU19SRUFEX09CSl9JTlRFUkZBQ0UgICAicGtzLXJlYWQtb2JqZWN0IgorI2RlZmluZSBH UlVCX1BLU19SRUFEX1NCVkFSX0lOVEVSRkFDRSAicGtzLXJlYWQtc2J2YXIiCisKKy8qIFBLUyBy ZWFkIG9iamVjdCBsYWJlbCBmb3Igc2VjdXJlIGJvb3QgdmVyc2lvbi4gKi8KKyNkZWZpbmUgR1JV Ql9TQl9WRVJTSU9OX0tFWV9OQU1FICAgICAgIlNCX1ZFUlNJT04iCisjZGVmaW5lIEdSVUJfU0Jf VkVSU0lPTl9LRVlfTEVOICAgICAgIChzaXplb2YgKEdSVUJfU0JfVkVSU0lPTl9LRVlfTkFNRSkg LSAxKQorCisvKiBQS1MgY29uc3VtZXIgdHlwZSBmb3IgZmlybXdhcmUuICovCisjZGVmaW5lIEdS VUJfUEtTX0NPTlNVTUVSX0ZXICAgICAgICAgICgoZ3J1Yl91aW50MzJfdCkgMSkKKworLyogUEtT IHJlYWQgc2VjdXJlIGJvb3QgdmFyaWFibGUgcmVxdWVzdCB0eXBlIGZvciBkYiBhbmQgZGJ4LiAq LworI2RlZmluZSBHUlVCX1BLU19TQlZBUl9EQiAgICAgICAgICAgICAoKGdydWJfdWludDMyX3Qp IDEpCisjZGVmaW5lIEdSVUJfUEtTX1NCVkFSX0RCWCAgICAgICAgICAgICgoZ3J1Yl91aW50MzJf dCkgMikKKworZXh0ZXJuIGdydWJfaW50MzJfdAorZ3J1Yl9pZWVlMTI3NV90ZXN0IChjb25zdCBj aGFyICppbnRlcmZhY2VfbmFtZSk7CisKK2V4dGVybiBncnViX2ludDMyX3QKK2dydWJfaWVlZTEy NzVfcGtzX21heF9vYmplY3Rfc2l6ZSAoZ3J1Yl91aW50MzJfdCAqcmVzdWx0KTsKKworZXh0ZXJu IGdydWJfaW50MzJfdAorZ3J1Yl9pZWVlMTI3NV9wa3NfcmVhZF9vYmplY3QgKGNvbnN0IGdydWJf dWludDMyX3QgY29uc3VtZXIsIGNvbnN0IGNoYXIgKmxhYmVsLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGdydWJfdWludDMyX3QgbGFiZWxfbGVuLCBjb25zdCBncnViX3Vp bnQzMl90IGJ1ZmZlcl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3J1Yl91 aW50OF90ICpidWZmZXIsIGdydWJfdWludDMyX3QgKmRhdGFfbGVuLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdydWJfdWludDMyX3QgKnBvbGljaWVzKTsKKworZXh0ZXJuIGdydWJf aW50MzJfdAorZ3J1Yl9pZWVlMTI3NV9wa3NfcmVhZF9zYnZhciAoY29uc3QgZ3J1Yl91aW50MzJf dCBzYnZhcl9mbGFncywgY29uc3QgZ3J1Yl91aW50MzJfdCBzYnZhcl90eXBlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3J1Yl91aW50MzJfdCBidWZmZXJfbGVuLCBncnVi X3VpbnQ4X3QgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfc2l6 ZV90ICpkYXRhX2xlbik7CisjZW5kaWYgLyogX19wb3dlcnBjX18gKi8KICNlbmRpZiAvKiAhIEdS VUJfSUVFRTEyNzVfTUFDSElORV9IRUFERVIgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9w b3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tleXN0b3JlLmggYi9pbmNsdWRlL2dydWIvcG93ZXJw Yy9pZWVlMTI3NS9wbGF0Zm9ybV9rZXlzdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMC4uOTMxYWRhMjI0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9ncnViL3Bv d2VycGMvaWVlZTEyNzUvcGxhdGZvcm1fa2V5c3RvcmUuaApAQCAtMCwwICsxLDEyMyBAQAorLyoK KyAqIENvcHlyaWdodCAoYykgMjAwNiAtIDIwMTUsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzIHJlc2VydmVkLiBUaGlzCisgKiBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVy aWFscyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlCisgKiB1bmRlciB0aGUgdGVybXMg YW5kIGNvbmRpdGlvbnMgb2YgdGhlIDItQ2xhdXNlIEJTRCBMaWNlbnNlIHdoaWNoCisgKiBhY2Nv bXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u cyBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0 IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqIHRoaXMgbGlzdCBvZiBjb25k aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmli dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lciBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMi CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NM QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJV VE9SUyBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G IFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICogaHR0cHM6Ly9naXRo dWIuY29tL3RpYW5vY29yZS9lZGsyLXN0YWdpbmcgKGVkazItc3RhZ2luZyByZXBvIG9mIHRpYW5v Y29yZSksCisgKiB0aGUgSW1hZ2VBdXRoZW50aWNhdGlvbi5oIGZpbGUgdW5kZXIgaXQsIGFuZCBo ZXJlJ3MgdGhlIGNvcHlyaWdodCBhbmQgbGljZW5zZS4KKyAqCisgKiBNZGVQa2cvSW5jbHVkZS9H dWlkL0ltYWdlQXV0aGVudGljYXRpb24uaAorICoKKyAqIENvcHlyaWdodCAyMDIyLCAyMDIzLCAy MDI0LCAyMDI1IElCTSBDb3JwLgorICovCisKKyNpZm5kZWYgUExBVEZPUk1fS0VZU1RPUkVfSEVB REVSCisjZGVmaW5lIFBMQVRGT1JNX0tFWVNUT1JFX0hFQURFUiAgICAxCisKKyNpbmNsdWRlIDxn cnViL3N5bWJvbC5oPgorI2luY2x1ZGUgPGdydWIvbW0uaD4KKyNpbmNsdWRlIDxncnViL3R5cGVz Lmg+CisKKy8qCisgKiBJdCBpcyBkZXJpdmVkIGZyb20gRUZJX1NJR05BVFVSRV9EQVRBCisgKiBo dHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazItc3RhZ2luZy9ibG9iL21hc3Rlci9NZGVQ a2cvSW5jbHVkZS9HdWlkL0ltYWdlQXV0aGVudGljYXRpb24uaAorICoKKyAqIFRoZSBzdHJ1Y3R1 cmUgb2YgYW4gRUZJIFNpZ25hdHVyZSBEYXRhYmFzZSAoRVNEKS4gKi8KK3N0cnVjdCBncnViX2Vz ZAoreworICAvKgorICAgKiBBbiBpZGVudGlmaWVyIHdoaWNoIGlkZW50aWZpZXMgdGhlIGFnZW50 IHdoaWNoIGFkZGVkIHRoZSBzaWduYXR1cmUgdG8KKyAgICogdGhlIGxpc3QuCisgICAqLworICBn cnViX3BhY2tlZF9ndWlkX3Qgc2lnbmF0dXJlX293bmVyOworICAvKiBUaGUgZm9ybWF0IG9mIHRo ZSBzaWduYXR1cmUgaXMgZGVmaW5lZCBieSB0aGUgU2lnbmF0dXJlVHlwZS4gKi8KKyAgZ3J1Yl91 aW50OF90IHNpZ25hdHVyZV9kYXRhW107Cit9IEdSVUJfUEFDS0VEOwordHlwZWRlZiBzdHJ1Y3Qg Z3J1Yl9lc2QgZ3J1Yl9lc2RfdDsKKworLyoKKyAqIEl0IGlzIGRlcml2ZWQgZnJvbSBFRklfU0lH TkFUVVJFX0xJU1QKKyAqIGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi1zdGFnaW5n L2Jsb2IvbWFzdGVyL01kZVBrZy9JbmNsdWRlL0d1aWQvSW1hZ2VBdXRoZW50aWNhdGlvbi5oCisg KgorICogVGhlIHN0cnVjdHVyZSBvZiBhbiBFRkkgU2lnbmF0dXJlIExpc3QgKEVTTCkuICovCitz dHJ1Y3QgZ3J1Yl9lc2wKK3sKKyAgLyogVHlwZSBvZiB0aGUgc2lnbmF0dXJlLiBHVUlEIHNpZ25h dHVyZSB0eXBlcyBhcmUgZGVmaW5lZCBpbiBiZWxvdy4gKi8KKyAgZ3J1Yl9wYWNrZWRfZ3VpZF90 IHNpZ25hdHVyZV90eXBlOworICAvKiBUb3RhbCBzaXplIG9mIHRoZSBzaWduYXR1cmUgbGlzdCwg aW5jbHVkaW5nIHRoaXMgaGVhZGVyLiAqLworICBncnViX3VpbnQzMl90IHNpZ25hdHVyZV9saXN0 X3NpemU7CisgIC8qIFNpemUgb2YgdGhlIHNpZ25hdHVyZSBoZWFkZXIgd2hpY2ggcHJlY2VkZXMg dGhlIGFycmF5IG9mIHNpZ25hdHVyZXMuICovCisgIGdydWJfdWludDMyX3Qgc2lnbmF0dXJlX2hl YWRlcl9zaXplOworICAvKiBTaXplIG9mIGVhY2ggc2lnbmF0dXJlLiovCisgIGdydWJfdWludDMy X3Qgc2lnbmF0dXJlX3NpemU7Cit9IEdSVUJfUEFDS0VEOwordHlwZWRlZiBzdHJ1Y3QgZ3J1Yl9l c2wgZ3J1Yl9lc2xfdDsKKworLyogVGhlIHN0cnVjdHVyZSBvZiBhIFBLUyBTaWduYXR1cmUgRGF0 YWJhc2UgKFNEKS4gKi8KK3N0cnVjdCBncnViX3Brc19zZAoreworICBncnViX3BhY2tlZF9ndWlk X3QgZ3VpZDsgLyogU2lnbmF0dXJlIHR5cGUuICovCisgIGdydWJfdWludDhfdCAqZGF0YTsgICAg ICAvKiBTaWduYXR1cmUgZGF0YS4gKi8KKyAgZ3J1Yl9zaXplX3QgZGF0YV9zaXplOyAgIC8qIFNp emUgb2Ygc2lnbmF0dXJlIGRhdGEuICovCit9IEdSVUJfUEFDS0VEOwordHlwZWRlZiBzdHJ1Y3Qg Z3J1Yl9wa3Nfc2QgZ3J1Yl9wa3Nfc2RfdDsKKworLyogVGhlIHN0cnVjdHVyZSBvZiBhIFBsYXRm b3JtIEtleVN0b3JlIChQS1MpLiAqLworc3RydWN0IGdydWJfcGtzCit7CisgIGdydWJfcGtzX3Nk X3QgKmRiOyAgICAgICAgLyogU2lnbmF0dXJlIGRhdGFiYXNlLiAqLworICBncnViX3Brc19zZF90 ICpkYng7ICAgICAgIC8qIEZvcmJpZGRlbiBzaWduYXR1cmUgZGF0YWJhc2UuICovCisgIGdydWJf dWludDMyX3QgZGJfZW50cmllczsgLyogU2l6ZSBvZiBzaWduYXR1cmUgZGF0YWJhc2UuICovCisg IGdydWJfdWludDMyX3QgZGJ4X2VudHJpZXM7LyogU2l6ZSBvZiBmb3JiaWRkZW4gc2lnbmF0dXJl IGRhdGFiYXNlLiAqLworICBib29sIGRiX2V4aXN0czsgICAgICAgICAgIC8qIEZsYWcgdG8gaW5k aWNhdGUgaWYgdGhlIGRiIGV4aXN0cyBvciBub3QgaW4gUEtTLiAqLworfTsKK3R5cGVkZWYgc3Ry dWN0IGdydWJfcGtzIGdydWJfcGtzX3Q7CisKKyNpZiBkZWZpbmVkKF9fcG93ZXJwY19fKQorLyog SW5pdGlhbGl6YXRpb24gb2YgdGhlIFBsYXRmb3JtIEtleXN0b3JlLiAqLworZXh0ZXJuIHZvaWQK K2dydWJfcGtzX2tleXN0b3JlX2luaXQgKHZvaWQpOworCisvKiBQbGF0Zm9ybSBLZXlTdG9yZSBk YiBhbmQgZGJ4LiAqLworZXh0ZXJuIGdydWJfcGtzX3QgKgorRVhQT1JUX0ZVTkMgKGdydWJfcGtz X2dldF9rZXlzdG9yZSkgKHZvaWQpOworCisvKiBGcmVlIGFsbG9jYXRlZCBtZW1vcnkuICovCitl eHRlcm4gdm9pZAorRVhQT1JUX0ZVTkMgKGdydWJfcGtzX2ZyZWVfZGF0YSkgKHZvaWQpOworI2Vs c2UKK3N0YXRpYyBpbmxpbmUgZ3J1Yl9wa3NfdCAqCitncnViX3Brc19nZXRfa2V5c3RvcmUgKHZv aWQpCit7CisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK2dydWJfcGtz X2ZyZWVfZGF0YSAodm9pZCkKK3sKK30KKyNlbmRpZiAvKiBfX3Bvd2VycGNfXyAqLworI2VuZGlm Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KR3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBn bnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK