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 DBFB7C83F0A for ; Wed, 9 Jul 2025 11:50:02 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uZTIy-00074n-GJ; Wed, 09 Jul 2025 07:49:41 -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 1uZTIf-0006W6-0M for grub-devel@gnu.org; Wed, 09 Jul 2025 07:49:22 -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 1uZTIc-0006zH-Cz for grub-devel@gnu.org; Wed, 09 Jul 2025 07:49:20 -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 5699FgZa016141; Wed, 9 Jul 2025 11:49:14 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=Y/kqRk9u3IELAX336 3FqeLhtkFWcMJJPVwi99eZujiY=; b=EHlCE8RMs00T7L2TjHuUJpG5T95LPEKru p8h0WbVF/vP2sF//KPKp3Xq4sBLo67SS7ENrie/vs+tpZdeFvAav4HyrQnkokGHu 6sTlIW6Kxygqea9HYJ5aevCioTvlHU/RFhkWQCr+3aVhdgBUFklqiPU9YbHYAZB/ K3/vKDLy8xn6A8tbdvAIwSiecBDEF7krMbERjs8cl0zZaMmM234Yejwy21cogYtC nbolq6Nh2iA6+cc4nVhbVIgEIWwlTAOhoxRlzGlt8UNBV59SWZ5BNRYDMaVOMMPZ xcdpSHTBOqDdl4Dfun0ajrE7wNEEr9vsuSPbW+B6O+xAC/sOn4yhQ== Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47puss61qm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Jul 2025 11:49:14 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 5698O15Q024277; Wed, 9 Jul 2025 11:49:13 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 47qh32fnx1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 09 Jul 2025 11:49:13 +0000 Received: from smtpav07.fra02v.mail.ibm.com (smtpav07.fra02v.mail.ibm.com [10.20.54.106]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 569Bn9jD52429076 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 9 Jul 2025 11:49:09 GMT Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 93C8E2004B; Wed, 9 Jul 2025 11:49:09 +0000 (GMT) Received: from smtpav07.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 24FF120040; Wed, 9 Jul 2025 11:49:07 +0000 (GMT) Received: from localhost.localdomain (unknown [9.39.27.9]) by smtpav07.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 9 Jul 2025 11:49:06 +0000 (GMT) From: Sudhakar Kuppusamy To: grub-devel@gnu.org Cc: jan.setjeeilers@oracle.com, julian.klode@canonical.com, mate.kukri@canonical.com, pjones@redhat.com, msuchanek@suse.com, mlewando@redhat.com, nayna@linux.ibm.com, ltcgcw@linux.vnet.ibm.com, ssrish@linux.ibm.com, stefanb@linux.ibm.com, avnish@linux.ibm.com, Sudhakar Kuppusamy , dja@axtens.net Subject: [PATCH v4 18/23] appendedsig: verify the kernel using db and dbx lists Date: Wed, 9 Jul 2025 17:15:35 +0530 Message-Id: <20250709114540.58608-19-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250709114540.58608-1-sudhakar@linux.ibm.com> References: <20250709114540.58608-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=Vaj3PEp9 c=1 sm=1 tr=0 ts=686e573a cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=Wb1JkmetP80A:10 a=VnNF1IyMAAAA:8 a=6gLV1H-MzSBbhAshMQIA:9 X-Proofpoint-GUID: mztcjYabOUmYc4llZqtluJLxZJjyrdtF X-Proofpoint-ORIG-GUID: mztcjYabOUmYc4llZqtluJLxZJjyrdtF X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA5MDEwNiBTYWx0ZWRfXxZCfQtKdMzat pgI3DHvYvhCStcYeCtUFlCxUirvAuS1O21YHUpGXmrhiIoAg4RI/Dd4xFzrh/EC0HjpjikERcvV 7RDQYD6E8NXHm96Nc7V4G9HuFO/q3oJs23+TQw2LaaB8+K5Ory6xevjC3ExX7EwdyrlRtgUBS/D MJYJF0013h90QCbnMB/Y0/vH6PgRCJ8wGPXA9L1Dld6e8PjlqrOobJGEoinnzeEHZvXTCjM7vMv UvQrcarrB07CcEdSQw1BaYZjHs3pBrPh/+WeBcFPXrM0bra4L6AMfHx55qiaBWoEzLqIkS43eEu YVvhJrFJQKTOL8+5GK537t8u+/Mq0X2us7t3eOu6lRcCuHt4v6NeRtN6U0U0nPFSzz1xYvkww3C uRw6GMV4s81/xZj6q+9YYXEdmUw2Hy69Y50glL3zlpQUlHCi1pFbaDUdpGbLIBkIMjC5EMIe X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-09_02,2025-07-08_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 mlxlogscore=999 suspectscore=0 clxscore=1015 adultscore=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 bulkscore=0 mlxscore=0 spamscore=0 phishscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2507090106 Received-SPF: pass client-ip=148.163.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_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 VG8gdmVyaWZ5IHRoZSBrZXJuZWwncyBzaWduYXR1cmU6IHZlcmlmeSB0aGUga2VybmVsIGJpbmFy eSBhZ2FpbnN0IGxpc3RzIG9mIGJpbmFyeSBoYXNoZXMKdGhhdCBhcmUgZWl0aGVyIGluIGRieCBv ciBkYiBsaXN0LiBJZiBpdCBpcyBub3QgbGlzdCBpbiBlaXRoZXIgZGIgb3IgZGJ4IGxpc3QKdGhl biB0aGUgdHJ1c3RlZCBrZXlzIGZyb20gdGhlIGRiIGxpc3QgYXJlIHVzZWQgdG8gdmVyaWZ5IHRo ZSBzaWduYXR1cmUuCgpTaWduZWQtb2ZmLWJ5OiBTdWRoYWthciBLdXBwdXNhbXkgPHN1ZGhha2Fy QGxpbnV4LmlibS5jb20+ClJldmlld2VkLWJ5OiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4 LmlibS5jb20+ClJldmlld2VkLWJ5OiBBdm5pc2ggQ2hvdWhhbiA8YXZuaXNoQGxpbnV4LmlibS5j b20+Ci0tLQogZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMgfCAx NzMgKysrKysrKysrKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEyNiBpbnNlcnRpb25zKCsp LCA0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5k ZWRzaWcvYXBwZW5kZWRzaWcuYyBiL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBl bmRlZHNpZy5jCmluZGV4IDQ4MTA0ZDYzZC4uMTIyNGZhYjllIDEwMDY0NAotLS0gYS9ncnViLWNv cmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYworKysgYi9ncnViLWNvcmUvY29t bWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYwpAQCAtNDQ3LDYgKzQ0Nyw3NyBAQCBleHRy YWN0X2FwcGVuZGVkX3NpZ25hdHVyZSAoY29uc3QgZ3J1Yl91aW50OF90ICpidWYsIGdydWJfc2l6 ZV90IGJ1ZnNpemUsCiAgIHJldHVybiBwYXJzZV9wa2NzN19zaWduZWREYXRhIChhcHBzaWdkYXRh LCBwa2NzN19zaXplLCAmc2lnLT5wa2NzNyk7CiB9CiAKK3N0YXRpYyBncnViX2Vycl90CitnZXRf YmluYXJ5X2hhc2ggKGNvbnN0IGdydWJfc2l6ZV90IGJpbmFyeV9oYXNoX3NpemUsIGNvbnN0IGdy dWJfdWludDhfdCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgY29uc3QgZ3J1Yl9zaXplX3QgZGF0 YV9zaXplLCBncnViX3VpbnQ4X3QgKmhhc2gsIGdydWJfc2l6ZV90ICpoYXNoX3NpemUpCit7Cisg IGdydWJfcGFja2VkX2d1aWRfdCBndWlkID0geyAwIH07CisKKyAgLyogc3VwcG9ydCBTSEEyNTYs IFNIQTM4NCBhbmQgU0hBNTEyIGZvciBiaW5hcnkgaGFzaCAqLworICBpZiAoYmluYXJ5X2hhc2hf c2l6ZSA9PSAzMikKKyAgICBncnViX21lbWNweSAoJmd1aWQsICZHUlVCX1BLU19DRVJUX1NIQTI1 Nl9HVUlELCBHUlVCX0dVSURfU0laRSk7CisgIGVsc2UgaWYgKGJpbmFyeV9oYXNoX3NpemUgPT0g NDgpCisgICAgZ3J1Yl9tZW1jcHkgKCZndWlkLCAmR1JVQl9QS1NfQ0VSVF9TSEEzODRfR1VJRCwg R1JVQl9HVUlEX1NJWkUpOworICBlbHNlIGlmIChiaW5hcnlfaGFzaF9zaXplID09IDY0KQorICAg IGdydWJfbWVtY3B5ICgmZ3VpZCwgJkdSVUJfUEtTX0NFUlRfU0hBNTEyX0dVSUQsIEdSVUJfR1VJ RF9TSVpFKTsKKyAgZWxzZQorICAgIHsKKyAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2ln IiwgInVuc3VwcG9ydGVkIGhhc2ggdHlwZSAoJSIgUFJJdUdSVUJfU0laRSAiKSBhbmQgIgorICAg ICAgICAgICAgICAgICAgICAic2tpcHBlZCB0aGUgYmluYXJ5IGhhc2hcbiIsIGJpbmFyeV9oYXNo X3NpemUpOworICAgICAgcmV0dXJuIEdSVUJfRVJSX1VOS05PV05fQ09NTUFORDsKKyAgICB9CisK KyAgcmV0dXJuIGdldF9oYXNoICgmZ3VpZCwgZGF0YSwgZGF0YV9zaXplLCBoYXNoLCBoYXNoX3Np emUpOworfQorCisvKgorICogVmVyaWZ5IGJpbmFyeSBoYXNoIGFnYWluc3QgdGhlIGRiIGFuZCBk YnggbGlzdC4KKyAqIFRoZSBmb2xsb3dpbmcgZXJyb3JzIGNhbiBvY2N1cjoKKyAqICAtIEdSVUJf RVJSX0JBRF9TSUdOQVRVUkU6IGluZGljYXRlcyB0aGF0IHRoZSBoYXNoIGlzIGluIGRieCBsaXN0 LgorICogIC0gR1JVQl9FUlJfRU9GOiB0aGUgaGFzaCBjb3VsZCBub3QgYmUgZm91bmQgaW4gdGhl IGRiIGFuZCBkYnggbGlzdC4KKyAqICAtIEdSVUJfRVJSX05PTkU6IHRoZSBoYXNoIGlzIGZvdW5k IGluIGRiIGxpc3QuCisgKi8KK3N0YXRpYyBncnViX2Vycl90Cit2ZXJpZnlfYmluYXJ5X2hhc2gg KGNvbnN0IGdydWJfdWludDhfdCAqZGF0YSwgY29uc3QgZ3J1Yl9zaXplX3QgZGF0YV9zaXplKQor eworICBncnViX2Vycl90IHJjID0gR1JVQl9FUlJfTk9ORTsKKyAgZ3J1Yl9zaXplX3QgaSA9IDAs IGhhc2hfc2l6ZSA9IDA7CisgIGdydWJfdWludDhfdCBoYXNoW0dSVUJfTUFYX0hBU0hfU0laRV0g PSB7IDAgfTsKKworICBmb3IgKGkgPSAwOyBpIDwgZGJ4LnNpZ25hdHVyZV9lbnRyaWVzOyBpKysp CisgICAgeworICAgICAgcmMgPSBnZXRfYmluYXJ5X2hhc2ggKGRieC5zaWduYXR1cmVfc2l6ZVtp XSwgZGF0YSwgZGF0YV9zaXplLCBoYXNoLCAmaGFzaF9zaXplKTsKKyAgICAgIGlmIChyYyAhPSBH UlVCX0VSUl9OT05FKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgaWYgKGhhc2hfc2l6ZSA9 PSBkYnguc2lnbmF0dXJlX3NpemVbaV0gJiYKKyAgICAgICAgICBncnViX21lbWNtcCAoZGJ4LnNp Z25hdHVyZXNbaV0sIGhhc2gsIGhhc2hfc2l6ZSkgPT0gMCkKKyAgICAgICAgeworICAgICAgICAg IGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInRoZSBiaW5hcnkgaGFzaCAoJTAyeCUwMngl MDJ4JTAyeCkgaXMgcHJlc2VudCBpbiB0aGUgZGJ4IGxpc3RcbiIsCisgICAgICAgICAgICAgICAg ICAgICAgICBoYXNoWzBdLCBoYXNoWzFdLCBoYXNoWzJdLCBoYXNoWzNdKTsKKyAgICAgICAgICBy ZXR1cm4gR1JVQl9FUlJfQkFEX1NJR05BVFVSRTsKKyAgICAgICAgfQorICAgIH0KKworICBmb3Ig KGkgPSAwOyBpIDwgZGIuc2lnbmF0dXJlX2VudHJpZXM7IGkrKykKKyAgICB7CisgICAgICByYyA9 IGdldF9iaW5hcnlfaGFzaCAoZGIuc2lnbmF0dXJlX3NpemVbaV0sIGRhdGEsIGRhdGFfc2l6ZSwg aGFzaCwgJmhhc2hfc2l6ZSk7CisgICAgICBpZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICAg ICAgY29udGludWU7CisKKyAgICAgIGlmIChoYXNoX3NpemUgPT0gZGIuc2lnbmF0dXJlX3NpemVb aV0gJiYKKyAgICAgICAgICBncnViX21lbWNtcCAoZGIuc2lnbmF0dXJlc1tpXSwgaGFzaCwgaGFz aF9zaXplKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5k ZWRzaWciLCAidmVyaWZpZWQgd2l0aCBhIHRydXN0ZWQgYmluYXJ5IGhhc2ggKCUwMnglMDJ4JTAy eCUwMngpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaGFzaFswXSwgaGFzaFsxXSwgaGFz aFsyXSwgaGFzaFszXSk7CisgICAgICAgICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CisgICAgICAg IH0KKyAgICB9CisKKyAgcmV0dXJuIEdSVUJfRVJSX0VPRjsKK30KKworLyogVmVyaWZ5IHRoZSBr ZXJuZWwncyBpbnRlZ3JpdHkgdXNpbmcgZGIgYW5kIGRieCBsaXN0ICovCiBzdGF0aWMgZ3J1Yl9l cnJfdAogZ3J1Yl92ZXJpZnlfYXBwZW5kZWRfc2lnbmF0dXJlIChjb25zdCBncnViX3VpbnQ4X3Qg KmJ1ZiwgZ3J1Yl9zaXplX3QgYnVmc2l6ZSkKIHsKQEAgLTQ2MSw3ICs1MzIsNyBAQCBncnViX3Zl cmlmeV9hcHBlbmRlZF9zaWduYXR1cmUgKGNvbnN0IGdydWJfdWludDhfdCAqYnVmLCBncnViX3Np emVfdCBidWZzaXplKQogICBzdHJ1Y3QgcGtjczdfc2lnbmVySW5mbyAqc2k7CiAgIGludCBpOwog Ci0gIGlmICghZGIuY2VydF9lbnRyaWVzKQorICBpZiAoIWRiLmNlcnRfZW50cmllcyAmJiAhZGIu c2lnbmF0dXJlX2VudHJpZXMpCiAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9T SUdOQVRVUkUsICJubyB0cnVzdGVkIGtleXMgdG8gdmVyaWZ5IGFnYWluc3QuIik7CiAKICAgZXJy ID0gZXh0cmFjdF9hcHBlbmRlZF9zaWduYXR1cmUgKGJ1ZiwgYnVmc2l6ZSwgJnNpZyk7CkBAIC00 NjksNTkgKzU0MCw2NyBAQCBncnViX3ZlcmlmeV9hcHBlbmRlZF9zaWduYXR1cmUgKGNvbnN0IGdy dWJfdWludDhfdCAqYnVmLCBncnViX3NpemVfdCBidWZzaXplKQogICAgIHJldHVybiBlcnI7CiAK ICAgZGF0YXNpemUgPSBidWZzaXplIC0gc2lnLnNpZ25hdHVyZV9sZW47Ci0KLSAgZm9yIChpID0g MDsgaSA8IHNpZy5wa2NzNy5zaWduZXJJbmZvX2NvdW50OyBpKyspCisgIC8qIFZlcmlmeSBiaW5h cnkgaGFzaCBhZ2FpbnN0IHRoZSBkYiBhbmQgZGJ4IGxpc3QuICovCisgIGVyciA9IHZlcmlmeV9i aW5hcnlfaGFzaCAoYnVmLCBkYXRhc2l6ZSk7CisgIGlmIChlcnIgPT0gR1JVQl9FUlJfQkFEX1NJ R05BVFVSRSkKICAgICB7Ci0gICAgICAvKgotICAgICAgICogVGhpcyBjb3VsZCBiZSBvcHRpbWlz ZWQgaW4gYSBjb3VwbGUgb2Ygd2F5czoKLSAgICAgICAqIC0gd2UgY291bGQgb25seSBjb21wdXRl IGhhc2hlcyBvbmNlIHBlciBoYXNoIHR5cGUuCi0gICAgICAgKiAtIHdlIGNvdWxkIHRyYWNrIHNp Z25lciBpbmZvcm1hdGlvbiBhbmQgb25seSB2ZXJpZnkgd2hlcmUgSURzIG1hdGNoLgotICAgICAg ICogRm9yIG5vdyB3ZSBkbyB0aGUgbmFpdmUgTyh0cnVzdGVkIGtleXMgKiBwa2NzNyBzaWduZXJz KSBhcHByb2FjaC4KLSAgICAgICAqLwotICAgICAgc2kgPSAmc2lnLnBrY3M3LnNpZ25lckluZm9z W2ldOwotICAgICAgY29udGV4dCA9IGdydWJfemFsbG9jIChzaS0+aGFzaC0+Y29udGV4dHNpemUp OwotICAgICAgaWYgKGNvbnRleHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIGdydWJfZXJybm87 Ci0KLSAgICAgIHNpLT5oYXNoLT5pbml0IChjb250ZXh0KTsKLSAgICAgIHNpLT5oYXNoLT53cml0 ZSAoY29udGV4dCwgYnVmLCBkYXRhc2l6ZSk7Ci0gICAgICBzaS0+aGFzaC0+ZmluYWwgKGNvbnRl eHQpOwotICAgICAgaGFzaCA9IHNpLT5oYXNoLT5yZWFkIChjb250ZXh0KTsKLQotICAgICAgZ3J1 Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAiZGF0YSBzaXplICUiIFBSSXhHUlVCX1NJWkUgIiwg c2lnbmVyICVkIGhhc2ggJTAyeCUwMnglMDJ4JTAyeC4uLlxuIiwKLSAgICAgICAgICAgICAgICAg ICAgZGF0YXNpemUsIGksIGhhc2hbMF0sIGhhc2hbMV0sIGhhc2hbMl0sIGhhc2hbM10pOwotCi0g ICAgICBlcnIgPSBHUlVCX0VSUl9CQURfU0lHTkFUVVJFOwotICAgICAgZm9yIChwayA9IGRiLmNl cnRzOyBwayAhPSBOVUxMOyBwayA9IHBrLT5uZXh0KQorICAgICAgZXJyID0gZ3J1Yl9lcnJvciAo ZXJyLCAiZmFpbGVkIHRvIHZlcmlmeSB0aGUgc2lnbmF0dXJlIGJlY2F1c2UgdGhpcyBiaW5hcnkg aXMgaW4gdGhlIGRieCBsaXN0LlxuIik7CisgICAgICBnb3RvIGNsZWFudXA7CisgICAgfQorICBl bHNlCisgICAgeworICAgICAgZm9yIChpID0gMDsgaSA8IHNpZy5wa2NzNy5zaWduZXJJbmZvX2Nv dW50OyBpKyspCiAgICAgICAgIHsKLSAgICAgICAgICByYyA9IGdydWJfY3J5cHRvX3JzYV9wYWQg KCZoYXNobXBpLCBoYXNoLCBzaS0+aGFzaCwgcGstPm1waXNbMF0pOwotICAgICAgICAgIGlmIChy YyAhPSBHUEdfRVJSX05PX0VSUk9SKQorICAgICAgICAgIC8qCisgICAgICAgICAgICogVGhpcyBj b3VsZCBiZSBvcHRpbWlzZWQgaW4gYSBjb3VwbGUgb2Ygd2F5czoKKyAgICAgICAgICAgKiAtIHdl IGNvdWxkIG9ubHkgY29tcHV0ZSBoYXNoZXMgb25jZSBwZXIgaGFzaCB0eXBlLgorICAgICAgICAg ICAqIC0gd2UgY291bGQgdHJhY2sgc2lnbmVyIGluZm9ybWF0aW9uIGFuZCBvbmx5IHZlcmlmeSB3 aGVyZSBJRHMgbWF0Y2guCisgICAgICAgICAgICogRm9yIG5vdyB3ZSBkbyB0aGUgbmFpdmUgTyh0 cnVzdGVkIGtleXMgKiBwa2NzNyBzaWduZXJzKSBhcHByb2FjaC4KKyAgICAgICAgICAgKi8KKyAg ICAgICAgICBzaSA9ICZzaWcucGtjczcuc2lnbmVySW5mb3NbaV07CisgICAgICAgICAgY29udGV4 dCA9IGdydWJfemFsbG9jIChzaS0+aGFzaC0+Y29udGV4dHNpemUpOworICAgICAgICAgIGlmIChj b250ZXh0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gZ3J1Yl9lcnJubzsKKworICAgICAg ICAgIHNpLT5oYXNoLT5pbml0IChjb250ZXh0KTsKKyAgICAgICAgICBzaS0+aGFzaC0+d3JpdGUg KGNvbnRleHQsIGJ1ZiwgZGF0YXNpemUpOworICAgICAgICAgIHNpLT5oYXNoLT5maW5hbCAoY29u dGV4dCk7CisgICAgICAgICAgaGFzaCA9IHNpLT5oYXNoLT5yZWFkIChjb250ZXh0KTsKKworICAg ICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgImRhdGEgc2l6ZSAlIiBQUkl4R1JV Ql9TSVpFICIsIHNpZ25lciAlZCBoYXNoICUwMnglMDJ4JTAyeCUwMnguLi5cbiIsCisgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhc2l6ZSwgaSwgaGFzaFswXSwgaGFzaFsxXSwgaGFzaFsyXSwg aGFzaFszXSk7CisKKyAgICAgICAgICBlcnIgPSBHUlVCX0VSUl9CQURfU0lHTkFUVVJFOworICAg ICAgICAgIGZvciAocGsgPSBkYi5jZXJ0czsgcGsgIT0gTlVMTDsgcGsgPSBway0+bmV4dCkKICAg ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgZXJyID0gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFE X1NJR05BVFVSRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yIHBhZGRp bmcgaGFzaCBmb3IgUlNBIHZlcmlmaWNhdGlvbjogJWQiLCAoaW50KSByYyk7Ci0gICAgICAgICAg ICAgIGdydWJfZnJlZSAoY29udGV4dCk7Ci0gICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyAg ICAgICAgICAgICAgcmMgPSBncnViX2NyeXB0b19yc2FfcGFkICgmaGFzaG1waSwgaGFzaCwgc2kt Pmhhc2gsIHBrLT5tcGlzWzBdKTsKKyAgICAgICAgICAgICAgaWYgKHJjICE9IEdQR19FUlJfTk9f RVJST1IpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgZXJyID0gZ3J1Yl9l cnJvciAoR1JVQl9FUlJfQkFEX1NJR05BVFVSRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJlcnJvciBwYWRkaW5nIGhhc2ggZm9yIFJTQSB2ZXJpZmljYXRpb246ICVkIiwg KGludCkgcmMpOworICAgICAgICAgICAgICAgICAgZ3J1Yl9mcmVlIChjb250ZXh0KTsKKyAgICAg ICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg ICAgICAgcmMgPSBncnViX2NyeXB0b19wa19yc2EtPnZlcmlmeSAoMCwgaGFzaG1waSwgJnNpLT5z aWdfbXBpLCBway0+bXBpcywgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICAgIGdjcnlfbXBpX3Jl bGVhc2UgKGhhc2htcGkpOworICAgICAgICAgICAgICBpZiAocmMgPT0gR1BHX0VSUl9OT19FUlJP UikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBncnViX2RwcmludGYgKCJh cHBlbmRlZHNpZyIsICJ2ZXJpZnkgc2lnbmVyICVkIHdpdGgga2V5ICclcycgc3VjY2VlZGVkLlxu IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgcGstPnN1YmplY3QpOworICAg ICAgICAgICAgICAgICAgZXJyID0gR1JVQl9FUlJfTk9ORTsKKyAgICAgICAgICAgICAgICAgIGJy ZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBncnViX2RwcmludGYgKCJh cHBlbmRlZHNpZyIsICJ2ZXJpZnkgc2lnbmVyICVkIHdpdGgga2V5ICclcycgZmFpbGVkIHdpdGgg JWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgcGstPnN1YmplY3QsIChpbnQp IHJjKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgIHJjID0gZ3J1Yl9jcnlwdG9fcGtfcnNh LT52ZXJpZnkgKDAsIGhhc2htcGksICZzaS0+c2lnX21waSwgcGstPm1waXMsIE5VTEwsIE5VTEwp OwotICAgICAgICAgIGdjcnlfbXBpX3JlbGVhc2UgKGhhc2htcGkpOwotICAgICAgICAgIGlmIChy YyA9PSBHUEdfRVJSX05PX0VSUk9SKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBncnVi X2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJ2ZXJpZnkgc2lnbmVyICVkIHdpdGgga2V5ICclcycg c3VjY2VlZGVkLlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCBway0+c3ViamVj dCk7Ci0gICAgICAgICAgICAgIGVyciA9IEdSVUJfRVJSX05PTkU7Ci0gICAgICAgICAgICAgIGJy ZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRz aWciLCAidmVyaWZ5IHNpZ25lciAlZCB3aXRoIGtleSAnJXMnIGZhaWxlZCB3aXRoICVkXG4iLAot ICAgICAgICAgICAgICAgICAgICAgICAgaSwgcGstPnN1YmplY3QsIChpbnQpIHJjKTsKKyAgICAg ICAgICBncnViX2ZyZWUgKGNvbnRleHQpOworICAgICAgICAgIGlmIChlcnIgPT0gR1JVQl9FUlJf Tk9ORSkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0KLSAgICAgIGdydWJfZnJlZSAo Y29udGV4dCk7Ci0gICAgICBpZiAoZXJyID09IEdSVUJfRVJSX05PTkUpCi0gICAgICAgIGJyZWFr OwogICAgIH0KLQogICAvKiBJZiB3ZSBkaWRuJ3QgdmVyaWZ5LCBwcm92aWRlIGEgbmVhdCBtZXNz YWdlLiAqLwogICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCiAgICAgZXJyID0gZ3J1Yl9lcnJv ciAoR1JVQl9FUlJfQkFEX1NJR05BVFVSRSwKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpHcnViLWRldmVs IG1haWxpbmcgbGlzdApHcnViLWRldmVsQGdudS5vcmcKaHR0cHM6Ly9saXN0cy5nbnUub3JnL21h aWxtYW4vbGlzdGluZm8vZ3J1Yi1kZXZlbAo=