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 1B254CCA468 for ; Tue, 30 Sep 2025 11:48:40 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Yom-0000zX-F0; Tue, 30 Sep 2025 07:46:52 -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 1v3YoZ-0000uu-EE for grub-devel@gnu.org; Tue, 30 Sep 2025 07:46:41 -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 1v3YoN-0006FS-SP for grub-devel@gnu.org; Tue, 30 Sep 2025 07:46:38 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58U83qIT013378; Tue, 30 Sep 2025 11:46:23 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=zlsr/eYE+bFU0PCOO YUz6b7xWlPtUfjAv+OlhfOpUFs=; b=e/JRD/QoKOWrfTFsCjl3aUpsPaISamsmH lhMcLKU+ahH9U1sb7HOt5aaXG91wJ+FCRWSfHz7eY9zFNhbi/SbzUXxiUUUC9J1o w7pHDOYEwctvJW1pYWlo4ucW+MWZQa4tZ725p1wqCTmL2IsB+sfaqW5WbwD3D4uZ 4F5lOJEQ6x6cgVr9BglAHm+DmCwitb20r6u3aghr1mO6172CJmNW0aObqrtUH48P hs2zOvEevg8dPLJyIDwOuRE9cuhhafG5dvVEuwRRPPHWfQaUqBOihdSnRmDjcOc4 JpOiuQ/r2FPFG3q2Ujk2Cmj17AOK1PWopCKcadVdN4UdsxRX4u/AA== 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 49e7e78jn1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 30 Sep 2025 11:46:23 +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 58U9d5g3007292; Tue, 30 Sep 2025 11:46:22 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 49eurju36a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 30 Sep 2025 11:46:21 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 58UBkH0L20382088 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 30 Sep 2025 11:46:18 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CCA6520040; Tue, 30 Sep 2025 11:46:17 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 82BC220043; Tue, 30 Sep 2025 11:46:14 +0000 (GMT) Received: from localhost.localdomain (unknown [9.39.16.143]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 30 Sep 2025 11:46:14 +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 v13 11/20] powerpc_ieee1275: Read the db and dbx secure boot variables Date: Tue, 30 Sep 2025 17:10:05 +0530 Message-ID: <20250930114018.78215-12-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250930114018.78215-1-sudhakar@linux.ibm.com> References: <20250930114018.78215-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: ddDXwL-eKOmrJ0l0YclFbb86nlVvsUE4 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTI3MDAyMCBTYWx0ZWRfX6aQ/Q2s2PYdT Tqqtl0rwUDKyGFZrYKiww//V4sUXzwlzT+zViU2i+tteb0AiL9ndTbmMPNWrrw8KyKveURL5M+F bDWvgKbOfaq+wUnj3PZoBvkp76MXDZtopbkZ0/Gd8x3zvfO50Tn6FyFBfXejlel6lZ3GXCrpNZ7 J7etbseR4U32N/Kqg4MQGpm+VQctUU3E5w37rR0hh6han2vmtmEoAMRqOVN0MCUQqA6/rDnl5Ed q0sClrVh6FEzFlkKDrbyEA8m+yJsfKdvnrH5+cEAOU3uAkvPKVmnAJQMWJg026eNtKspEjYAgGR DeXMBxJJCE3y9MvGykqO1+I1hNG+BRChswPeN5XVRWVHq+bHOjAWu4k1hITKICyVYLqZNkk/VDp cYAdUfYJ+eWxE5OSCHVpibUpion5hQ== X-Proofpoint-GUID: ddDXwL-eKOmrJ0l0YclFbb86nlVvsUE4 X-Authority-Analysis: v=2.4 cv=Jvj8bc4C c=1 sm=1 tr=0 ts=68dbc30f cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=yJojWOMRYYMA:10 a=mDV3o1hIAAAA:8 a=NEAV23lmAAAA:8 a=VnNF1IyMAAAA: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-09-30_02,2025-09-29_04,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 impostorscore=0 suspectscore=0 phishscore=0 bulkscore=0 clxscore=1015 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2509150000 definitions=main-2509270020 Received-SPF: pass client-ip=148.163.156.1; envelope-from=sudhakar@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_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+Ci0tLQogZ3J1Yi1jb3JlL01ha2VmaWxlLmFtICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyICsKIGdydWItY29yZS9NYWtlZmlsZS5jb3JlLmRlZiAg ICAgICAgICAgICAgICAgICB8ICAgMiArCiBncnViLWNvcmUva2Vybi9pZWVlMTI3NS9pZWVlMTI3 NS5jICAgICAgICAgICAgfCAgIDEgLQogZ3J1Yi1jb3JlL2tlcm4vaWVlZTEyNzUvaW5pdC5jICAg ICAgICAgICAgICAgIHwgICA0ICsKIGdydWItY29yZS9rZXJuL3Bvd2VycGMvaWVlZTEyNzUvaWVl ZTEyNzUuYyAgICB8IDEzNyArKysrKysrCiAuLi4va2Vybi9wb3dlcnBjL2llZWUxMjc1L3BsYXRm b3JtX2tleXN0b3JlLmMgfCAzNDQgKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2dydWIvaWVl ZTEyNzUvaWVlZTEyNzUuaCAgICAgICAgICAgICAgfCAgIDMgKwogaW5jbHVkZS9ncnViL3Bvd2Vy cGMvaWVlZTEyNzUvaWVlZTEyNzUuaCAgICAgIHwgIDE4ICsKIC4uLi9ncnViL3Bvd2VycGMvaWVl ZTEyNzUvcGxhdGZvcm1fa2V5c3RvcmUuaCB8IDEyMiArKysrKysrCiA5IGZpbGVzIGNoYW5nZWQs IDYzMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ3J1 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 ZWVlMTI3NS9pbml0LmMKaW5kZXggYTgxYTM2ZjU3Li5jNDY2MjRmMzkgMTAwNjQ0Ci0tLSBhL2dy 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 CmluZGV4IDAwMDAwMDAwMC4uNzE1NTg3Y2RlCi0tLSAvZGV2L251bGwKKysrIGIvZ3J1Yi1jb3Jl L2tlcm4vcG93ZXJwYy9pZWVlMTI3NS9wbGF0Zm9ybV9rZXlzdG9yZS5jCkBAIC0wLDAgKzEsMzQ0 IEBACisvKgorICogIEdSVUIgIC0tICBHUmFuZCBVbmlmaWVkIEJvb3Rsb2FkZXIKKyAqICBDb3B5 cmlnaHQgKEMpIDIwMjQgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICogIENvcHly aWdodCAoQykgMjAyMiwgMjAyMywgMjAyNCwgMjAyNSBJQk0gQ29ycG9yYXRpb24KKyAqCisgKiAg R1JVQiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIEdSVUIgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorICogIGFsb25nIHdpdGggR1JVQi4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8Z3J1Yi9tbS5oPgorI2luY2x1ZGUgPGdydWIv dHlwZXMuaD4KKyNpbmNsdWRlIDxncnViL21pc2MuaD4KKyNpbmNsdWRlIDxncnViL2xvY2tkb3du Lmg+CisjaW5jbHVkZSA8Z3J1Yi9pZWVlMTI3NS9pZWVlMTI3NS5oPgorI2luY2x1ZGUgPGdydWIv cG93ZXJwYy9pZWVlMTI3NS9pZWVlMTI3NS5oPgorI2luY2x1ZGUgPGdydWIvcG93ZXJwYy9pZWVl MTI3NS9wbGF0Zm9ybV9rZXlzdG9yZS5oPgorCisvKiBQS1MgY29uc3VtZXIgdHlwZSBmb3IgZmly bXdhcmUuICovCisjZGVmaW5lIFBLU19DT05TVU1FUl9GVyAgICAgICgoZ3J1Yl91aW50MzJfdCkg MSkKKworLyogVGhlIG1heGltdW0gb2JqZWN0IHNpemUgaW50ZXJmYWNlIG5hbWUgZm9yIGEgUEtT IG9iamVjdC4gKi8KKyNkZWZpbmUgUEtTX01BWF9PQkpfU0laRSAgICAgInBrcy1tYXgtb2JqZWN0 LXNpemUiCisKKy8qIFBLUyByZWFkIG9iamVjdCBsYWJlbCBmb3Igc2VjdXJlIGJvb3QgdmVyc2lv bi4gKi8KKyNkZWZpbmUgU0JfVkVSU0lPTl9LRVlfTkFNRSAgIlNCX1ZFUlNJT04iCisjZGVmaW5l IFNCX1ZFUlNJT05fS0VZX0xFTiAgIChzaXplb2YgKFNCX1ZFUlNJT05fS0VZX05BTUUpIC0gMSkK KworLyogUEtTIHJlYWQgc2VjdXJlIGJvb3QgdmFyaWFibGUgcmVxdWVzdCB0eXBlIGZvciBkYiBh bmQgZGJ4LiAqLworI2RlZmluZSBQS1NfU0JWQVJfREIgICAgICAgICAoKGdydWJfdWludDMyX3Qp IDEpCisjZGVmaW5lIFBLU19TQlZBUl9EQlggICAgICAgICgoZ3J1Yl91aW50MzJfdCkgMikKKwor c3RhdGljIGdydWJfdWludDMyX3QgcGtzX21heF9vYmplY3Rfc2l6ZSA9IDA7CisKKy8qIFBsYXRm b3JtIEtleVN0b3JlIGRiIGFuZCBkYnguICovCitzdGF0aWMgZ3J1Yl9wa3NfdCBwa3Nfa2V5c3Rv cmUgPSB7IC5kYiA9IE5VTEwsIC5kYnggPSBOVUxMLCAuZGJfZW50cmllcyA9IDAsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kYnhfZW50cmllcyA9IDB9OworLyoKKyAqIHBr c191c2Vfa2V5c3RvcmU6IEtleSBNYW5hZ2VtZW50IE1vZGVzCisgKiBGYWxzZTogU3RhdGljIGtl eSBtYW5hZ2VtZW50ICh1c2UgYnVpbHQtaW4gS2V5cykuIFRoaXMgaXMgZGVmYXVsdC4KKyAqIFRy dWU6IER5bmFtaWMga2V5IG1hbmFnZW1lbnQgKHVzZSBQbGF0Zm9ybSBLZXlTb3RyZSkuCisgKi8K K3N0YXRpYyBib29sIHBrc191c2Vfa2V5c3RvcmUgPSBmYWxzZTsKKworLyoKKyAqIFJlYWRzIHRo ZSBHbG9iYWxseSBVbmlxdWUgSWRlbnRpZmllciAoR1VJRCksIEVGSSBTaWduYXR1cmUgRGF0YWJh c2UgKEVTRCksCisgKiBhbmQgaXRzIHNpemUgZnJvbSB0aGUgUGxhdGZvcm0gS2V5U3RvcmUgRUZJ IFNpZ25hdHVyZSBMaXN0IChFU0wpLCB0aGVuCisgKiBzdG9yZXMgdGhlbSBpbnRvIHRoZSBQS1Mg U2lnbmF0dXJlIERhdGFiYXNlIChTRCkgKGkuZS4sIHBrc19zZCBidWZmZXIKKyAqIGFuZCBwa3Nf c2QgZW50cmllcykgaW4gdGhlIEdSVUIuCisgKi8KK3N0YXRpYyBncnViX2Vycl90CitfZXNsX3Rv X2VzZCAoY29uc3QgZ3J1Yl91aW50OF90ICplc2xfZGF0YSwgZ3J1Yl9zaXplX3QgZXNsX3NpemUs CisgICAgICAgICAgICAgY29uc3QgZ3J1Yl9zaXplX3Qgc2lnbmF0dXJlX3NpemUsIGNvbnN0IGdy dWJfcGFja2VkX2d1aWRfdCAqZ3VpZCwKKyAgICAgICAgICAgICBncnViX3Brc19zZF90ICoqcGtz X3NkLCBncnViX3VpbnQzMl90ICpwa3Nfc2RfZW50cmllcykKK3sKKyAgZ3J1Yl9lc2RfdCAqZXNk OworICBncnViX3Brc19zZF90ICpzaWduYXR1cmUgPSAqcGtzX3NkOworICBncnViX3VpbnQzMl90 IGVudHJpZXMgPSAqcGtzX3NkX2VudHJpZXM7CisgIGdydWJfc2l6ZV90IGRhdGFfc2l6ZSwgb2Zm c2V0ID0gMDsKKworICAvKiBSZWFkcyB0aGUgRVNEIGZyb20gRVNMLiAqLworICB3aGlsZSAoZXNs X3NpemUgPiAwKQorICAgIHsKKyAgICAgIGVzZCA9IChncnViX2VzZF90ICopIChlc2xfZGF0YSAr IG9mZnNldCk7CisgICAgICBkYXRhX3NpemUgPSBzaWduYXR1cmVfc2l6ZSAtIHNpemVvZiAoZ3J1 Yl9lc2RfdCk7CisKKyAgICAgIHNpZ25hdHVyZSA9IGdydWJfcmVhbGxvYyAoc2lnbmF0dXJlLCAo ZW50cmllcyArIDEpICogc2l6ZW9mIChncnViX3Brc19zZF90KSk7CisgICAgICBpZiAoc2lnbmF0 dXJlID09IE5VTEwpCisgICAgICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0Zf TUVNT1JZLCAib3V0IG9mIG1lbW9yeSIpOworCisgICAgICBzaWduYXR1cmVbZW50cmllc10uZGF0 YSA9IGdydWJfbWFsbG9jIChkYXRhX3NpemUgKiBzaXplb2YgKGdydWJfdWludDhfdCkpOworICAg ICAgaWYgKHNpZ25hdHVyZVtlbnRyaWVzXS5kYXRhID09IE5VTEwpCisgICAgICAgIHsKKyAgICAg ICAgICAvKiBBbGxvY2F0ZWQgbWVtb3J5IHdpbGwgYmUgZnJlZWQgYnkgZ3J1Yl9wa3NfZnJlZV9k YXRhKCkuICovCisgICAgICAgICAgKnBrc19zZCA9IHNpZ25hdHVyZTsKKyAgICAgICAgICAqcGtz X3NkX2VudHJpZXMgPSBlbnRyaWVzICsgMTsKKyAgICAgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAo R1JVQl9FUlJfT1VUX09GX01FTU9SWSwgIm91dCBvZiBtZW1vcnkiKTsKKyAgICAgICAgfQorCisg ICAgICBncnViX21lbWNweSAoc2lnbmF0dXJlW2VudHJpZXNdLmRhdGEsIGVzZC0+c2lnbmF0dXJl X2RhdGEsIGRhdGFfc2l6ZSk7CisgICAgICBzaWduYXR1cmVbZW50cmllc10uZGF0YV9zaXplID0g ZGF0YV9zaXplOworICAgICAgc2lnbmF0dXJlW2VudHJpZXNdLmd1aWQgPSAqZ3VpZDsKKyAgICAg IGVudHJpZXMrKzsKKyAgICAgIGVzbF9zaXplIC09IHNpZ25hdHVyZV9zaXplOworICAgICAgb2Zm c2V0ICs9IHNpZ25hdHVyZV9zaXplOworICAgIH0KKworICAqcGtzX3NkID0gc2lnbmF0dXJlOwor ICAqcGtzX3NkX2VudHJpZXMgPSBlbnRyaWVzOworCisgIHJldHVybiBHUlVCX0VSUl9OT05FOwor fQorCisvKiBFeHRyYWN0IHRoZSBFU0QgYWZ0ZXIgcmVtb3ZpbmcgdGhlIEVTTCBoZWFkZXIgZnJv bSBFU0wuICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorZXNsX3RvX2VzZCAoY29uc3QgZ3J1Yl91aW50 OF90ICplc2xfZGF0YSwgZ3J1Yl9zaXplX3QgKm5leHRfZXNsLAorICAgICAgICAgICAgZ3J1Yl9w a3Nfc2RfdCAqKnBrc19zZCwgZ3J1Yl91aW50MzJfdCAqcGtzX3NkX2VudHJpZXMpCit7CisgIGdy dWJfcGFja2VkX2d1aWRfdCBndWlkOworICBncnViX2VzbF90ICplc2w7CisgIGdydWJfc2l6ZV90 IG9mZnNldCwgZXNsX3NpemUsIHNpZ25hdHVyZV9zaXplLCBzaWduYXR1cmVfaGVhZGVyX3NpemU7 CisKKyAgLyogQ29udmVydCB0aGUgRVNMIGRhdGEgaW50byB0aGUgRVNMLiAqLworICBlc2wgPSAo Z3J1Yl9lc2xfdCAqKSBlc2xfZGF0YTsKKyAgaWYgKCpuZXh0X2VzbCA8IHNpemVvZiAoZ3J1Yl9l c2xfdCkgfHwgZXNsID09IE5VTEwpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JV RywgImludmFsaWQgRVNMIik7CisKKyAgZXNsX3NpemUgPSBncnViX2xlX3RvX2NwdTMyIChlc2wt PnNpZ25hdHVyZV9saXN0X3NpemUpOworICBzaWduYXR1cmVfaGVhZGVyX3NpemUgPSBncnViX2xl X3RvX2NwdTMyIChlc2wtPnNpZ25hdHVyZV9oZWFkZXJfc2l6ZSk7CisgIHNpZ25hdHVyZV9zaXpl ID0gZ3J1Yl9sZV90b19jcHUzMiAoZXNsLT5zaWduYXR1cmVfc2l6ZSk7CisgIGdydWJfbWVtY3B5 ICgmZ3VpZCwgJmVzbC0+c2lnbmF0dXJlX3R5cGUsIHNpemVvZiAoZ3J1Yl9wYWNrZWRfZ3VpZF90 KSk7CisKKyAgaWYgKGVzbF9zaXplIDwgc2l6ZW9mIChncnViX2VzbF90KSB8fCBlc2xfc2l6ZSA+ ICpuZXh0X2VzbCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQlVHLCAiaW52YWxp ZCBFU0wgc2l6ZSAoJXUpXG4iLCBlc2xfc2l6ZSk7CisKKyAgKm5leHRfZXNsID0gZXNsX3NpemU7 CisgIG9mZnNldCA9IHNpemVvZiAoZ3J1Yl9lc2xfdCkgKyBzaWduYXR1cmVfaGVhZGVyX3NpemU7 CisgIGVzbF9zaXplID0gZXNsX3NpemUgLSBvZmZzZXQ7CisKKyAgcmV0dXJuIF9lc2xfdG9fZXNk IChlc2xfZGF0YSArIG9mZnNldCwgZXNsX3NpemUsIHNpZ25hdHVyZV9zaXplLCAmZ3VpZCwKKyAg ICAgICAgICAgICAgICAgICAgICBwa3Nfc2QsIHBrc19zZF9lbnRyaWVzKTsKK30KKworLyoKKyAq IEltcG9ydCB0aGUgRUZJIFNpZ25hdHVyZSBEYXRhYmFzZSAoRVNEKSBhbmQgdGhlIG51bWJlciBv ZiBFU0QgZnJvbSB0aGUgRVNMCisgKiBpbnRvIHRoZSBwa3Nfc2QgYnVmZmVyIGFuZCBwa3Nfc2Qg ZW50cmllcy4KKyAqLworc3RhdGljIGdydWJfZXJyX3QKK3Brc19zZF9mcm9tX2VzbCAoY29uc3Qg Z3J1Yl91aW50OF90ICplc2xfZGF0YSwgZ3J1Yl9zaXplX3QgZXNsX3NpemUsCisgICAgICAgICAg ICAgICAgIGdydWJfcGtzX3NkX3QgKipwa3Nfc2QsIGdydWJfdWludDMyX3QgKnBrc19zZF9lbnRy aWVzKQoreworICBncnViX2Vycl90IHJjOworICBncnViX3NpemVfdCBuZXh0X2VzbCA9IGVzbF9z aXplOworCisgIGRvCisgICAgeworICAgICAgcmMgPSBlc2xfdG9fZXNkIChlc2xfZGF0YSwgJm5l eHRfZXNsLCBwa3Nfc2QsIHBrc19zZF9lbnRyaWVzKTsKKyAgICAgIGlmIChyYyAhPSBHUlVCX0VS Ul9OT05FKQorICAgICAgICBicmVhazsKKworICAgICAgZXNsX2RhdGEgKz0gbmV4dF9lc2w7Cisg ICAgICBlc2xfc2l6ZSAtPSBuZXh0X2VzbDsKKyAgICAgIG5leHRfZXNsID0gZXNsX3NpemU7Cisg ICAgfQorICB3aGlsZSAoZXNsX3NpemUgPiAwKTsKKworICByZXR1cm4gcmM7Cit9CisKKy8qIFJl YWQgdGhlIHNlY3VyZSBib290IHZlcnNpb24gZnJvbSBQS1MgYXMgYW4gb2JqZWN0LiBDYWxsZXIg bXVzdCBmcmVlIHJlc3VsdC4gKi8KK3N0YXRpYyBncnViX2Vycl90CityZWFkX3NidmVyc2lvbl9m cm9tX3BrcyAoZ3J1Yl91aW50OF90ICoqb3V0KQoreworICBncnViX2ludDMyX3QgcmM7CisgIGdy dWJfdWludDMyX3Qgb3V0bGVuID0gMCwgcG9saWN5ID0gMDsKKworICAqb3V0ID0gZ3J1Yl9tYWxs b2MgKHBrc19tYXhfb2JqZWN0X3NpemUpOworICBpZiAoKm91dCA9PSBOVUxMKQorICAgIHJldHVy biBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCAib3V0IG9mIG1lbW9yeSIpOwor CisgIHJjID0gZ3J1Yl9pZWVlMTI3NV9wa3NfcmVhZF9vYmplY3QgKFBLU19DT05TVU1FUl9GVywg U0JfVkVSU0lPTl9LRVlfTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU0JfVkVSU0lPTl9LRVlfTEVOLCBwa3NfbWF4X29iamVjdF9zaXplLCAqb3V0LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0bGVuLCAmcG9saWN5KTsKKyAgaWYg KHJjIDwgMCkKKyAgICB7CisgICAgICBncnViX2ZyZWUgKCpvdXQpOworICAgICAgcmV0dXJuIGdy dWJfZXJyb3IgKEdSVUJfRVJSX1JFQURfRVJST1IsICJTQiB2ZXJzaW9uIHJlYWQgZmFpbGVkICgl ZClcbiIsIHJjKTsKKyAgICB9CisKKyAgaWYgKG91dGxlbiAhPSAxIHx8ICgqKm91dCA+PSAyKSkK KyAgICB7CisgICAgICBncnViX2ZyZWUgKCpvdXQpOworICAgICAgcmV0dXJuIGdydWJfZXJyb3Ig KEdSVUJfRVJSX0JBRF9OVU1CRVIsICJmb3VuZCB1bmV4cGVjdGVkIFNCIHZlcnNpb246ICV1XG4i LCAqKm91dCk7CisgICAgfQorCisgIHJldHVybiBHUlVCX0VSUl9OT05FOworfQorCisvKgorICog UmVhZHMgdGhlIHNlY3VyZSBib290IHZhcmlhYmxlIGZyb20gUEtTLCB1bnBhY2tzIGl0LCByZWFk IHRoZSBFU0QgZnJvbSBFU0wsCisgKiBhbmQgc3RvcmUgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBw a3Nfc2QgYnVmZmVyLgorICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorcmVhZF9zYnZhcl9mcm9tX3Br cyAoY29uc3QgZ3J1Yl91aW50MzJfdCBzYnZhcmZsYWdzLCBjb25zdCBncnViX3VpbnQzMl90IHNi dmFydHlwZSwKKyAgICAgICAgICAgICAgICAgICAgIGdydWJfcGtzX3NkX3QgKipwa3Nfc2QsIGdy dWJfdWludDMyX3QgKnBrc19zZF9lbnRyaWVzKQoreworICBncnViX2ludDMyX3QgcmM7CisgIGdy dWJfZXJyX3QgZXJyID0gR1JVQl9FUlJfTk9ORTsKKyAgZ3J1Yl91aW50OF90ICplc2xfZGF0YSA9 IE5VTEw7CisgIGdydWJfc2l6ZV90IGVzbF9kYXRhX3NpemUgPSAwOworCisgIGVzbF9kYXRhID0g Z3J1Yl9tYWxsb2MgKHBrc19tYXhfb2JqZWN0X3NpemUpOworICBpZiAoZXNsX2RhdGEgPT0gTlVM TCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfT1VUX09GX01FTU9SWSwgIm91dCBv ZiBtZW1vcnkiKTsKKworICByYyA9IGdydWJfaWVlZTEyNzVfcGtzX3JlYWRfc2J2YXIgKHNidmFy ZmxhZ3MsIHNidmFydHlwZSwgcGtzX21heF9vYmplY3Rfc2l6ZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlc2xfZGF0YSwgJmVzbF9kYXRhX3NpemUpOworICBpZiAocmMg PT0gSUVFRTEyNzVfQ0VMTF9OT1RfRk9VTkQpCisgICAgeworICAgICAgZXJyID0gIGdydWJfZXJy b3IgKEdSVUJfRVJSX0ZJTEVfTk9UX0ZPVU5ELCAic2VjdXJlIGJvb3QgdmFyaWFibGUgJXMgbm90 IGZvdW5kICglZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgIChzYnZhcnR5cGUgPT0gUEtT X1NCVkFSX0RCKSA/ICJkYiIgOiAiZGJ4IiwgcmMpOworICAgICAgZ290byBmYWlsOworICAgIH0K KyAgZWxzZSBpZiAocmMgPCAwKQorICAgIHsKKyAgICAgIGVyciA9IGdydWJfZXJyb3IgKEdSVUJf RVJSX1JFQURfRVJST1IsICJzZWN1cmUgYm9vdCB2YXJpYWJsZSAlcyByZWFkaW5nICglZCkiLAor ICAgICAgICAgICAgICAgICAgICAgICAgKHNidmFydHlwZSA9PSBQS1NfU0JWQVJfREIpID8gImRi IiA6ICJkYngiLCByYyk7CisgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgIGlmIChlc2xfZGF0 YV9zaXplID4gMCkKKyAgICBlcnIgPSBwa3Nfc2RfZnJvbV9lc2wgKGVzbF9kYXRhLCBlc2xfZGF0 YV9zaXplLCBwa3Nfc2QsIHBrc19zZF9lbnRyaWVzKTsKKyAgZWxzZQorICAgIGVyciA9IEdSVUJf RVJSX0JBRF9OVU1CRVI7CisKKyBmYWlsOgorICBncnViX2ZyZWUgKGVzbF9kYXRhKTsKKworICBy ZXR1cm4gZXJyOworfQorCisvKgorICogVGVzdCB0aGUgYXZhaWxhYmlsaXR5IG9mIFBLUyBzdXBw b3J0LiBJZiBQS1Mgc3VwcG9ydCBpcyBhdmFpYWxibGUgYW5kIG9iamVjdHMKKyAqIHByZXNlbnQs IGl0IHJlYWRzIHRoZSBzZWN1cmUgYm9vdCB2ZXJzaW9uIChTQl9WRVJTSU9OKSBmcm9tIFBLUy4K KyAqCisgKiBTQl9WRVJTSU9OOiBLZXkgTWFuYWdlbWVudCBNb2RlCisgKiAxIC0gRW5hYmxlIGR5 bmFtaWMga2V5IG1hbmFnZW1lbnQgbW9kZS4gUmVhZCB0aGUgZGIgYW5kIGRieCB2YXJpYWJsZXMg ZnJvbSBQS1MsCisgKiAgICAgYW5kIHVzZSB0aGVtIGZvciBzaWduYXR1cmUgdmVyaWZpY2F0aW9u LgorICogMCAtIEVuYWJsZSBzdGF0aWMga2V5IG1hbmFnZW1lbnQgbW9kZS4gUmVhZCBrZXlzIGZy b20gdGhlIEdSVUIgRUxGIE5vdGUgYW5kIHVzZQorICogICAgIGl0IGZvciBzaWduYXR1cmUgdmVy aWZpY2F0aW9uLgorICovCitzdGF0aWMgYm9vbAoraXNfcGtzX3ByZXNlbnQgKHZvaWQpCit7Cisg IGdydWJfZXJyX3QgZXJyOworICBncnViX2ludDMyX3QgcmM7CisgIGdydWJfdWludDhfdCAqZGF0 YSA9IE5VTEw7CisgIGJvb2wgcmV0ID0gZmFsc2U7CisKKyAgcmMgPSBncnViX2llZWUxMjc1X3Rl c3QgKFBLU19NQVhfT0JKX1NJWkUpOworICBpZiAocmMgPCAwKQorICAgIHsKKyAgICAgIGdydWJf 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 IHJjX2RieDsKKworICBncnViX2RwcmludGYgKCJpZWVlMTI3NSIsICJ0cnlpbmcgdG8gbG9hZCBQ bGF0Zm9ybSBLZXlTdG9yZVxuIik7CisKKyAgaWYgKGlzX3Brc19wcmVzZW50ICgpID09IGZhbHNl KQorICAgIHsKKyAgICAgIGdydWJfZHByaW50ZiAoImllZWUxMjc1IiwgIlBsYXRmb3JtIFBLUyBp cyBub3QgYXZhaWxhYmxlXG4iKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgLyoKKyAgICog V2hlbiBSZWFkIGRiIGZyb20gUEtTLCB0aGVyZSBhcmUgdGhyZWUgc2NlbmFyaW9zCisgICAqIDEu IGRiIGZ1bGx5IGxvYWRlZCBmcm9tIFBLUworICAgKiAyLiBkYiBwYXJ0aWFsbHkgbG9hZGVkIGZy b20gUEtTCisgICAqIDMuIG5vIGtleXMgYXJlIGxvYWRlZCBmcm9tIGRiIChyZWFkIGVycm9yIG9y IGVtcHR5IGRiIHN0YXRlKSwgZGVmYXVsdCB0bworICAgKiAgICBidWlsdC1pbiBrZXlzIChzdGF0 aWMga2V5cykKKyAgICogZWFjaCBvZiB0aGVzZSBzY2VuYXJpb3MsIHRoZSBkYiBrZXlzIGFyZSBj aGVja2VkIGFnYWluc3QgZGJ4LgorICAgKi8KKyAgcmVhZF9zYnZhcl9mcm9tX3BrcyAoMCwgUEtT X1NCVkFSX0RCLCAmcGtzX2tleXN0b3JlLmRiLCAmcGtzX2tleXN0b3JlLmRiX2VudHJpZXMpOwor CisgIC8qCisgICAqIFJlYWQgZGJ4IGZyb20gUEtTLiBJZiBkYnggaXMgbm90IGNvbXBsZXRlbHkg bG9hZGVkIGZyb20gUEtTLCB0aGVuIHRoaXMKKyAgICogY291bGQgbGVhZCB0byB0aGUgbG9hZGlu ZyBvZiB2dWxuZXJhYmxlIEdSVUIgbW9kdWxlcyBhbmQga2VybmVsIGJpbmFyaWVzLgorICAgKiBT bywgdGhpcyBzaG91bGQgYmUgcHJldmVudGVkIGJ5IGZyZWVpbmcgdXAgbG9hZGVkIGRieCBhbmQg ZGIuCisgICAqLworICByY19kYnggPSByZWFkX3NidmFyX2Zyb21fcGtzICgwLCBQS1NfU0JWQVJf REJYLCAmcGtzX2tleXN0b3JlLmRieCwgJnBrc19rZXlzdG9yZS5kYnhfZW50cmllcyk7CisgIGlm IChyY19kYnggPT0gR1JVQl9FUlJfRklMRV9OT1RfRk9VTkQgfHwgcmNfZGJ4ID09IEdSVUJfRVJS X0JBRF9OVU1CRVIpCisgICAgcmNfZGJ4ID0gR1JVQl9FUlJfTk9ORTsKKworICBpZiAocmNfZGJ4 ICE9IEdSVUJfRVJSX05PTkUpCisgICAgZ3J1Yl9wa3NfZnJlZV9kYXRhICgpOworCisgIC8qCisg ICAqIEF0IHRoaXMgcG9pbnQsIGl0J3MgZXZpZGVudCB0aGF0IFBLUyBpbmZyYXN0cnVjdHVyZSBl eGlzdHMsIHNvIHRoZSBQS1MKKyAgICoga2V5c3RvcmUgbXVzdCBiZSB1c2VkIGZvciB2YWxpZGF0 aW5nIGFwcGVuZGVkIHNpZ25hdHVyZXMuCisgICAqLworICBwa3NfdXNlX2tleXN0b3JlID0gdHJ1 ZTsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9pZWVlMTI3NS9pZWVlMTI3NS5oIGIvaW5j bHVkZS9ncnViL2llZWUxMjc1L2llZWUxMjc1LmgKaW5kZXggYzQ0NWQwNDk5Li4xNTdlZDU3YmUg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi9pZWVlMTI3NS9pZWVlMTI3NS5oCisrKyBiL2luY2x1 ZGUvZ3J1Yi9pZWVlMTI3NS9pZWVlMTI3NS5oCkBAIC0yNCw2ICsyNCw5IEBACiAjaW5jbHVkZSA8 Z3J1Yi90eXBlcy5oPgogI2luY2x1ZGUgPGdydWIvbWFjaGluZS9pZWVlMTI3NS5oPgogCisjZGVm aW5lIElFRUUxMjc1X0NFTExfSU5WQUxJRCAgICAgICAgICAoKGdydWJfaWVlZTEyNzVfY2VsbF90 KSAtMSkKKyNkZWZpbmUgSUVFRTEyNzVfQ0VMTF9OT1RfRk9VTkQgICAgICAgICgoZ3J1Yl9pbnQz Ml90KSAtNykKKwogI2RlZmluZSBHUlVCX0lFRUUxMjc1X0NFTExfRkFMU0UgICAgICAgKChncnVi X2llZWUxMjc1X2NlbGxfdCkgMCkKICNkZWZpbmUgR1JVQl9JRUVFMTI3NV9DRUxMX1RSVUUgICAg ICAgICgoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpIC0xKQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2dy dWIvcG93ZXJwYy9pZWVlMTI3NS9pZWVlMTI3NS5oIGIvaW5jbHVkZS9ncnViL3Bvd2VycGMvaWVl ZTEyNzUvaWVlZTEyNzUuaAppbmRleCA0ZWIyMDcwMTguLjc1Njg5NmFiNyAxMDA2NDQKLS0tIGEv aW5jbHVkZS9ncnViL3Bvd2VycGMvaWVlZTEyNzUvaWVlZTEyNzUuaAorKysgYi9pbmNsdWRlL2dy dWIvcG93ZXJwYy9pZWVlMTI3NS9pZWVlMTI3NS5oCkBAIC0yOCw0ICsyOCwyMiBAQCB0eXBlZGVm IGdydWJfdWludDMyX3QgZ3J1Yl9pZWVlMTI3NV9jZWxsX3Q7CiAjZGVmaW5lIFBSSXhHUlVCX0lF RUUxMjc1X0NFTExfVAlQUkl4R1JVQl9VSU5UMzJfVAogI2RlZmluZSBQUkl1R1JVQl9JRUVFMTI3 NV9DRUxMX1QJUFJJdUdSVUJfVUlOVDMyX1QKIAorI2lmZGVmIF9fcG93ZXJwY19fCitleHRlcm4g Z3J1Yl9pbnQzMl90CitncnViX2llZWUxMjc1X3Rlc3QgKGNvbnN0IGNoYXIgKm5hbWUpOworCitl eHRlcm4gZ3J1Yl9pbnQzMl90CitncnViX2llZWUxMjc1X3Brc19tYXhfb2JqZWN0X3NpemUgKGdy dWJfdWludDMyX3QgKnJlc3VsdCk7CisKK2V4dGVybiBncnViX2ludDMyX3QKK2dydWJfaWVlZTEy NzVfcGtzX3JlYWRfb2JqZWN0IChjb25zdCBncnViX3VpbnQzMl90IGNvbnN1bWVyLCBjb25zdCBj aGFyICpsYWJlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnViX3Vp bnQzMl90IGxhYmVsX2xlbiwgY29uc3QgZ3J1Yl91aW50MzJfdCBidWZmZXJfbGVuLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfdWludDhfdCAqYnVmZmVyLCBncnViX3VpbnQz Ml90ICpkYXRhX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnViX3VpbnQz Ml90ICpwb2xpY2llcyk7CisKK2V4dGVybiBncnViX2ludDMyX3QKK2dydWJfaWVlZTEyNzVfcGtz X3JlYWRfc2J2YXIgKGNvbnN0IGdydWJfdWludDMyX3Qgc2J2YXJfZmxhZ3MsIGNvbnN0IGdydWJf dWludDMyX3Qgc2J2YXJfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGdydWJfdWludDMyX3QgYnVmZmVyX2xlbiwgZ3J1Yl91aW50OF90ICpidWZmZXIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBncnViX3NpemVfdCAqZGF0YV9sZW4pOworI2VuZGlmIC8q IF9fcG93ZXJwY19fICovCiAjZW5kaWYgLyogISBHUlVCX0lFRUUxMjc1X01BQ0hJTkVfSEVBREVS ICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvcG93ZXJwYy9pZWVlMTI3NS9wbGF0Zm9ybV9r ZXlzdG9yZS5oIGIvaW5jbHVkZS9ncnViL3Bvd2VycGMvaWVlZTEyNzUvcGxhdGZvcm1fa2V5c3Rv cmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjJlNmMwYWIyZgotLS0g L2Rldi9udWxsCisrKyBiL2luY2x1ZGUvZ3J1Yi9wb3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tl eXN0b3JlLmgKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYgLSAy MDE1LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcworICogcHJv Z3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIGxpY2Vuc2VkIGFuZCBtYWRl IGF2YWlsYWJsZQorICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSAyLUNs YXVzZSBCU0QgTGljZW5zZSB3aGljaAorICogYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24u CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRp c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UsCisgKiB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0 IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiBkb2N1bWVu dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0 aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI T0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorICogQU5EIEFOWSBFWFBSRVNTIE9SIElN UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU SEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUKKyAqIExJQUJMRSBGT1IgQU5Z IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNV Q0ggREFNQUdFLgorICoKKyAqIGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi1zdGFn aW5nIChlZGsyLXN0YWdpbmcgcmVwbyBvZiB0aWFub2NvcmUpLAorICogdGhlIEltYWdlQXV0aGVu dGljYXRpb24uaCBmaWxlIHVuZGVyIGl0LCBhbmQgaGVyZSdzIHRoZSBjb3B5cmlnaHQgYW5kIGxp Y2Vuc2UuCisgKgorICogTWRlUGtnL0luY2x1ZGUvR3VpZC9JbWFnZUF1dGhlbnRpY2F0aW9uLmgK KyAqCisgKiBDb3B5cmlnaHQgMjAyMiwgMjAyMywgMjAyNCwgMjAyNSBJQk0gQ29ycC4KKyAqLwor CisjaWZuZGVmIFBMQVRGT1JNX0tFWVNUT1JFX0hFQURFUgorI2RlZmluZSBQTEFURk9STV9LRVlT VE9SRV9IRUFERVIgICAgMQorCisjaW5jbHVkZSA8Z3J1Yi9zeW1ib2wuaD4KKyNpbmNsdWRlIDxn cnViL21tLmg+CisjaW5jbHVkZSA8Z3J1Yi90eXBlcy5oPgorCisvKgorICogSXQgaXMgZGVyaXZl ZCBmcm9tIEVGSV9TSUdOQVRVUkVfREFUQQorICogaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29y ZS9lZGsyLXN0YWdpbmcvYmxvYi9tYXN0ZXIvTWRlUGtnL0luY2x1ZGUvR3VpZC9JbWFnZUF1dGhl bnRpY2F0aW9uLmgKKyAqCisgKiBUaGUgc3RydWN0dXJlIG9mIGFuIEVGSSBTaWduYXR1cmUgRGF0 YWJhc2UgKEVTRCkuICovCitzdHJ1Y3QgZ3J1Yl9lc2QKK3sKKyAgLyoKKyAgICogQW4gaWRlbnRp ZmllciB3aGljaCBpZGVudGlmaWVzIHRoZSBhZ2VudCB3aGljaCBhZGRlZCB0aGUgc2lnbmF0dXJl IHRvCisgICAqIHRoZSBsaXN0LgorICAgKi8KKyAgZ3J1Yl9wYWNrZWRfZ3VpZF90IHNpZ25hdHVy ZV9vd25lcjsKKyAgLyogVGhlIGZvcm1hdCBvZiB0aGUgc2lnbmF0dXJlIGlzIGRlZmluZWQgYnkg dGhlIFNpZ25hdHVyZVR5cGUuICovCisgIGdydWJfdWludDhfdCBzaWduYXR1cmVfZGF0YVtdOwor fSBHUlVCX1BBQ0tFRDsKK3R5cGVkZWYgc3RydWN0IGdydWJfZXNkIGdydWJfZXNkX3Q7CisKKy8q CisgKiBJdCBpcyBkZXJpdmVkIGZyb20gRUZJX1NJR05BVFVSRV9MSVNUCisgKiBodHRwczovL2dp dGh1Yi5jb20vdGlhbm9jb3JlL2VkazItc3RhZ2luZy9ibG9iL21hc3Rlci9NZGVQa2cvSW5jbHVk ZS9HdWlkL0ltYWdlQXV0aGVudGljYXRpb24uaAorICoKKyAqIFRoZSBzdHJ1Y3R1cmUgb2YgYW4g RUZJIFNpZ25hdHVyZSBMaXN0IChFU0wpLiAqLworc3RydWN0IGdydWJfZXNsCit7CisgIC8qIFR5 cGUgb2YgdGhlIHNpZ25hdHVyZS4gR1VJRCBzaWduYXR1cmUgdHlwZXMgYXJlIGRlZmluZWQgaW4g YmVsb3cuICovCisgIGdydWJfcGFja2VkX2d1aWRfdCBzaWduYXR1cmVfdHlwZTsKKyAgLyogVG90 YWwgc2l6ZSBvZiB0aGUgc2lnbmF0dXJlIGxpc3QsIGluY2x1ZGluZyB0aGlzIGhlYWRlci4gKi8K KyAgZ3J1Yl91aW50MzJfdCBzaWduYXR1cmVfbGlzdF9zaXplOworICAvKiBTaXplIG9mIHRoZSBz aWduYXR1cmUgaGVhZGVyIHdoaWNoIHByZWNlZGVzIHRoZSBhcnJheSBvZiBzaWduYXR1cmVzLiAq LworICBncnViX3VpbnQzMl90IHNpZ25hdHVyZV9oZWFkZXJfc2l6ZTsKKyAgLyogU2l6ZSBvZiBl YWNoIHNpZ25hdHVyZS4qLworICBncnViX3VpbnQzMl90IHNpZ25hdHVyZV9zaXplOworfSBHUlVC X1BBQ0tFRDsKK3R5cGVkZWYgc3RydWN0IGdydWJfZXNsIGdydWJfZXNsX3Q7CisKKy8qIFRoZSBz dHJ1Y3R1cmUgb2YgYSBQS1MgU2lnbmF0dXJlIERhdGFiYXNlIChTRCkuICovCitzdHJ1Y3QgZ3J1 Yl9wa3Nfc2QKK3sKKyAgZ3J1Yl9wYWNrZWRfZ3VpZF90IGd1aWQ7IC8qIFNpZ25hdHVyZSB0eXBl LiAqLworICBncnViX3VpbnQ4X3QgKmRhdGE7ICAgICAgLyogU2lnbmF0dXJlIGRhdGEuICovCisg IGdydWJfc2l6ZV90IGRhdGFfc2l6ZTsgICAvKiBTaXplIG9mIHNpZ25hdHVyZSBkYXRhLiAqLwor fSBHUlVCX1BBQ0tFRDsKK3R5cGVkZWYgc3RydWN0IGdydWJfcGtzX3NkIGdydWJfcGtzX3NkX3Q7 CisKKy8qIFRoZSBzdHJ1Y3R1cmUgb2YgYSBQbGF0Zm9ybSBLZXlTdG9yZSAoUEtTKS4gKi8KK3N0 cnVjdCBncnViX3BrcworeworICBncnViX3Brc19zZF90ICpkYjsgICAgICAgIC8qIFNpZ25hdHVy ZSBkYXRhYmFzZS4gKi8KKyAgZ3J1Yl9wa3Nfc2RfdCAqZGJ4OyAgICAgICAvKiBGb3JiaWRkZW4g c2lnbmF0dXJlIGRhdGFiYXNlLiAqLworICBncnViX3VpbnQzMl90IGRiX2VudHJpZXM7IC8qIFNp emUgb2Ygc2lnbmF0dXJlIGRhdGFiYXNlLiAqLworICBncnViX3VpbnQzMl90IGRieF9lbnRyaWVz Oy8qIFNpemUgb2YgZm9yYmlkZGVuIHNpZ25hdHVyZSBkYXRhYmFzZS4gKi8KK307Cit0eXBlZGVm IHN0cnVjdCBncnViX3BrcyBncnViX3Brc190OworCisjaWYgZGVmaW5lZChfX3Bvd2VycGNfXykK Ky8qIEluaXRpYWxpemF0aW9uIG9mIHRoZSBQbGF0Zm9ybSBLZXlzdG9yZS4gKi8KK2V4dGVybiB2 b2lkCitncnViX3Brc19rZXlzdG9yZV9pbml0ICh2b2lkKTsKKworLyogUGxhdGZvcm0gS2V5U3Rv cmUgZGIgYW5kIGRieC4gKi8KK2V4dGVybiBncnViX3Brc190ICoKK0VYUE9SVF9GVU5DIChncnVi X3Brc19nZXRfa2V5c3RvcmUpICh2b2lkKTsKKworLyogRnJlZSBhbGxvY2F0ZWQgbWVtb3J5LiAq LworZXh0ZXJuIHZvaWQKK0VYUE9SVF9GVU5DIChncnViX3Brc19mcmVlX2RhdGEpICh2b2lkKTsK KyNlbHNlCitzdGF0aWMgaW5saW5lIGdydWJfcGtzX3QgKgorZ3J1Yl9wa3NfZ2V0X2tleXN0b3Jl ICh2b2lkKQoreworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitncnVi X3Brc19mcmVlX2RhdGEgKHZvaWQpCit7Cit9CisjZW5kaWYgLyogX19wb3dlcnBjX18gKi8KKyNl bmRpZgotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkdydWItZGV2ZWwgbWFpbGluZyBsaXN0CkdydWItZGV2 ZWxAZ251Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcvbWFpbG1hbi9saXN0aW5mby9ncnViLWRl dmVsCg==