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 84CE8C35FFF for ; Fri, 21 Mar 2025 08:01:36 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tvXIG-0001qb-8W; Fri, 21 Mar 2025 03:59: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 1tvXIA-0001ml-Mm for grub-devel@gnu.org; Fri, 21 Mar 2025 03:59:46 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tvXI8-0003PX-6T for grub-devel@gnu.org; Fri, 21 Mar 2025 03:59:46 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-3914aba1ce4so1348504f8f.2 for ; Fri, 21 Mar 2025 00:59:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1742543983; x=1743148783; darn=gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dKrpAYfV/MYEQdObFrjGE8rwzE8UlfR7NbrcE+9R82c=; b=OM6D9NGKwE5pPWxE1O5AHAuNHDq14cPqFTxgY+Fd5TZre0zUiGklHMOlmq76gYcIYz vI8U+TWnZcRFMXCrOIfLenvrOCg3f1D7sDEriY2eJ3yutCU2yLnm0y0yYdeNSp9IQLDI fE6GF9tqpMAGCCGS/bmC2T8+q0O6b3JB+GEIueYjB6cmBKd22Z3bqUmR85PbJd+UJ/PH PyZTzdnkWkaYhONe0Z8hl3OBPg/t62/5wFPAAIlnKV9Z7jqfy8kb3nS+p90R4vd3xn/V 7TRObMQirNUxeLgZh2B+zsCWm+iDjH5h805XDqCFh11MYCy2g2nGJzJIFMX1DFIeS7h1 X38A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742543983; x=1743148783; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dKrpAYfV/MYEQdObFrjGE8rwzE8UlfR7NbrcE+9R82c=; b=pu/ZtkXt3E13PZIIT7wJtw4sFieQmUQB/IN6cd6Vpsy+mIIhitit105ttRQsWTX5r1 2BZDHftwuviWPG0oD+0IgmEkSFDzfgaehoy/VuAGABBCfJWTdgqePvWrFUVY8rihKfAN TcfDQP9saNnw9pInVtqFXTc+Qgyv6JBhaMvTQoYC8GKYYaNJQAVlku9ujfnN6ZRUHS7H KJgDR2KD7GJY0Ye35v2dem9swwNDnJCc3HXTLw/MUHt2Qasp4CR1vLC0qGCRIRY7N4Vl E+zA5uxOOX8tX3jSBdCy0Xr2/dkjG1lBM8alUiN75cTP8c8WQgxA11ezMi8veIirlpTs acmg== X-Gm-Message-State: AOJu0YxgGMLRyaQ3QXLS94KVbiJRxntpL8b+4T/6crl/cFHwnVcgssvJ gTT469/rn/HcoIWo3dG51MmH37iNOhkJhdKK0HiQmyGoW36i3+euhttqyCDtk8GztiMXf08dodO W X-Gm-Gg: ASbGncv5Hom6Nj5ToHutL7xo6tz9g4cZrs8PO4iBYBjrfAyP/vriIIlZ2Esmo32rtKb XUYVJ6DMvAaeQivJXna1Tgq2NkRTswlVSnw5zfTFwPaYQbCsOlTj4olwC1Iz+2SOQVD/z/SIJsb x+T/KphymCoKRExJBNyG2aEslDQ/7QIagOGkoWT4obWJ3C4LPV+Ea0YqG93XNppQxADTiucc9hP 3VXs1k1yCPfEEsQoJDFXgUgpjAPVuWc7DUBehUPibQmvE1l8MZ9CovJgYzESUodq0df5dyg4ZJX GY8ZTP83825TN/jlwQ/iusOTtLh2uZdDp4WKj6OYKV/MRhz46rCmhRr1CDdVXTgRrnVlLQN7F1Q = X-Google-Smtp-Source: AGHT+IFwT/+i5mia57VhtW94Qpoegj5dtbERlEstqTGzaCJS+if1V7jl1GKT0Oqwbtt56s4f1JETQA== X-Received: by 2002:a05:6000:1a8a:b0:390:f6aa:4e7c with SMTP id ffacd0b85a97d-3997f911525mr2541706f8f.28.1742543982529; Fri, 21 Mar 2025 00:59:42 -0700 (PDT) Received: from localhost (111-240-129-118.dynamic-ip.hinet.net. [111.240.129.118]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-227811b2bf0sm10302965ad.145.2025.03.21.00.59.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Mar 2025 00:59:42 -0700 (PDT) To: The development of GNU GRUB Subject: [PATCH v4 07/12] util/grub-protect: Support NV index mode Date: Fri, 21 Mar 2025 15:59:03 +0800 Message-ID: <20250321075908.10523-8-glin@suse.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250321075908.10523-1-glin@suse.com> References: <20250321075908.10523-1-glin@suse.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42a; envelope-from=glin@suse.com; helo=mail-wr1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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: , From: Gary Lin via Grub-devel Reply-To: The development of GNU GRUB Cc: Gary Lin , Daniel Kiper , mchang@suse.com, patrick.colp@oracle.com, Stefan Berger , jejb@linux.ibm.com, Glenn Washburn 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 VGhpcyBjb21taXQgaW1wbGVtZW50cyB0aGUgbWlzc2luZyBOViBpbmRleCBtb2RlIHN1cHBvcnQg aW4KJ2dydWItcHJvdGVjdCcuIE5WIGluZGV4IG1vZGUgc3RvcmVzIHRoZSBzZWFsZWQga2V5IGlu IHRoZSBUUE0Kbm9uLXZvbGF0aWxlIG1lbW9yeSAoTlZSQU0pIGluc3RlYWQgb2YgYSBmaWxlLiBU aGVyZSBhcmUgdHdvIHN1cHBvcnRlZAp0eXBlcyBvZiBUUE0gaGFuZGxlcy4KCjEuIFBlcnNpc3Rl bnQgaGFuZGxlICgweDgxMDAwMDAwfjB4ODFGRkZGRkYpCiAgIE9ubHkgdGhlIHJhdyBmb3JtYXQg aXMgc3VwcG9ydGVkIGR1ZSB0byB0aGUgbGltaXRhdGlvbiBvZiBwZXJzaXN0ZW50CiAgIGhhbmRs ZXMuIFRoaXMgJ2dydWItcHJvdGVjdCcgY29tbWFuZCBzZWFscyB0aGUga2V5IGludG8gdGhlCiAg IHBlcnNpc3RlbnQgaGFuZGxlIDB4ODEwMDAwMDAuCgogICMgZ3J1Yi1wcm90ZWN0IFwKICAgICAg LS1wcm90ZWN0b3I9dHBtMiBcCiAgICAgIC0tYWN0aW9uPWFkZCBcCiAgICAgIC0tdHBtMi1iYW5r PXNoYTI1NiBcCiAgICAgIC0tdHBtMi1wY3JzPTcsMTEgXAogICAgICAtLXRwbTIta2V5ZmlsZT1s dWtzLWtleSBcCiAgICAgIC0tdHBtMi1udmluZGV4PTB4ODEwMDAwMDAKCjIuIE5WIGluZGV4IGhh bmRsZSAoMHgxMDAwMDAwfjB4MUZGRkZGRikKICAgQm90aCBUUE0gMi4wIEtleSBGaWxlIGZvcm1h dCBhbmQgdGhlIHJhdyBmb3JtYXQgYXJlIHN1cHBvcnRlZCBieSBOVgogICBpbmRleCBoYW5kbGVz LiBIZXJlIGlzIHRoZSAnZ3J1Yi1wcm90ZWN0JyBjb21tYW5kIHRvIHNlYWwgdGhlIGtleSBpbgog ICBUUE0gMi4wIEtleSBGaWxlIGZvcm1hdCBpbnRvIHRoZSBOViBpbmRleCBoYW5kbGUgMHgxMDAw MDAwLgoKICAjIGdydWItcHJvdGVjdCBcCiAgICAgIC0tcHJvdGVjdG9yPXRwbTIgXAogICAgICAt LWFjdGlvbj1hZGQgXAogICAgICAtLXRwbTJrZXkgXAogICAgICAtLXRwbTItYmFuaz1zaGEyNTYg XAogICAgICAtLXRwbTItcGNycz03LDExIFwKICAgICAgLS10cG0yLWtleWZpbGU9bHVrcy1rZXkg XAogICAgICAtLXRwbTItbnZpbmRleD0weDEwMDAwMDAKCkJlc2lkZXMgdGhlICdhZGQnIGFjdGlv biwgdGhlIGNvcnJlc3BvbmRpbmcgJ3JlbW92ZScgYWN0aW9uIGlzIGFsc28KaW50cm9kdWNlZC4g VG8gcmVtb3ZlIHRoZSBkYXRhIGZyb20gYSBwZXJzaXN0ZW50IG9yIE5WIGluZGV4IGhhbmRsZSwK anVzdCB1c2UgJy0tdHBtMi1udmluZGV4PUhBTkRMRScgY29tYmluaW5nIHdpdGggJy0tdHBtMi1l dmljdCcuIFRoaXMKc2FtcGxlIGNvbW1hbmQgcmVtb3ZlcyB0aGUgZGF0YSBmcm9tIHRoZSBOViBp bmRleCBoYW5kbGUgMHgxMDAwMDAwLgoKICAjIGdydWItcHJvdGVjdCBcCiAgICAgIC0tcHJvdGVj dG9yPXRwbTIgXAogICAgICAtLWFjdGlvbj1yZW1vdmUgXAogICAgICAtLXRwbTItZXZpY3QgXAog ICAgICAtLXRwbTItbnZpbmRleD0weDEwMDAwMDAKCkFsc28gc2V0IGFuZCBjaGVjayB0aGUgYm9v bGVhbiB2YXJpYWJsZXMgd2l0aCB0cnVlL2ZhbHNlIGluc3RlYWQgb2YgMS8wLgoKU2lnbmVkLW9m Zi1ieTogR2FyeSBMaW4gPGdsaW5Ac3VzZS5jb20+ClJldmlld2VkLWJ5OiBTdGVmYW4gQmVyZ2Vy IDxzdGVmYW5iQGxpbnV4LmlibS5jb20+Ci0tLQogdXRpbC9ncnViLXByb3RlY3QuYyB8IDM0MyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDI4NyBpbnNlcnRpb25zKCspLCA1NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS91dGls L2dydWItcHJvdGVjdC5jIGIvdXRpbC9ncnViLXByb3RlY3QuYwppbmRleCA1YjdlOTUyZjQuLjQw ZDRhM2ZjNSAxMDA2NDQKLS0tIGEvdXRpbC9ncnViLXByb3RlY3QuYworKysgYi91dGlsL2dydWIt cHJvdGVjdC5jCkBAIC02MSw3ICs2MSw4IEBAIHR5cGVkZWYgZW51bSBwcm90ZWN0X29wdAogICBQ Uk9URUNUX09QVF9UUE0yX0tFWUZJTEUsCiAgIFBST1RFQ1RfT1BUX1RQTTJfT1VURklMRSwKICAg UFJPVEVDVF9PUFRfVFBNMl9FVklDVCwKLSAgUFJPVEVDVF9PUFRfVFBNMl9UUE0yS0VZCisgIFBS T1RFQ1RfT1BUX1RQTTJfVFBNMktFWSwKKyAgUFJPVEVDVF9PUFRfVFBNMl9OVklOREVYLAogfSBw cm90ZWN0X29wdF90OwogCiAvKiBPcHRpb24gZmxhZ3MgdG8ga2VlcCB0cmFjayBvZiBzcGVjaWZp ZWQgYXJndW1lbnRzICovCkBAIC03OSw3ICs4MCw4IEBAIHR5cGVkZWYgZW51bSBwcm90ZWN0X2Fy ZwogICBQUk9URUNUX0FSR19UUE0yX0tFWUZJTEUgICAgPSAxIDw8IDcsCiAgIFBST1RFQ1RfQVJH X1RQTTJfT1VURklMRSAgICA9IDEgPDwgOCwKICAgUFJPVEVDVF9BUkdfVFBNMl9FVklDVCAgICAg ID0gMSA8PCA5LAotICBQUk9URUNUX0FSR19UUE0yX1RQTTJLRVkgICAgPSAxIDw8IDEwCisgIFBS T1RFQ1RfQVJHX1RQTTJfVFBNMktFWSAgICA9IDEgPDwgMTAsCisgIFBST1RFQ1RfQVJHX1RQTTJf TlZJTkRFWCAgICA9IDEgPDwgMTEKIH0gcHJvdGVjdF9hcmdfdDsKIAogdHlwZWRlZiBlbnVtIHBy b3RlY3RfcHJvdGVjdG9yCkBAIC0xMTEsNiArMTEzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgcHJvdGVj dF9hcmdzCiAgIGNvbnN0IGNoYXIgKnRwbTJfb3V0ZmlsZTsKICAgYm9vbCB0cG0yX2V2aWN0Owog ICBib29sIHRwbTJfdHBtMmtleTsKKyAgVFBNX0hBTkRMRV90IHRwbTJfbnZpbmRleDsKIH0gcHJv dGVjdF9hcmdzX3Q7CiAKIHN0YXRpYyBzdHJ1Y3QgYXJncF9vcHRpb24gcHJvdGVjdF9vcHRpb25z W10gPQpAQCAtMjI0LDYgKzIyNywxNSBAQCBzdGF0aWMgc3RydWN0IGFyZ3Bfb3B0aW9uIHByb3Rl Y3Rfb3B0aW9uc1tdID0KIAlOXygiVXNlIFRQTSAyLjAgS2V5IEZpbGUgZm9ybWF0LiIpLAogICAg ICAgLmdyb3VwID0gMAogICAgIH0sCisgICAgeworICAgICAgLm5hbWUgPSAidHBtMi1udmluZGV4 IiwKKyAgICAgIC5rZXkgICA9IFBST1RFQ1RfT1BUX1RQTTJfTlZJTkRFWCwKKyAgICAgIC5hcmcg ICA9ICJOVU0iLAorICAgICAgLmZsYWdzID0gMCwKKyAgICAgIC5kb2MgICA9CisJTl8oIlN0b3Jl IHRoZSBzZWFsZWQga2V5IGluIGEgcGVyc2lzdGVudCBvciBOViBpbmRleCBoYW5kbGUuIiksCisg ICAgICAuZ3JvdXAgPSAwCisgICAgfSwKICAgICAvKiBFbmQgb2YgbGlzdCAqLwogICAgIHsgMCwg MCwgMCwgMCwgMCwgMCB9CiAgIH07CkBAIC02NjgsOCArNjgwLDggQEAgZXh0ZXJuIGFzbjFfc3Rh dGljX25vZGUgdHBtMmtleV9hc24xX3RhYltdOwogI2RlZmluZSBUUE0yS0VZX1NFQUxFRF9LRVlf T0lEICIyLjIzLjEzMy4xMC4xLjUiCiAKIHN0YXRpYyBncnViX2Vycl90Ci1wcm90ZWN0X3RwbTJf ZXhwb3J0X3RwbTJrZXkgKGNvbnN0IHByb3RlY3RfYXJnc190ICphcmdzLAotCQkJICAgICB0cG0y X3NlYWxlZF9rZXlfdCAqc2VhbGVkX2tleSkKK3Byb3RlY3RfdHBtMl9leHBvcnRfdHBtMmtleSAo Y29uc3QgcHJvdGVjdF9hcmdzX3QgKmFyZ3MsIHRwbTJfc2VhbGVkX2tleV90ICpzZWFsZWRfa2V5 LAorCQkJICAgICB2b2lkICoqZGVyX2J1ZiwgaW50ICpkZXJfYnVmX3NpemUpCiB7CiAgIGNvbnN0 IGNoYXIgKnNlYWxlZF9rZXlfb2lkID0gVFBNMktFWV9TRUFMRURfS0VZX09JRDsKICAgYXNuMV9u b2RlIGFzbjFfZGVmID0gTlVMTDsKQEAgLTY4OSwxMiArNzAxLDEzIEBAIHByb3RlY3RfdHBtMl9l eHBvcnRfdHBtMmtleSAoY29uc3QgcHJvdGVjdF9hcmdzX3QgKmFyZ3MsCiAgIH07CiAgIHN0cnVj dCBncnViX3RwbTJfYnVmZmVyIHB1Yl9idWY7CiAgIHN0cnVjdCBncnViX3RwbTJfYnVmZmVyIHBy aXZfYnVmOwotICB2b2lkICpkZXJfYnVmID0gTlVMTDsKLSAgaW50IGRlcl9idWZfc2l6ZSA9IDA7 CiAgIGludCBpOwogICBpbnQgcmV0OwogICBncnViX2Vycl90IGVycjsKIAorICBpZiAoZGVyX2J1 ZiA9PSBOVUxMKQorICAgIHJldHVybiBHUlVCX0VSUl9CQURfQVJHVU1FTlQ7CisKICAgZm9yIChp ID0gMDsgaSA8IGFyZ3MtPnRwbTJfcGNyX2NvdW50OyBpKyspCiAgICAgVFBNU19QQ1JfU0VMRUNU SU9OX1NlbGVjdFBDUiAoJnBjcl9zZWwucGNyU2VsZWN0aW9uc1swXSwgYXJncy0+dHBtMl9wY3Jz W2ldKTsKIApAQCAtODQ0LDggKzg1Nyw4IEBAIHByb3RlY3RfdHBtMl9leHBvcnRfdHBtMmtleSAo Y29uc3QgcHJvdGVjdF9hcmdzX3QgKmFyZ3MsCiAgICAgfQogCiAgIC8qIENyZWF0ZSB0aGUgREVS IGJpbmFyeSAqLwotICBkZXJfYnVmX3NpemUgPSAwOwotICByZXQgPSBhc24xX2Rlcl9jb2Rpbmcg KHRwbTJrZXksICIiLCBOVUxMLCAmZGVyX2J1Zl9zaXplLCBOVUxMKTsKKyAgKmRlcl9idWZfc2l6 ZSA9IDA7CisgIHJldCA9IGFzbjFfZGVyX2NvZGluZyAodHBtMmtleSwgIiIsIE5VTEwsIGRlcl9i dWZfc2l6ZSwgTlVMTCk7CiAgIGlmIChyZXQgIT0gQVNOMV9NRU1fRVJST1IpCiAgICAgewogICAg ICAgZnByaW50ZiAoc3RkZXJyLCAiRmFpbGVkIHRvIGdldCBERVIgc2l6ZTogMHgleFxuIiwgcmV0 KTsKQEAgLTg1MywxNSArODY2LDE1IEBAIHByb3RlY3RfdHBtMl9leHBvcnRfdHBtMmtleSAoY29u c3QgcHJvdGVjdF9hcmdzX3QgKmFyZ3MsCiAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICBk ZXJfYnVmID0gZ3J1Yl9tYWxsb2MgKGRlcl9idWZfc2l6ZSk7Ci0gIGlmIChkZXJfYnVmID09IE5V TEwpCisgICpkZXJfYnVmID0gZ3J1Yl9tYWxsb2MgKCpkZXJfYnVmX3NpemUpOworICBpZiAoKmRl cl9idWYgPT0gTlVMTCkKICAgICB7CiAgICAgICBmcHJpbnRmIChzdGRlcnIsICJGYWlsZWQgdG8g YWxsb2NhdGUgbWVtb3J5IGZvciBERVIgZW5jb2RpbmdcbiIpOwogICAgICAgZXJyID0gR1JVQl9F UlJfT1VUX09GX01FTU9SWTsKICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gIHJldCA9IGFz bjFfZGVyX2NvZGluZyAodHBtMmtleSwgIiIsIGRlcl9idWYsICZkZXJfYnVmX3NpemUsIE5VTEwp OworICByZXQgPSBhc24xX2Rlcl9jb2RpbmcgKHRwbTJrZXksICIiLCAqZGVyX2J1ZiwgZGVyX2J1 Zl9zaXplLCBOVUxMKTsKICAgaWYgKHJldCAhPSBBU04xX1NVQ0NFU1MpCiAgICAgewogICAgICAg ZnByaW50ZiAoc3RkZXJyLCAiREVSIGNvZGluZyBlcnJvcjogMHgleFxuIiwgcmV0KTsKQEAgLTg2 OSwxMyArODgyLDcgQEAgcHJvdGVjdF90cG0yX2V4cG9ydF90cG0ya2V5IChjb25zdCBwcm90ZWN0 X2FyZ3NfdCAqYXJncywKICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gIGVyciA9IHByb3Rl Y3Rfd3JpdGVfZmlsZSAoYXJncy0+dHBtMl9vdXRmaWxlLCBkZXJfYnVmLCBkZXJfYnVmX3NpemUp OwotICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCi0gICAgZnByaW50ZiAoc3RkZXJyLCBOXygi Q291bGQgbm90IHdyaXRlIHRwbTJrZXkgZmlsZSAoJXMpLlxuIiksIHN0cmVycm9yIChlcnJubykp OwotCiAgZXJyb3I6Ci0gIGdydWJfZnJlZSAoZGVyX2J1Zik7Ci0KICAgaWYgKHRwbTJrZXkpCiAg ICAgYXNuMV9kZWxldGVfc3RydWN0dXJlICgmdHBtMmtleSk7CiAKQEAgLTg4MywxMCArODkwLDgg QEAgcHJvdGVjdF90cG0yX2V4cG9ydF90cG0ya2V5IChjb25zdCBwcm90ZWN0X2FyZ3NfdCAqYXJn cywKIH0KIAogc3RhdGljIGdydWJfZXJyX3QKLXByb3RlY3RfdHBtMl9leHBvcnRfc2VhbGVkX2tl eSAoY29uc3QgY2hhciAqZmlsZXBhdGgsCi0JCQkJdHBtMl9zZWFsZWRfa2V5X3QgKnNlYWxlZF9r ZXkpCitwcm90ZWN0X3RwbTJfZXhwb3J0X3JhdyAodHBtMl9zZWFsZWRfa2V5X3QgKnNlYWxlZF9r ZXksIHZvaWQgKipvdXRfYnVmLCBpbnQgKm91dF9idWZfc2l6ZSkKIHsKLSAgZ3J1Yl9lcnJfdCBl cnI7CiAgIHN0cnVjdCBncnViX3RwbTJfYnVmZmVyIGJ1ZjsKIAogICBncnViX3RwbTJfYnVmZmVy X2luaXQgKCZidWYpOwpAQCAtODk2LDEzICs5MDEsOTggQEAgcHJvdGVjdF90cG0yX2V4cG9ydF9z ZWFsZWRfa2V5IChjb25zdCBjaGFyICpmaWxlcGF0aCwKICAgaWYgKGJ1Zi5lcnJvciAhPSAwKQog ICAgIHJldHVybiBHUlVCX0VSUl9CQURfQVJHVU1FTlQ7CiAKLSAgZXJyID0gcHJvdGVjdF93cml0 ZV9maWxlIChmaWxlcGF0aCwgYnVmLmRhdGEsIGJ1Zi5zaXplKTsKLSAgaWYgKGVyciAhPSBHUlVC X0VSUl9OT05FKQotICAgIGZwcmludGYgKHN0ZGVyciwgTl8oIkNvdWxkIG5vdCB3cml0ZSBzZWFs ZWQga2V5IGZpbGUgKCVzKS5cbiIpLCBzdHJlcnJvciAoZXJybm8pKTsKKyAgKm91dF9idWZfc2l6 ZSA9IGJ1Zi5zaXplOworICAqb3V0X2J1ZiA9IGdydWJfbWFsbG9jIChidWYuc2l6ZSk7CisKKyAg aWYgKCpvdXRfYnVmID09IE5VTEwpCisgICAgeworICAgICAgZnByaW50ZiAoc3RkZXJyLCBOXygi Q291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIHJhdyBmb3JtYXQga2V5LlxuIikpOwor ICAgICAgcmV0dXJuIEdSVUJfRVJSX09VVF9PRl9NRU1PUlk7CisgICAgfQorCisgIGdydWJfbWVt Y3B5ICgqb3V0X2J1ZiwgYnVmLmRhdGEsIGJ1Zi5zaXplKTsKKworICByZXR1cm4gR1JVQl9FUlJf Tk9ORTsKK30KKworc3RhdGljIGdydWJfZXJyX3QKK3Byb3RlY3RfdHBtMl9leHBvcnRfcGVyc2lz dGVudCAocHJvdGVjdF9hcmdzX3QgKmFyZ3MsCisJCQkJVFBNX0hBTkRMRV90IHNya19oYW5kbGUs CisJCQkJdHBtMl9zZWFsZWRfa2V5X3QgKnNlYWxlZF9rZXkpCit7CisgIFRQTVNfQVVUSF9DT01N QU5EX3QgYXV0aENtZCA9IHswfTsKKyAgVFBNMkJfTkFNRV90IG5hbWUgPSB7MH07CisgIFRQTV9I QU5ETEVfdCBzZWFsZWRfaGFuZGxlOworICBUUE1fUkNfdCByYzsKKyAgZ3J1Yl9lcnJfdCBlcnIg PSBHUlVCX0VSUl9OT05FOworCisgIC8qIExvYWQgdGhlIHNlYWxlZCBrZXkgYW5kIGFzc29jaWF0 ZSBpdCB3aXRoIHRoZSBTUksgKi8KKyAgYXV0aENtZC5zZXNzaW9uSGFuZGxlID0gVFBNX1JTX1BX OworICByYyA9IGdydWJfdHBtMl9sb2FkIChzcmtfaGFuZGxlLCAmYXV0aENtZCwgJnNlYWxlZF9r ZXktPnByaXZhdGUsICZzZWFsZWRfa2V5LT5wdWJsaWMsCisJCSAgICAgICAmc2VhbGVkX2hhbmRs ZSwgJm5hbWUsIE5VTEwpOworICBpZiAocmMgIT0gVFBNX1JDX1NVQ0NFU1MpCisgICAgeworICAg ICAgZnByaW50ZiAoc3RkZXJyLCAiRmFpbGVkIHRvIGxvYWQgc2VhbGVkIGtleSAoVFBNMl9Mb2Fk OiAleCkuXG4iLCByYyk7CisgICAgICByZXR1cm4gR1JVQl9FUlJfQkFEX0RFVklDRTsKKyAgICB9 CisKKyAgLyogTWFrZSB0aGUgc2VhbGVkIGtleSBvYmplY3QgcGVyc2lzdGVudCAqLworICBhdXRo Q21kLnNlc3Npb25IYW5kbGUgPSBUUE1fUlNfUFc7CisgIHJjID0gZ3J1Yl90cG0yX2V2aWN0Y29u dHJvbCAoVFBNX1JIX09XTkVSLCBzZWFsZWRfaGFuZGxlLCAmYXV0aENtZCwgYXJncy0+dHBtMl9u dmluZGV4LCBOVUxMKTsKKyAgaWYgKHJjICE9IFRQTV9SQ19TVUNDRVNTKQorICAgIHsKKyAgICAg IGZwcmludGYgKHN0ZGVyciwgIkZhaWxlZCB0byBtYWtlIHNlYWxlZCBrZXkgcGVyc2lzdGVudCB3 aXRoIGhhbmRsZSAweCV4IChUUE0yX0V2aWN0Q29udHJvbDogMHgleCkuXG4iLCBhcmdzLT50cG0y X252aW5kZXgsIHJjKTsKKyAgICAgIGVyciA9IEdSVUJfRVJSX0JBRF9ERVZJQ0U7CisgICAgICBn b3RvIGV4aXQ7CisgICAgfQorCisgZXhpdDoKKyAgZ3J1Yl90cG0yX2ZsdXNoY29udGV4dCAoc2Vh bGVkX2hhbmRsZSk7CiAKICAgcmV0dXJuIGVycjsKIH0KIAorc3RhdGljIGdydWJfZXJyX3QKK3By b3RlY3RfdHBtMl9leHBvcnRfbnZpbmRleCAocHJvdGVjdF9hcmdzX3QgKmFyZ3MsIHZvaWQgKmRh dGEsIGludCBkYXRhX3NpemUpCit7CisgIFRQTVNfQVVUSF9DT01NQU5EX3QgYXV0aENtZCA9IHsw fTsKKyAgVFBNMkJfTlZfUFVCTElDX3QgcHViX2luZm8gPSB7MH07CisgIFRQTTJCX01BWF9OVl9C VUZGRVJfdCBudl9kYXRhID0gezB9OworICBUUE1fUkNfdCByYzsKKworICBpZiAoZGF0YV9zaXpl ID4gVFBNX01BWF9OVl9CVUZGRVJfU0laRSB8fCBkYXRhX3NpemUgPCAwKQorICAgIHsKKyAgICAg IGZwcmludGYgKHN0ZGVyciwgTl8oIkludmFsaWQgdHBtMmtleSBzaXplIGZvciBUUE0gTlYgYnVm ZmVyXG4iKSk7CisgICAgICByZXR1cm4gR1JVQl9FUlJfT1VUX09GX1JBTkdFOworICAgIH0KKwor ICBwdWJfaW5mby5udlB1YmxpYy5udkluZGV4ID0gYXJncy0+dHBtMl9udmluZGV4OworICBwdWJf aW5mby5udlB1YmxpYy5uYW1lQWxnID0gVFBNX0FMR19TSEEyNTY7CisgIHB1Yl9pbmZvLm52UHVi bGljLmF0dHJpYnV0ZXMgPSBUUE1BX05WX09XTkVSV1JJVEUgfCBUUE1BX05WX09XTkVSUkVBRDsK KyAgcHViX2luZm8ubnZQdWJsaWMuZGF0YVNpemUgPSAoZ3J1Yl91aW50MTZfdCkgZGF0YV9zaXpl OworCisgIGF1dGhDbWQuc2Vzc2lvbkhhbmRsZSA9IFRQTV9SU19QVzsKKyAgcmMgPSBncnViX3Rw bTJfbnZfZGVmaW5lc3BhY2UgKFRQTV9SSF9PV05FUiwgJmF1dGhDbWQsIE5VTEwsICZwdWJfaW5m byk7CisgIGlmIChyYyAhPSBUUE1fUkNfU1VDQ0VTUykKKyAgICB7CisgICAgICBmcHJpbnRmIChz dGRlcnIsICJGYWlsZWQgdG8gZGVmaW5lIE5WIHNwYWNlIGZvciAweCV4IChUUE0yX05WX0RlZmlu ZVNwYWNlOiAweCV4KVxuIiwgYXJncy0+dHBtMl9udmluZGV4LCByYyk7CisgICAgICByZXR1cm4g R1JVQl9FUlJfQkFEX0RFVklDRTsKKyAgICB9CisKKyAgYXV0aENtZC5zZXNzaW9uSGFuZGxlID0g VFBNX1JTX1BXOworICBncnViX21lbWNweSAobnZfZGF0YS5idWZmZXIsIGRhdGEsIGRhdGFfc2l6 ZSk7CisgIG52X2RhdGEuc2l6ZSA9IChncnViX3VpbnQxNl90KSBkYXRhX3NpemU7CisKKyAgcmMg PSBncnViX3RwbTJfbnZfd3JpdGUgKFRQTV9SSF9PV05FUiwgYXJncy0+dHBtMl9udmluZGV4LCAm YXV0aENtZCwgJm52X2RhdGEsIDApOworICBpZiAocmMgIT0gVFBNX1JDX1NVQ0NFU1MpCisgICAg eworICAgICAgZnByaW50ZiAoc3RkZXJyLCAiRmFpbGVkIHRvIHdyaXRlIGRhdGEgaW50byAweCV4 IChUUE0yX05WX1dyaXRlOiAweCV4KVxuIiwgYXJncy0+dHBtMl9udmluZGV4LCByYyk7CisgICAg ICByZXR1cm4gR1JVQl9FUlJfQkFEX0RFVklDRTsKKyAgICB9CisKKyAgcmV0dXJuIEdSVUJfRVJS X05PTkU7Cit9CisKIHN0YXRpYyBncnViX2Vycl90CiBwcm90ZWN0X3RwbTJfYWRkIChwcm90ZWN0 X2FyZ3NfdCAqYXJncykKIHsKQEAgLTkxMSw2ICsxMDAxLDggQEAgcHJvdGVjdF90cG0yX2FkZCAo cHJvdGVjdF9hcmdzX3QgKmFyZ3MpCiAgIGdydWJfc2l6ZV90IGtleV9zaXplOwogICBUUE1fSEFO RExFX3Qgc3JrOwogICBUUE0yQl9ESUdFU1RfdCBwb2xpY3lfZGlnZXN0OworICB2b2lkICpvdXRf YnVmID0gTlVMTDsKKyAgaW50IG91dF9idWZfc2l6ZTsKICAgdHBtMl9zZWFsZWRfa2V5X3Qgc2Vh bGVkX2tleTsKIAogICBlcnIgPSBwcm90ZWN0X3RwbTJfb3Blbl9kZXZpY2UgKGFyZ3MtPnRwbTJf ZGV2aWNlKTsKQEAgLTk0MCwxNSArMTAzMiw1MSBAQCBwcm90ZWN0X3RwbTJfYWRkIChwcm90ZWN0 X2FyZ3NfdCAqYXJncykKICAgaWYgKGVyciAhPSBHUlVCX0VSUl9OT05FKQogICAgIGdvdG8gZXhp dDM7CiAKLSAgaWYgKGFyZ3MtPnRwbTJfdHBtMmtleSAhPSAwKQotICAgIGVyciA9IHByb3RlY3Rf dHBtMl9leHBvcnRfdHBtMmtleSAoYXJncywgJnNlYWxlZF9rZXkpOworICBpZiAoYXJncy0+dHBt Ml90cG0ya2V5ID09IHRydWUpCisgICAgeworICAgICAgZXJyID0gcHJvdGVjdF90cG0yX2V4cG9y dF90cG0ya2V5IChhcmdzLCAmc2VhbGVkX2tleSwgJm91dF9idWYsICZvdXRfYnVmX3NpemUpOwor ICAgICAgaWYgKGVyciAhPSBHUlVCX0VSUl9OT05FKQorCXsKKwkgIGZwcmludGYgKHN0ZGVyciwg Tl8oIkNvdWxkIG5vdCBleHBvcnQgdG8gVFBNIDIuMCBLZXkgRmlsZSBmb3JtYXRcbiIpKTsKKwkg IGdvdG8gZXhpdDM7CisJfQorICAgIH0KICAgZWxzZQotICAgIGVyciA9IHByb3RlY3RfdHBtMl9l eHBvcnRfc2VhbGVkX2tleSAoYXJncy0+dHBtMl9vdXRmaWxlLCAmc2VhbGVkX2tleSk7Ci0gIGlm IChlcnIgIT0gR1JVQl9FUlJfTk9ORSkKLSAgICBnb3RvIGV4aXQzOworICAgIHsKKyAgICAgIGVy ciA9IHByb3RlY3RfdHBtMl9leHBvcnRfcmF3ICgmc2VhbGVkX2tleSwgJm91dF9idWYsICZvdXRf YnVmX3NpemUpOworICAgICAgaWYgKGVyciAhPSBHUlVCX0VSUl9OT05FKQorCXsKKwkgIGZwcmlu dGYgKHN0ZGVyciwgTl8oIkNvdWxkIG5vdCBleHBvcnQgdG8gdGhlIHJhdyBmb3JtYXRcbiIpKTsK KwkgIGdvdG8gZXhpdDM7CisJfQorICAgIH0KKworICBpZiAoYXJncy0+dHBtMl9vdXRmaWxlICE9 IE5VTEwpCisgICAgeworICAgICAgZXJyID0gcHJvdGVjdF93cml0ZV9maWxlIChhcmdzLT50cG0y X291dGZpbGUsIG91dF9idWYsIG91dF9idWZfc2l6ZSk7CisgICAgICBpZiAoZXJyICE9IEdSVUJf RVJSX05PTkUpCisJeworCSAgZnByaW50ZiAoc3RkZXJyLCBOXygiQ291bGQgbm90IHdyaXRlIGtl eSBmaWxlICglcykuXG4iKSwgc3RyZXJyb3IgKGVycm5vKSk7CisJICBnb3RvIGV4aXQzOworCX0K KyAgICB9CisKKyAgaWYgKFRQTV9IVF9JU19OVklOREVYIChhcmdzLT50cG0yX252aW5kZXgpID09 IHRydWUpCisgICAgeworICAgICAgZXJyID0gcHJvdGVjdF90cG0yX2V4cG9ydF9udmluZGV4IChh cmdzLCBvdXRfYnVmLCBvdXRfYnVmX3NpemUpOworICAgICAgaWYgKGVyciAhPSBHUlVCX0VSUl9O T05FKQorCWdvdG8gZXhpdDM7CisgICAgfQorICBlbHNlIGlmIChUUE1fSFRfSVNfUEVSU0lTVEVO VCAoYXJncy0+dHBtMl9udmluZGV4KSA9PSB0cnVlKQorICAgIHsKKyAgICAgIGVyciA9IHByb3Rl Y3RfdHBtMl9leHBvcnRfcGVyc2lzdGVudCAoYXJncywgc3JrLCAmc2VhbGVkX2tleSk7CisgICAg ICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCisJZ290byBleGl0MzsKKyAgICB9CiAKICBleGl0 MzoKICAgZ3J1Yl90cG0yX2ZsdXNoY29udGV4dCAoc3JrKTsKKyAgZ3J1Yl9mcmVlIChvdXRfYnVm KTsKIAogIGV4aXQyOgogICBncnViX2ZyZWUgKGtleSk7CkBAIC05NjAsMTQgKzEwODgsNjYgQEAg cHJvdGVjdF90cG0yX2FkZCAocHJvdGVjdF9hcmdzX3QgKmFyZ3MpCiB9CiAKIHN0YXRpYyBncnVi X2Vycl90Ci1wcm90ZWN0X3RwbTJfcmVtb3ZlIChwcm90ZWN0X2FyZ3NfdCAqYXJncykKK3Byb3Rl Y3RfdHBtMl9ldmljdCAoVFBNX0hBTkRMRV90IGhhbmRsZSkKIHsKICAgVFBNX1JDX3QgcmM7CiAg IFRQTTJCX1BVQkxJQ190IHB1YmxpYzsKLSAgVFBNU19BVVRIX0NPTU1BTkRfdCBhdXRoQ29tbWFu ZCA9IHswfTsKKyAgVFBNU19BVVRIX0NPTU1BTkRfdCBhdXRoQ21kID0gezB9OworCisgIC8qIEZp bmQgdGhlIHBlcnNpc3RlbnQgaGFuZGxlICovCisgIHJjID0gZ3J1Yl90cG0yX3JlYWRwdWJsaWMg KGhhbmRsZSwgTlVMTCwgJnB1YmxpYyk7CisgIGlmIChyYyAhPSBUUE1fUkNfU1VDQ0VTUykKKyAg ICB7CisgICAgICBmcHJpbnRmIChzdGRlcnIsICJIYW5kbGUgMHgleCBub3QgZm91bmQuXG4iLCBo YW5kbGUpOworICAgICAgcmV0dXJuIEdSVUJfRVJSX0JBRF9BUkdVTUVOVDsKKyAgICB9CisKKyAg LyogRXZpY3QgdGhlIHBlcnNpc3RlbnQgaGFuZGxlICovCisgIGF1dGhDbWQuc2Vzc2lvbkhhbmRs ZSA9IFRQTV9SU19QVzsKKyAgcmMgPSBncnViX3RwbTJfZXZpY3Rjb250cm9sIChUUE1fUkhfT1dO RVIsIGhhbmRsZSwgJmF1dGhDbWQsIGhhbmRsZSwgTlVMTCk7CisgIGlmIChyYyAhPSBUUE1fUkNf U1VDQ0VTUykKKyAgICB7CisgICAgICBmcHJpbnRmIChzdGRlcnIsICJGYWlsZWQgdG8gZXZpY3Qg aGFuZGxlIDB4JXggKFRQTTJfRXZpY3RDb250cm9sOiAweCV4KS5cbiIsIGhhbmRsZSwgcmMpOwor ICAgICAgcmV0dXJuIEdSVUJfRVJSX0JBRF9ERVZJQ0U7CisgICAgfQorCisgIHJldHVybiBHUlVC X0VSUl9OT05FOworfQorCitzdGF0aWMgZ3J1Yl9lcnJfdAorcHJvdGVjdF90cG0yX252X3VuZGVm aW5lIChUUE1fSEFORExFX3QgaGFuZGxlKQoreworICBUUE1fUkNfdCByYzsKKyAgVFBNMkJfTlZf UFVCTElDX3QgbnZfcHVibGljOworICBUUE1TX0FVVEhfQ09NTUFORF90IGF1dGhDbWQgPSB7MH07 CisgIFRQTTJCX05BTUVfdCBudl9uYW1lOworCisgIC8qIEZpbmQgdGhlIG52aW5kZXggaGFuZGxl ICovCisgIHJjID0gZ3J1Yl90cG0yX252X3JlYWRwdWJsaWMgKGhhbmRsZSwgTlVMTCwgJm52X3B1 YmxpYywgJm52X25hbWUpOworICBpZiAocmMgIT0gVFBNX1JDX1NVQ0NFU1MpCisgICAgeworICAg ICAgZnByaW50ZiAoc3RkZXJyLCAiSGFuZGxlIDB4JXggbm90IGZvdW5kLlxuIiwgaGFuZGxlKTsK KyAgICAgIHJldHVybiBHUlVCX0VSUl9CQURfQVJHVU1FTlQ7CisgICAgfQorCisgIC8qIFVuZGVm aW5lIHRoZSBudmluZGV4IGhhbmRsZSAqLworICBhdXRoQ21kLnNlc3Npb25IYW5kbGUgPSBUUE1f UlNfUFc7CisgIHJjID0gZ3J1Yl90cG0yX252X3VuZGVmaW5lc3BhY2UgKFRQTV9SSF9PV05FUiwg aGFuZGxlLCAmYXV0aENtZCk7CisgIGlmIChyYyAhPSBUUE1fUkNfU1VDQ0VTUykKKyAgICB7Cisg ICAgICBmcHJpbnRmIChzdGRlcnIsICJGYWlsZWQgdG8gdW5kZWZpbmUgaGFuZGxlIDB4JXggKFRQ TTJfTlZfVW5kZWZpbmVTcGFjZTogMHgleCkuXG4iLCBoYW5kbGUsIHJjKTsKKyAgICAgIHJldHVy biBHUlVCX0VSUl9CQURfREVWSUNFOworICAgIH0KKworICByZXR1cm4gR1JVQl9FUlJfTk9ORTsK K30KKworc3RhdGljIGdydWJfZXJyX3QKK3Byb3RlY3RfdHBtMl9yZW1vdmUgKHByb3RlY3RfYXJn c190ICphcmdzKQorewogICBncnViX2Vycl90IGVycjsKIAotICBpZiAoYXJncy0+dHBtMl9ldmlj dCA9PSAwKQorICBpZiAoYXJncy0+dHBtMl9ldmljdCA9PSBmYWxzZSkKICAgICB7CiAgICAgICBw cmludGYgKCItLXRwbTItZXZpY3Qgbm90IHNwZWNpZmllZCwgbm90aGluZyB0byBkby5cbiIpOwog ICAgICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CkBAIC05NzcsMzUgKzExNTcsNDEgQEAgcHJvdGVj dF90cG0yX3JlbW92ZSAocHJvdGVjdF9hcmdzX3QgKmFyZ3MpCiAgIGlmIChlcnIgIT0gR1JVQl9F UlJfTk9ORSkKICAgICByZXR1cm4gZXJyOwogCi0gIC8qIEZpbmQgU1JLICovCi0gIHJjID0gZ3J1 Yl90cG0yX3JlYWRwdWJsaWMgKGFyZ3MtPnRwbTJfc3JrLCBOVUxMLCAmcHVibGljKTsKLSAgaWYg KHJjICE9IFRQTV9SQ19TVUNDRVNTKQorICBpZiAoYXJncy0+dHBtMl9zcmsgIT0gMCkKICAgICB7 Ci0gICAgICBmcHJpbnRmIChzdGRlcnIsICJTUksgd2l0aCBoYW5kbGUgMHgleCBub3QgZm91bmQu XG4iLCBhcmdzLT50cG0yX3Nyayk7Ci0gICAgICBlcnIgPSBHUlVCX0VSUl9CQURfQVJHVU1FTlQ7 Ci0gICAgICBnb3RvIGV4aXQxOworICAgICAgZXJyID0gcHJvdGVjdF90cG0yX2V2aWN0IChhcmdz LT50cG0yX3Nyayk7CisgICAgICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCisJZ290byBleGl0 OwogICAgIH0KIAotICAvKiBFdmljdCBTUksgKi8KLSAgYXV0aENvbW1hbmQuc2Vzc2lvbkhhbmRs ZSA9IFRQTV9SU19QVzsKLQotICByYyA9IGdydWJfdHBtMl9ldmljdGNvbnRyb2wgKFRQTV9SSF9P V05FUiwgYXJncy0+dHBtMl9zcmssICZhdXRoQ29tbWFuZCwgYXJncy0+dHBtMl9zcmssIE5VTEwp OwotICBpZiAocmMgIT0gVFBNX1JDX1NVQ0NFU1MpCisgIGlmIChhcmdzLT50cG0yX252aW5kZXgg IT0gMCkKICAgICB7Ci0gICAgICBmcHJpbnRmIChzdGRlcnIsICJGYWlsZWQgdG8gZXZpY3QgU1JL IHdpdGggaGFuZGxlIDB4JXggKFRQTTJfRXZpY3RDb250cm9sOiAweCV4KS5cbiIsIGFyZ3MtPnRw bTJfc3JrLCByYyk7Ci0gICAgICBlcnIgPSBHUlVCX0VSUl9CQURfREVWSUNFOwotICAgICAgZ290 byBleGl0MjsKKyAgICAgIGlmIChUUE1fSFRfSVNfUEVSU0lTVEVOVCAoYXJncy0+dHBtMl9udmlu ZGV4KSA9PSB0cnVlKQorCXsKKwkgIGVyciA9IHByb3RlY3RfdHBtMl9ldmljdCAoYXJncy0+dHBt Ml9udmluZGV4KTsKKwkgIGlmIChlcnIgIT0gR1JVQl9FUlJfTk9ORSkKKwkgICAgZ290byBleGl0 OworCX0KKyAgICAgIGVsc2UgaWYgKFRQTV9IVF9JU19OVklOREVYIChhcmdzLT50cG0yX252aW5k ZXgpID09IHRydWUpCisJeworCSAgZXJyID0gcHJvdGVjdF90cG0yX252X3VuZGVmaW5lIChhcmdz LT50cG0yX252aW5kZXgpOworCSAgaWYgKGVyciAhPSBHUlVCX0VSUl9OT05FKQorCSAgICBnb3Rv IGV4aXQ7CisJfQorICAgICAgZWxzZQorCXsKKwkgIGZwcmludGYgKHN0ZGVyciwgIlVuc3VwcG9y dGVkIGhhbmRsZSAweCV4XG4iLCBhcmdzLT50cG0yX252aW5kZXgpOworCSAgZXJyID0gR1JVQl9F UlJfQkFEX0FSR1VNRU5UOworCSAgZ290byBleGl0OworCX0KICAgICB9CiAKICAgZXJyID0gR1JV Ql9FUlJfTk9ORTsKIAotIGV4aXQyOgotICBncnViX3RwbTJfZmx1c2hjb250ZXh0IChhcmdzLT50 cG0yX3Nyayk7Ci0KLSBleGl0MToKKyBleGl0OgogICBwcm90ZWN0X3RwbTJfY2xvc2VfZGV2aWNl ICgpOwogCi0gIHJldHVybiBHUlVCX0VSUl9OT05FOworICByZXR1cm4gZXJyOwogfQogCiBzdGF0 aWMgZ3J1Yl9lcnJfdApAQCAtMTA0NSw5ICsxMjMxLDM2IEBAIHByb3RlY3RfdHBtMl9hcmdzX3Zl cmlmeSAocHJvdGVjdF9hcmdzX3QgKmFyZ3MpCiAJICByZXR1cm4gR1JVQl9FUlJfQkFEX0FSR1VN RU5UOwogCX0KIAotICAgICAgaWYgKGFyZ3MtPnRwbTJfb3V0ZmlsZSA9PSBOVUxMKQorICAgICAg aWYgKGFyZ3MtPnRwbTJfb3V0ZmlsZSA9PSBOVUxMICYmIGFyZ3MtPnRwbTJfbnZpbmRleCA9PSAw KQogCXsKLQkgIGZwcmludGYgKHN0ZGVyciwgTl8oIi0tdHBtMi1vdXRmaWxlIG11c3QgYmUgc3Bl Y2lmaWVkLlxuIikpOworCSAgZnByaW50ZiAoc3RkZXJyLCBOXygiLS10cG0yLW91dGZpbGUgb3Ig LS10cG0yLW52aW5kZXggbXVzdCBiZSBzcGVjaWZpZWQuXG4iKSk7CisJICByZXR1cm4gR1JVQl9F UlJfQkFEX0FSR1VNRU5UOworCX0KKworICAgICAgaWYgKGFyZ3MtPnRwbTJfbnZpbmRleCAhPSAw KQorCXsKKwkgIGlmIChhcmdzLT50cG0yX3RwbTJrZXkgPT0gdHJ1ZSAmJiBUUE1fSFRfSVNfUEVS U0lTVEVOVCAoYXJncy0+dHBtMl9udmluZGV4KSA9PSB0cnVlKQorCSAgICB7CisJICAgICAgZnBy aW50ZiAoc3RkZXJyLCBOXygiUGVyc2lzdGVudCBoYW5kbGUgZG9lcyBub3Qgc3VwcG9ydCBUUE0g Mi4wIEtleSBGaWxlIGZvcm1hdC5cbiIpKTsKKwkgICAgICByZXR1cm4gR1JVQl9FUlJfQkFEX0FS R1VNRU5UOworCSAgICB9CisKKwkgIGlmIChUUE1fSFRfSVNfUEVSU0lTVEVOVCAoYXJncy0+dHBt Ml9udmluZGV4KSA9PSBmYWxzZSAmJiBUUE1fSFRfSVNfTlZJTkRFWCAoYXJncy0+dHBtMl9udmlu ZGV4KSA9PSBmYWxzZSkKKwkgICAgeworCSAgICAgIGZwcmludGYgKHN0ZGVyciwgTl8oIi0tdHBt Mi1udmluZGV4IG11c3QgYmUgYSBwZXJzaXN0ZW50IG9yIE5WIGluZGV4IGhhbmRsZS5cbiIpKTsK KwkgICAgICByZXR1cm4gR1JVQl9FUlJfQkFEX0FSR1VNRU5UOworCSAgICB9CisKKwkgIGlmIChh cmdzLT50cG0yX252aW5kZXggPT0gYXJncy0+dHBtMl9zcmspCisJICAgIHsKKwkgICAgICBmcHJp bnRmIChzdGRlcnIsIE5fKCItLXRwbTItbnZpbmRleCBhbmQgLS10cG0yLXNyayBtdXN0IGJlIGRp ZmZlcmVudC5cbiIpKTsKKwkgICAgICByZXR1cm4gR1JVQl9FUlJfQkFEX0FSR1VNRU5UOworCSAg ICB9CisJfQorCisgICAgICBpZiAoYXJncy0+dHBtMl9zcmsgIT0gMCAmJiBUUE1fSFRfSVNfUEVS U0lTVEVOVChhcmdzLT50cG0yX3NyaykgPT0gZmFsc2UpCisJeworCSAgZnByaW50ZiAoc3RkZXJy LCBOXygiLS10cG0yLXNyayBtdXN0IGJlIGEgcGVyc2lzdGVudCBoYW5kbGUsIGUuZy4gMHg4MTAw MDAwMC5cbiIpKTsKIAkgIHJldHVybiBHUlVCX0VSUl9CQURfQVJHVU1FTlQ7CiAJfQogCkBAIC0x MDk5LDkgKzEzMTIsOSBAQCBwcm90ZWN0X3RwbTJfYXJnc192ZXJpZnkgKHByb3RlY3RfYXJnc190 ICphcmdzKQogCSAgcmV0dXJuIEdSVUJfRVJSX0JBRF9BUkdVTUVOVDsKIAl9CiAKLSAgICAgIGlm IChhcmdzLT50cG0yX3NyayA9PSAwKQorICAgICAgaWYgKGFyZ3MtPnRwbTJfc3JrID09IDAgJiYg YXJncy0+dHBtMl9udmluZGV4ID09IDApCiAJewotCSAgZnByaW50ZiAoc3RkZXJyLCBOXygiLS10 cG0yLXNyayBpcyBub3Qgc3BlY2lmaWVkIHdoZW4gLS1hY3Rpb24gaXMgJ3JlbW92ZScuXG4iKSk7 CisJICBmcHJpbnRmIChzdGRlcnIsIE5fKCJtaXNzaW5nIC0tdHBtMi1zcmsgb3IgLS10cG0yLW52 aW5kZXggZm9yIC0tYWN0aW9uICdyZW1vdmUnLlxuIikpOwogCSAgcmV0dXJuIEdSVUJfRVJSX0JB RF9BUkdVTUVOVDsKIAl9CiAKQEAgLTEyNzQsNyArMTQ4Nyw3IEBAIHByb3RlY3RfYXJncF9wYXJz ZXIgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKQogCSAgcmV0 dXJuIEVJTlZBTDsKIAl9CiAKLSAgICAgIGFyZ3MtPnRwbTJfZXZpY3QgPSAxOworICAgICAgYXJn cy0+dHBtMl9ldmljdCA9IHRydWU7CiAgICAgICBhcmdzLT5hcmdzIHw9IFBST1RFQ1RfQVJHX1RQ TTJfRVZJQ1Q7CiAgICAgICBicmVhazsKIApAQCAtMTI4NSwxMCArMTQ5OCwyOCBAQCBwcm90ZWN0 X2FyZ3BfcGFyc2VyIChpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0 ZSkKIAkgIHJldHVybiBFSU5WQUw7CiAJfQogCi0gICAgICBhcmdzLT50cG0yX3RwbTJrZXkgPSAx OworICAgICAgYXJncy0+dHBtMl90cG0ya2V5ID0gdHJ1ZTsKICAgICAgIGFyZ3MtPmFyZ3MgfD0g UFJPVEVDVF9BUkdfVFBNMl9UUE0yS0VZOwogICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFBST1RF Q1RfT1BUX1RQTTJfTlZJTkRFWDoKKyAgICAgIGlmIChhcmdzLT5hcmdzICYgUFJPVEVDVF9BUkdf VFBNMl9OVklOREVYKQorCXsKKwkgIGZwcmludGYgKHN0ZGVyciwgTl8oIi0tdHBtMi1udmluZGV4 IGNhbiBvbmx5IGJlIHNwZWNpZmllZCBvbmNlLlxuIikpOworCSAgcmV0dXJuIEVJTlZBTDsKKwl9 CisKKyAgICAgIGVyciA9IGdydWJfdHBtMl9wcm90ZWN0b3JfcGFyc2VfdHBtX2hhbmRsZSAoYXJn LCAmYXJncy0+dHBtMl9udmluZGV4KTsKKyAgICAgIGlmIChlcnIgIT0gR1JVQl9FUlJfTk9ORSkK Kwl7CisJICBpZiAoZ3J1Yl9lcnJubyAhPSBHUlVCX0VSUl9OT05FKQorCSAgICBncnViX3ByaW50 X2Vycm9yICgpOworCSAgcmV0dXJuIEVJTlZBTDsKKwl9CisKKyAgICAgIGFyZ3MtPmFyZ3MgfD0g UFJPVEVDVF9BUkdfVFBNMl9OVklOREVYOworICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0Ogog ICAgICAgcmV0dXJuIEFSR1BfRVJSX1VOS05PV047CiAgICAgfQotLSAKMi40My4wCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KR3J1Yi1kZXZlbCBtYWls aW5nIGxpc3QKR3J1Yi1kZXZlbEBnbnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFu L2xpc3RpbmZvL2dydWItZGV2ZWwK