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 53E73C83F26 for ; Tue, 29 Jul 2025 12:40:09 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ugjcS-0003MW-HH; Tue, 29 Jul 2025 08:39:50 -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 1ugjbn-0002LH-Bd for grub-devel@gnu.org; Tue, 29 Jul 2025 08:39:13 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ugjbh-0003BI-99 for grub-devel@gnu.org; Tue, 29 Jul 2025 08:39:06 -0400 Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56T4ZBfD023258; Tue, 29 Jul 2025 12:38:58 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=xiLKxKRfzR7DjxeHP dbyF3A8B+SPoWQXbmOgeCPMdM4=; b=UUxO451e1r9sMU3LT00yaJG5xLKfYb+vV 4rf5fd0/sRUla5rk+AUqP/iQqVF4LafVk2tkEEelkfOXrCaeMTTsPwK+WcxzMPtf OTJAV12bG2bscxg7sW0pwNNvfkS3hp3Zfp+yeMJoTqqWJFcQ1/oXw5G77Dir2x7S L1m+vZAVq3ipuHPpIzVdoLd9sIvLOdUk+myPN0g6vbgJ7NGi/Cvo9kEINEuJn9BF kTc+EMZr9L6F4GqAd5FqhoCjsPlneAwhNxekn4TA2vdgVpmE/2gM6nHN/vFOxBAb Gwi823JWapAs/xTZJI99IdIKdQ1GZNNWCuzRUkRZam1ds1EYxhaEQ== Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 484qd5emkd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 29 Jul 2025 12:38:58 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 56T89KmY017955; Tue, 29 Jul 2025 12:38:57 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4859btjgsa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 29 Jul 2025 12:38:56 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 56TCcrl251118378 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 29 Jul 2025 12:38:53 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id F14AF2004B; Tue, 29 Jul 2025 12:38:49 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8825420049; Tue, 29 Jul 2025 12:38:47 +0000 (GMT) Received: from localhost.localdomain (unknown [9.39.21.169]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 29 Jul 2025 12:38:47 +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 Subject: [PATCH v6 12/20] appended signatures: Create db and dbx lists Date: Tue, 29 Jul 2025 18:07:01 +0530 Message-Id: <20250729123709.83349-13-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250729123709.83349-1-sudhakar@linux.ibm.com> References: <20250729123709.83349-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzI5MDA5NSBTYWx0ZWRfX3yFwHZL0hOM6 7Yq+uRlrCgtNyTTYMp2BGTPZeMlCUUWjxV/XYGXDO2N6UQ4Py19ZGAqPT4g5h9Ih3M49bNqIHoL wM1/EJAP8znHRqdAMyKM653QBO03yw/dXMF/zJTNopg21IHRl5Cqz/5G6LlN4N/xjxn1gDpVIn/ uNgN6HO++a0oqlpfTXHpcVUH8a1RYVM/Ep/CSvUbjoBqan4GWWis4SOVSJ81BhcV6Oyh9Rj9Twr nXt7Y0HmWOwBhNyHDIYkuWynPFAIMNbKEceS8hDcm4+OBtpURTJh6VLcewyQsoGFea5WjyPesy0 X7Hgy4Gep8sk8fhtzcrQyJj4D2J+FIpLN49bPud24D55FTqdtncd97ZnA/PszzBEdDpnzWx6rpd GhNGga6EZAhIWXinJiNB7m4vgy5dR2RdCNXTPmv5+zHDq9LnolwliPi4fh10ErSE9JRj5Hed X-Proofpoint-ORIG-GUID: 27RHeR1wOZrglhAr6A3X9Fn-vPKojRbQ X-Authority-Analysis: v=2.4 cv=B9q50PtM c=1 sm=1 tr=0 ts=6888c0e2 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=Wb1JkmetP80A:10 a=NEAV23lmAAAA:8 a=VnNF1IyMAAAA:8 a=YHdhcJz9JjMUaA9YugAA:9 X-Proofpoint-GUID: 27RHeR1wOZrglhAr6A3X9Fn-vPKojRbQ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-29_03,2025-07-28_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 priorityscore=1501 mlxscore=0 spamscore=0 mlxlogscore=999 suspectscore=0 clxscore=1015 impostorscore=0 bulkscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2507290095 Received-SPF: pass client-ip=148.163.158.5; envelope-from=sudhakar@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_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 SWYgc2VjdXJlIGJvb3QgaXMgZW5hYmxlZCB3aXRoIHN0YXRpYyBrZXkgbWFuYWdlbWVudCBtb2Rl LCB0aGUgdHJ1c3RlZApjZXJ0aWZpY2F0ZXMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgR1JV QiBFTEYgTm90ZSBhbmQgYWRkZWQgdG8gZGIgbGlzdC4KVGhpcyBpcyBpbnRyb2R1Y2VkIGJ5IGEg c3Vic2VxdWVudCBwYXRjaC4KCklmIHNlY3VyZSBib290IGlzIGVuYWJsZWQgd2l0aCBkeW5hbWlj IGtleSBtYW5hZ2VtZW50IG1vZGUsIHRoZSB0cnVzdGVkCmNlcnRpZmljYXRlcyBhbmQgY2VydGlm aWNhdGUvYmluYXJ5IGhhc2ggd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgUEtTCmFuZCBhZGRl ZCB0byBkYiBsaXN0LiBUaGUgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMsIGNlcnRpZmljYXRlL2Jp bmFyeSBoYXNoCmZyb20gdGhlIFBLUyBhbmQgYWRkZWQgdG8gZGJ4IGxpc3QuIEJvdGggZGJ4IGFu ZCBkYiBsaXN0cyBhcmUgaW50cm9kdWNlZCBieQphIHN1YnNlcXVlbnQgcGF0Y2guCgpOb3RlOi0K CklmIHRoZSBjZXJ0aWZpY2F0ZSBvciB0aGUgY2VydGlmaWNhdGUgaGFzaCBleGlzdHMgaW4gdGhl IGRieCBsaXN0LCB0aGVuCmRvIG5vdCBhZGQgdGhhdCBjZXJ0aWZpY2F0ZS9jZXJ0aWZpY2F0ZSBo YXNoIHRvIHRoZSBkYiBsaXN0LgoKU2lnbmVkLW9mZi1ieTogU3VkaGFrYXIgS3VwcHVzYW15IDxz dWRoYWthckBsaW51eC5pYm0uY29tPgpSZXZpZXdlZC1ieTogU3RlZmFuIEJlcmdlciA8c3RlZmFu YkBsaW51eC5pYm0uY29tPgpSZXZpZXdlZC1ieTogQXZuaXNoIENob3VoYW4gPGF2bmlzaEBsaW51 eC5pYm0uY29tPgotLS0KIGdydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNp Zy5jIHwgNTMwICsrKysrKysrKysrKysrKysrLS0KIGluY2x1ZGUvZ3J1Yi9jcnlwdG8uaCAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGluY2x1ZGUvZ3J1Yi9lZmkvcGtzLmggICAgICAg ICAgICAgICAgICAgICAgIHwgMTEyICsrKysKIGluY2x1ZGUvZ3J1Yi90eXBlcy5oICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICA0ICsKIDQgZmlsZXMgY2hhbmdlZCwgNjA2IGluc2VydGlvbnMo KyksIDQxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZ3J1Yi9lZmkv cGtzLmgKCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5k ZWRzaWcuYyBiL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCmlu ZGV4IDQ4ZjFlYzk0ZS4uMWU1NjEwZGRmIDEwMDY0NAotLS0gYS9ncnViLWNvcmUvY29tbWFuZHMv YXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYworKysgYi9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5k ZWRzaWcvYXBwZW5kZWRzaWcuYwpAQCAtMzMsNyArMzMsOCBAQAogI2luY2x1ZGUgPGxpYnRhc24x Lmg+CiAjaW5jbHVkZSA8Z3J1Yi9lbnYuaD4KICNpbmNsdWRlIDxncnViL2llZWUxMjc1L2llZWUx Mjc1Lmg+Ci0KKyNpbmNsdWRlIDxncnViL2VmaS9wa3MuaD4KKyNpbmNsdWRlIDxncnViL3Bvd2Vy cGMvaWVlZTEyNzUvcGxhdGZvcm1fa2V5c3RvcmUuaD4KICNpbmNsdWRlICJhcHBlbmRlZHNpZy5o IgogCiBHUlVCX01PRF9MSUNFTlNFICgiR1BMdjMrIik7CkBAIC02Nyw4ICs2OCwzMCBAQCBzdHJ1 Y3QgZ3J1Yl9hcHBlbmRlZF9zaWduYXR1cmUKICAgc3RydWN0IHBrY3M3X3NpZ25lZERhdGEgcGtj czc7ICAgICAgICAvKiBQYXJzZWQgUEtDUyM3IGRhdGEuICovCiB9OwogCi0vKiBUcnVzdGVkIGNl cnRpZmljYXRlcyBmb3IgdmVyaWZ5aW5nIGFwcGVuZGVkIHNpZ25hdHVyZXMuICovCi1zdHJ1Y3Qg eDUwOV9jZXJ0aWZpY2F0ZSAqZGI7CisvKiBUaGlzIHJlcHJlc2VudHMgYSBkYi9kYnggbGlzdC4g Ki8KK3N0cnVjdCBncnViX2RhdGFiYXNlCit7CisgIHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpj ZXJ0czsgLyogQ2VydGlmaWNhdGVzLiAqLworICBncnViX3NpemVfdCBjZXJ0X2VudHJpZXM7ICAg ICAgIC8qIE51bWJlciBvZiBjZXJ0aWZpY2F0ZXMuICovCisgIGdydWJfdWludDhfdCAqKnNpZ25h dHVyZXM7ICAgICAgLyogQ2VydGlmaWNhdGUvYmluYXJ5IGhhc2hlcy4gKi8KKyAgZ3J1Yl9zaXpl X3QgKnNpZ25hdHVyZV9zaXplOyAgICAvKiBTaXplIG9mIGNlcnRpZmljYXRlL2JpbmFyeSBoYXNo ZXMuICovCisgIGdydWJfc2l6ZV90IHNpZ25hdHVyZV9lbnRyaWVzOyAgLyogTnVtYmVyIG9mIGNl cnRpZmljYXRlL2JpbmFyeSBoYXNoZXMuICovCit9OworCisvKiBUaGUgZGIgbGlzdCAqLworc3Ry dWN0IGdydWJfZGF0YWJhc2UgZGIgPSB7LmNlcnRzID0gTlVMTCwgLmNlcnRfZW50cmllcyA9IDAs IC5zaWduYXR1cmVzID0gTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zaWduYXR1 cmVfc2l6ZSA9IE5VTEwsIC5zaWduYXR1cmVfZW50cmllcyA9IDB9OworCisvKiBUaGUgZGJ4IGxp c3QgKi8KK3N0cnVjdCBncnViX2RhdGFiYXNlIGRieCA9IHsuY2VydHMgPSBOVUxMLCAuY2VydF9l bnRyaWVzID0gMCwgLnNpZ25hdHVyZXMgPSBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC5zaWduYXR1cmVfc2l6ZSA9IE5VTEwsIC5zaWduYXR1cmVfZW50cmllcyA9IDB9OworCisv KiBGcmVlIGRiIGxpc3QgbWVtb3J5ICovCitzdGF0aWMgdm9pZAorZnJlZV9kYl9saXN0ICh2b2lk KTsKKy8qIEZyZWUgZGJ4IGxpc3QgbWVtb3J5ICovCitzdGF0aWMgdm9pZAorZnJlZV9kYnhfbGlz dCAodm9pZCk7CiAKIC8qIEFwcGVuZGVkIHNpZ25hdHVyZSBzaXplLiAqLwogc3RhdGljIGdydWJf c2l6ZV90IGFwcGVuZF9zaWdfbGVuID0gMDsKQEAgLTEyNCw2ICsxNDcsOTQgQEAgZ3J1Yl9lbnZf d3JpdGVfc2VjIChzdHJ1Y3QgZ3J1Yl9lbnZfdmFyICp2YXIgX19hdHRyaWJ1dGVfXyAoKHVudXNl ZCkpLCBjb25zdCBjaGEKICAgcmV0dXJuIHJldDsKIH0KIAorLyoKKyAqIEdVSUQgY2FuIGJlIHVz ZWQgdG8gZGV0ZXJtaW5lIHRoZSBoYXNoaW5nIGZ1bmN0aW9uIGFuZAorICogZ2VuZXJhdGUgdGhl IGhhc2ggdXNpbmcgZGV0ZXJtaW5lZCBoYXNoaW5nIGZ1bmN0aW9uLgorICovCitzdGF0aWMgZ3J1 Yl9lcnJfdAorZ2V0X2hhc2ggKGNvbnN0IGdydWJfcGFja2VkX2d1aWRfdCAqZ3VpZCwgY29uc3Qg Z3J1Yl91aW50OF90ICpkYXRhLCBjb25zdCBncnViX3NpemVfdCBkYXRhX3NpemUsCisgICAgICAg ICAgZ3J1Yl91aW50OF90ICpoYXNoLCBncnViX3NpemVfdCAqaGFzaF9zaXplKQoreworICBnY3J5 X21kX3NwZWNfdCAqaGFzaF9mdW5jID0gTlVMTDsKKworICBpZiAoZ3VpZCA9PSBOVUxMKQorICAg IHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFOR0UsICJHVUlEIGlzIG5vdCBh dmFpbGFibGUiKTsKKworICBpZiAoZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1NI QTI1Nl9HVUlELCBHUlVCX1BBQ0tFRF9HVUlEX1NJWkUpID09IDAgfHwKKyAgICAgIGdydWJfbWVt Y21wIChndWlkLCAmR1JVQl9QS1NfQ0VSVF9YNTA5X1NIQTI1Nl9HVUlELCBHUlVCX1BBQ0tFRF9H VUlEX1NJWkUpID09IDApCisgICAgaGFzaF9mdW5jID0gJl9nY3J5X2RpZ2VzdF9zcGVjX3NoYTI1 NjsKKyAgZWxzZSBpZiAoZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1NIQTM4NF9H VUlELCBHUlVCX1BBQ0tFRF9HVUlEX1NJWkUpID09IDAgfHwKKyAgICAgICAgICAgZ3J1Yl9tZW1j bXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1g1MDlfU0hBMzg0X0dVSUQsIEdSVUJfUEFDS0VEX0dV SURfU0laRSkgPT0gMCkKKyAgICBoYXNoX2Z1bmMgPSAmX2djcnlfZGlnZXN0X3NwZWNfc2hhMzg0 OworICBlbHNlIGlmIChncnViX21lbWNtcCAoZ3VpZCwgJkdSVUJfUEtTX0NFUlRfU0hBNTEyX0dV SUQsIEdSVUJfUEFDS0VEX0dVSURfU0laRSkgPT0gMCB8fAorICAgICAgICAgICBncnViX21lbWNt cCAoZ3VpZCwgJkdSVUJfUEtTX0NFUlRfWDUwOV9TSEE1MTJfR1VJRCwgR1JVQl9QQUNLRURfR1VJ RF9TSVpFKSA9PSAwKQorICAgIGhhc2hfZnVuYyA9ICZfZ2NyeV9kaWdlc3Rfc3BlY19zaGE1MTI7 CisgIGVsc2UKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfT1VUX09GX1JBTkdFLCAi dW5zdXBwb3J0ZWQgR1VJRCBoYXNoIik7CisKKyAgZ3J1Yl9tZW1zZXQgKGhhc2gsIDAsIEdSVUJf TUFYX0hBU0hfU0laRSk7CisgIGdydWJfY3J5cHRvX2hhc2ggKGhhc2hfZnVuYywgaGFzaCwgZGF0 YSwgZGF0YV9zaXplKTsKKyAgKmhhc2hfc2l6ZSA9ICBoYXNoX2Z1bmMtPm1kbGVuOworCisgIHJl dHVybiBHUlVCX0VSUl9OT05FOworfQorCisvKiBBZGQgdGhlIGNlcnRpZmljYXRlL2JpbmFyeSBo YXNoIGludG8gdGhlIGRiL2RieCBsaXN0LiAqLworc3RhdGljIGdydWJfZXJyX3QKK2FkZF9oYXNo IChjb25zdCBncnViX3VpbnQ4X3QgKipkYXRhLCBjb25zdCBncnViX3NpemVfdCBkYXRhX3NpemUs CisgICAgICAgICAgZ3J1Yl91aW50OF90ICoqKnNpZ25hdHVyZV9saXN0LCBncnViX3NpemVfdCAq KnNpZ25hdHVyZV9zaXplX2xpc3QsCisgICAgICAgICAgZ3J1Yl9zaXplX3QgKnNpZ25hdHVyZV9s aXN0X2VudHJpZXMpCit7CisgIGdydWJfdWludDhfdCAqKnNpZ25hdHVyZXMgPSAqc2lnbmF0dXJl X2xpc3Q7CisgIGdydWJfc2l6ZV90ICpzaWduYXR1cmVfc2l6ZSA9ICpzaWduYXR1cmVfc2l6ZV9s aXN0OworICBncnViX3NpemVfdCBzaWduYXR1cmVfZW50cmllcyA9ICpzaWduYXR1cmVfbGlzdF9l bnRyaWVzOworCisgIGlmICgqZGF0YSA9PSBOVUxMIHx8IGRhdGFfc2l6ZSA9PSAwKQorICAgIHJl dHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFOR0UsICJjZXJ0aWZpY2F0ZS9iaW5h cnktaGFzaCBkYXRhIG9yIHNpemUgaXMgbm90IGF2YWlsYWJsZSIpOworCisgIHNpZ25hdHVyZXMg PSBncnViX3JlYWxsb2MgKHNpZ25hdHVyZXMsIHNpemVvZiAoZ3J1Yl91aW50OF90ICopICogKHNp Z25hdHVyZV9lbnRyaWVzICsgMSkpOworICBzaWduYXR1cmVfc2l6ZSA9IGdydWJfcmVhbGxvYyAo c2lnbmF0dXJlX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yg KGdydWJfc2l6ZV90KSAqIChzaWduYXR1cmVfZW50cmllcyArIDEpKTsKKworICBpZiAoc2lnbmF0 dXJlcyA9PSBOVUxMIHx8IHNpZ25hdHVyZV9zaXplID09IE5VTEwpCisgICAgeworICAgICAgLyoK KyAgICAgICAqIEFsbG9jYXRlZCBtZW1vcnkgd2lsbCBiZSBmcmVlZCBieQorICAgICAgICogZnJl ZV9kYl9saXN0L2ZyZWVfZGJ4X2xpc3QuCisgICAgICAgKi8KKyAgICAgIGlmIChzaWduYXR1cmVz ICE9IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAqc2lnbmF0dXJlX2xpc3QgPSBzaWduYXR1 cmVzOworICAgICAgICAgICpzaWduYXR1cmVfbGlzdF9lbnRyaWVzID0gc2lnbmF0dXJlX2VudHJp ZXMgKyAxOworICAgICAgICB9CisKKyAgICAgIGlmIChzaWduYXR1cmVfc2l6ZSAhPSBOVUxMKQor ICAgICAgICAqc2lnbmF0dXJlX3NpemVfbGlzdCA9IHNpZ25hdHVyZV9zaXplOworCisgICAgICBy ZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfT1VUX09GX01FTU9SWSwgIm91dCBvZiBtZW1vcnki KTsKKyAgICB9CisKKyAgc2lnbmF0dXJlc1tzaWduYXR1cmVfZW50cmllc10gPSAoZ3J1Yl91aW50 OF90ICopICpkYXRhOworICBzaWduYXR1cmVfc2l6ZVtzaWduYXR1cmVfZW50cmllc10gPSBkYXRh X3NpemU7CisgIHNpZ25hdHVyZV9lbnRyaWVzKys7CisgICpkYXRhID0gTlVMTDsKKworICAqc2ln bmF0dXJlX2xpc3QgPSBzaWduYXR1cmVzOworICAqc2lnbmF0dXJlX3NpemVfbGlzdCA9IHNpZ25h dHVyZV9zaXplOworICAqc2lnbmF0dXJlX2xpc3RfZW50cmllcyA9IHNpZ25hdHVyZV9lbnRyaWVz OworCisgIHJldHVybiBHUlVCX0VSUl9OT05FOworfQorCitzdGF0aWMgYm9vbAoraXNfeDUwOSAo Y29uc3QgZ3J1Yl9wYWNrZWRfZ3VpZF90ICpndWlkKQoreworICBpZiAoZ3J1Yl9tZW1jbXAgKGd1 aWQsICZHUlVCX1BLU19DRVJUX1g1MDlfR1VJRCwgR1JVQl9QQUNLRURfR1VJRF9TSVpFKSA9PSAw KQorICAgIHJldHVybiB0cnVlOworCisgIHJldHVybiBmYWxzZTsKK30KKwogc3RhdGljIGJvb2wK IGlzX2NlcnRfbWF0Y2ggKGNvbnN0IHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpkaXN0cnVzdGVk X2NlcnQsCiAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqZGJf Y2VydCkKQEAgLTEzOCw2ICsyNDksOTUgQEAgaXNfY2VydF9tYXRjaCAoY29uc3Qgc3RydWN0IHg1 MDlfY2VydGlmaWNhdGUgKmRpc3RydXN0ZWRfY2VydCwKICAgcmV0dXJuIGZhbHNlOwogfQogCisv KiBDaGVjayB0aGUgY2VydGlmaWNhdGUgcHJlc2VuY2UgaW4gdGhlIFBsYXRmb3JtIEtleXN0b3Jl IGRieCBsaXN0LiAqLworc3RhdGljIGdydWJfZXJyX3QKK2lzX2RieF9jZXJ0IChjb25zdCBzdHJ1 Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqZGJfY2VydCkKK3sKKyAgZ3J1Yl9lcnJfdCByYzsKKyAgZ3J1 Yl9zaXplX3QgaTsKKyAgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKmRpc3RydXN0ZWRfY2VydDsK KworICBmb3IgKGkgPSAwOyBpIDwgZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4X2VudHJpZXM7IGkrKykK KyAgICB7CisgICAgICBpZiAoZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmRhdGEgPT0gTlVMTCkK KyAgICAgICAgY29udGludWU7CisKKyAgICAgIGlmIChpc194NTA5ICgmZ3J1Yl9wa3Nfa2V5c3Rv cmUuZGJ4W2ldLmd1aWQpID09IHRydWUpCisgICAgICAgIHsKKyAgICAgICAgICBkaXN0cnVzdGVk X2NlcnQgPSBncnViX3phbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSkpOwor ICAgICAgICAgIGlmIChkaXN0cnVzdGVkX2NlcnQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVy biBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCAib3V0IG9mIG1lbW9yeSIpOwor CisgICAgICAgICAgcmMgPSBwYXJzZV94NTA5X2NlcnRpZmljYXRlIChncnViX3Brc19rZXlzdG9y ZS5kYnhbaV0uZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdy dWJfcGtzX2tleXN0b3JlLmRieFtpXS5kYXRhX3NpemUsIGRpc3RydXN0ZWRfY2VydCk7CisgICAg ICAgICAgaWYgKHJjICE9IEdSVUJfRVJSX05PTkUpCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgIGdydWJfZnJlZSAoZGlzdHJ1c3RlZF9jZXJ0KTsKKyAgICAgICAgICAgICAgY29udGludWU7 CisgICAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoaXNfY2VydF9tYXRjaCAoZGlzdHJ1c3Rl ZF9jZXJ0LCBkYl9jZXJ0KSA9PSB0cnVlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBn cnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJhIHRydXN0ZWQgY2VydGlmaWNhdGUgQ049JyVz JyBpcyBpZ25vcmVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVjYXVzZSBpdCBp cyBvbiB0aGUgZGJ4IGxpc3RcbiIsIGRiX2NlcnQtPnN1YmplY3QpOworICAgICAgICAgICAgICBy ZXR1cm4gR1JVQl9FUlJfQUNDRVNTX0RFTklFRDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg IGNlcnRpZmljYXRlX3JlbGVhc2UgKGRpc3RydXN0ZWRfY2VydCk7CisgICAgICAgICAgZ3J1Yl9m cmVlIChkaXN0cnVzdGVkX2NlcnQpOworICAgICAgICB9CisgICAgfQorCisgIHJldHVybiBHUlVC X0VSUl9OT05FOworfQorCisvKiBBZGQgdGhlIGNlcnRpZmljYXRlIGludG8gdGhlIGRiL2RieCBs aXN0ICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorYWRkX2NlcnRpZmljYXRlIChjb25zdCBncnViX3Vp bnQ4X3QgKmRhdGEsIGNvbnN0IGdydWJfc2l6ZV90IGRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAg ICAgc3RydWN0IGdydWJfZGF0YWJhc2UgKmRhdGFiYXNlLCBjb25zdCBib29sIGlzX2RiKQorewor ICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydDsKKyAgZ3J1Yl9lcnJfdCByYzsKKyAgZ3J1 Yl9zaXplX3QgY2VydF9lbnRyaWVzID0gZGF0YWJhc2UtPmNlcnRfZW50cmllczsKKworICBpZiAo ZGF0YSA9PSBOVUxMIHx8IGRhdGFfc2l6ZSA9PSAwKQorICAgIHJldHVybiBncnViX2Vycm9yIChH UlVCX0VSUl9PVVRfT0ZfUkFOR0UsICJjZXJ0aWZpY2F0ZSBkYXRhIG9yIHNpemUgaXMgbm90IGF2 YWlsYWJsZSIpOworCisgIGNlcnQgPSBncnViX3phbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgeDUwOV9j ZXJ0aWZpY2F0ZSkpOworICBpZiAoY2VydCA9PSBOVUxMKQorICAgIHJldHVybiBncnViX2Vycm9y IChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCAib3V0IG9mIG1lbW9yeSIpOworCisgIHJjID0gcGFy c2VfeDUwOV9jZXJ0aWZpY2F0ZSAoZGF0YSwgZGF0YV9zaXplLCBjZXJ0KTsKKyAgaWYgKHJjICE9 IEdSVUJfRVJSX05PTkUpCisgICAgeworICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWci LCAic2tpcHBlZCAlcyBjZXJ0aWZpY2F0ZSAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAo KGlzX2RiID09IHRydWUpID8gInRydXN0ZWQiIDogImRpc3RydXN0ZWQiKSwgKGludCkgcmMpOwor ICAgICAgZ3J1Yl9mcmVlIChjZXJ0KTsKKyAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgaWYg KGlzX2RiID09IHRydWUpCisgICAgeworICAgICAgcmMgPSBpc19kYnhfY2VydCAoY2VydCk7Cisg ICAgICBpZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICAgICAgeworICAgICAgICAgIGNlcnRp ZmljYXRlX3JlbGVhc2UgKGNlcnQpOworICAgICAgICAgIGdydWJfZnJlZSAoY2VydCk7CisgICAg ICAgICAgcmV0dXJuIHJjOworICAgICAgICB9CisgICAgfQorCisgIGdydWJfZHByaW50ZiAoImFw cGVuZGVkc2lnIiwgImFkZCBhICVzIGNlcnRpZmljYXRlIENOPSclcydcbiIsCisgICAgICAgICAg ICAgICAgKChpc19kYiA9PSB0cnVlKSA/ICJ0cnVzdGVkIiA6ICJkaXN0cnVzdGVkIiksIGNlcnQt PnN1YmplY3QpOworCisgIGNlcnRfZW50cmllcysrOworICBjZXJ0LT5uZXh0ID0gZGF0YWJhc2Ut PmNlcnRzOworICBkYXRhYmFzZS0+Y2VydHMgPSBjZXJ0OworICBkYXRhYmFzZS0+Y2VydF9lbnRy aWVzID0gY2VydF9lbnRyaWVzOworCisgIHJldHVybiByYzsKK30KKwogc3RhdGljIGdydWJfZXJy X3QKIGZpbGVfcmVhZF93aG9sZSAoZ3J1Yl9maWxlX3QgZmlsZSwgZ3J1Yl91aW50OF90ICoqYnVm LCBncnViX3NpemVfdCAqbGVuKQogewpAQCAtMjcyLDcgKzQ3Miw3IEBAIGdydWJfdmVyaWZ5X2Fw cGVuZGVkX3NpZ25hdHVyZSAoY29uc3QgZ3J1Yl91aW50OF90ICpidWYsIGdydWJfc2l6ZV90IGJ1 ZnNpemUpCiAgIHN0cnVjdCBwa2NzN19zaWduZXJJbmZvICpzaTsKICAgaW50IGk7CiAKLSAgaWYg KGRiID09IE5VTEwpCisgIGlmICghZGIuY2VydF9lbnRyaWVzKQogICAgIHJldHVybiBncnViX2Vy cm9yIChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAibm8gdHJ1c3RlZCBrZXlzIHRvIHZlcmlmeSBh Z2FpbnN0Iik7CiAKICAgZXJyID0gZXh0cmFjdF9hcHBlbmRlZF9zaWduYXR1cmUgKGJ1ZiwgYnVm c2l6ZSwgJnNpZyk7CkBAIC0zMDMsNyArNTAzLDcgQEAgZ3J1Yl92ZXJpZnlfYXBwZW5kZWRfc2ln bmF0dXJlIChjb25zdCBncnViX3VpbnQ4X3QgKmJ1ZiwgZ3J1Yl9zaXplX3QgYnVmc2l6ZSkKICAg ICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgImRhdGEgc2l6ZSAlIiBQUkl1R1JVQl9T SVpFICIsIHNpZ25lciAlZCBoYXNoICUwMnglMDJ4JTAyeCUwMnguLi5cbiIsCiAgICAgICAgICAg ICAgICAgICAgIGRhdGFzaXplLCBpLCBoYXNoWzBdLCBoYXNoWzFdLCBoYXNoWzJdLCBoYXNoWzNd KTsKIAotICAgICAgZm9yIChwayA9IGRiOyBwayAhPSBOVUxMOyBwayA9IHBrLT5uZXh0KQorICAg ICAgZm9yIChwayA9IGRiLmNlcnRzOyBwayAhPSBOVUxMOyBwayA9IHBrLT5uZXh0KQogICAgICAg ICB7CiAgICAgICAgICAgZXJyID0gdmVyaWZ5X3NpZ25hdHVyZSAocGstPm1waXMsIHNpLT5zaWdf bXBpLCBzaS0+aGFzaCwgaGFzaCk7CiAgICAgICAgICAgaWYgKGVyciA9PSBHUlVCX0VSUl9OT05F KQpAQCAtMzU5LDcgKzU1OSw3IEBAIGlzX2NlcnRfcHJlc2VudF9pbl9kYiAoY29uc3Qgc3RydWN0 IHg1MDlfY2VydGlmaWNhdGUgKmNlcnRfaW4pCiB7CiAgIHN0cnVjdCB4NTA5X2NlcnRpZmljYXRl ICpjZXJ0OwogCi0gIGZvciAoY2VydCA9IGRiOyBjZXJ0OyBjZXJ0ID0gY2VydC0+bmV4dCkKKyAg Zm9yIChjZXJ0ID0gZGIuY2VydHM7IGNlcnQ7IGNlcnQgPSBjZXJ0LT5uZXh0KQogICAgIHsKICAg ICAgIGlmIChpc19jZXJ0X21hdGNoIChjZXJ0LCBjZXJ0X2luKSA9PSB0cnVlKQogICAgICAgICBy ZXR1cm4gdHJ1ZTsKQEAgLTM3NCwxMiArNTc0LDEyIEBAIGlzX2NlcnRfcmVtb3ZlZF9mcm9tX2Ri IChjb25zdCBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydCkKICAgaW50IGkgPSAxOwogICBz dHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY3Vycl9jZXJ0LCAqcHJldl9jZXJ0OwogCi0gIGZvciAo Y3Vycl9jZXJ0ID0gcHJldl9jZXJ0ID0gZGI7IGN1cnJfY2VydCAhPSBOVUxMOyBjdXJyX2NlcnQg PSBjdXJyX2NlcnQtPm5leHQpCisgIGZvciAoY3Vycl9jZXJ0ID0gcHJldl9jZXJ0ID0gZGIuY2Vy dHM7IGN1cnJfY2VydCAhPSBOVUxMOyBjdXJyX2NlcnQgPSBjdXJyX2NlcnQtPm5leHQpCiAgICAg ewogICAgICAgaWYgKGlzX2NlcnRfbWF0Y2ggKGN1cnJfY2VydCwgY2VydCkgPT0gdHJ1ZSkKICAg ICAgICAgewogICAgICAgICAgIGlmIChpID09IDEpIC8qIE1hdGNoIHdpdGggZmlyc3QgY2VydGlm aWNhdGUgaW4gdGhlIGRiIGxpc3QuICovCi0gICAgICAgICAgICBkYiA9IGN1cnJfY2VydC0+bmV4 dDsKKyAgICAgICAgICAgIGRiLmNlcnRzID0gY3Vycl9jZXJ0LT5uZXh0OwogICAgICAgICAgIGVs c2UKICAgICAgICAgICAgIHByZXZfY2VydC0+bmV4dCA9IGN1cnJfY2VydC0+bmV4dDsKIApAQCAt NDY4LDggKzY2OCw5IEBAIGdydWJfY21kX2RiX2NlcnQgKGdydWJfY29tbWFuZF90IGNtZCBfX2F0 dHJpYnV0ZV9fICgodW51c2VkKSksIGludCBhcmdjLCBjaGFyICoqCiAKICAgZ3J1Yl9kcHJpbnRm ICgiYXBwZW5kZWRzaWciLCAiYWRkZWQgY2VydGlmaWNhdGUgd2l0aCBDTjogJXNcbiIsIGNlcnQt PnN1YmplY3QpOwogCi0gIGNlcnQtPm5leHQgPSBkYjsKLSAgZGIgPSBjZXJ0OworICBjZXJ0LT5u ZXh0ID0gZGIuY2VydHM7CisgIGRiLmNlcnRzID0gY2VydDsKKyAgZGIuY2VydF9lbnRyaWVzKys7 CiAKICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CiB9CkBAIC01MTcsNyArNzE4LDcgQEAgZ3J1Yl9j bWRfbGlzdF9kYiAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwg aW50IGFyZ2MgX19hdHRyaWIKICAgaW50IGNlcnRfbnVtID0gMTsKICAgZ3J1Yl9zaXplX3QgaTsK IAotICBmb3IgKGNlcnQgPSBkYjsgY2VydCAhPSBOVUxMOyBjZXJ0ID0gY2VydC0+bmV4dCkKKyAg Zm9yIChjZXJ0ID0gZGIuY2VydHM7IGNlcnQgIT0gTlVMTDsgY2VydCA9IGNlcnQtPm5leHQpCiAg ICAgewogICAgICAgZ3J1Yl9wcmludGYgKCJDZXJ0aWZpY2F0ZSAlZDpcbiIsIGNlcnRfbnVtKTsK ICAgICAgIGdydWJfcHJpbnRmICgiXHRTZXJpYWw6ICIpOwpAQCAtNjA5LDYgKzgxMCwyMzggQEAg c3RhdGljIHN0cnVjdCBncnViX2ZzIHBzZXVkb19mcyA9IHsKIAogc3RhdGljIGdydWJfY29tbWFu ZF90IGNtZF92ZXJpZnksIGNtZF9saXN0X2RiLCBjbWRfZGJ4X2NlcnQsIGNtZF9kYl9jZXJ0Owog CisvKiBDaGVjayB0aGUgY2VydGlmaWNhdGUgaGFzaCBwcmVzZW5jZSBpbiB0aGUgUEtTIGRieCBs aXN0LiAqLworc3RhdGljIGJvb2wKK2lzX2RieF9jZXJ0X2hhc2ggKGNvbnN0IGdydWJfdWludDhf dCAqZGF0YSwgY29uc3QgZ3J1Yl9zaXplX3QgZGF0YV9zaXplKQoreworICBncnViX2Vycl90IHJj OworICBncnViX3NpemVfdCBpLCBjZXJ0X2hhc2hfc2l6ZSA9IDA7CisgIGdydWJfdWludDhfdCBj ZXJ0X2hhc2hbR1JVQl9NQVhfSEFTSF9TSVpFXSA9IHsgMCB9OworCisgIGZvciAoaSA9IDA7IGkg PCBncnViX3Brc19rZXlzdG9yZS5kYnhfZW50cmllczsgaSsrKQorICAgIHsKKyAgICAgIGlmIChn cnViX3Brc19rZXlzdG9yZS5kYnhbaV0uZGF0YSA9PSBOVUxMIHx8CisgICAgICAgICAgZ3J1Yl9w a3Nfa2V5c3RvcmUuZGJ4W2ldLmRhdGFfc2l6ZSA9PSAwKQorICAgICAgICBjb250aW51ZTsKKwor ICAgICAgcmMgPSBnZXRfaGFzaCAoJmdydWJfcGtzX2tleXN0b3JlLmRieFtpXS5ndWlkLCBkYXRh LCBkYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICBjZXJ0X2hhc2gsICZjZXJ0X2hhc2hf c2l6ZSk7CisgICAgICBpZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICAgICAgY29udGludWU7 CisKKyAgICAgIGlmIChjZXJ0X2hhc2hfc2l6ZSA9PSBncnViX3Brc19rZXlzdG9yZS5kYnhbaV0u ZGF0YV9zaXplICYmCisgICAgICAgICAgZ3J1Yl9tZW1jbXAgKGdydWJfcGtzX2tleXN0b3JlLmRi eFtpXS5kYXRhLCBjZXJ0X2hhc2gsIGNlcnRfaGFzaF9zaXplKSA9PSAwKQorICAgICAgICB7Cisg ICAgICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAiYSB0cnVzdGVkIGNlcnRpZmlj YXRlICglMDJ4JTAyeCUwMnglMDJ4KSBpcyBpZ25vcmVkICIKKyAgICAgICAgICAgICAgICAgICAg ICAgICJiZWNhdXNlIHRoaXMgY2VydGlmaWNhdGUgaGFzaCBpcyBvbiB0aGUgZGJ4IGxpc3RcbiIs CisgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X2hhc2hbMF0sIGNlcnRfaGFzaFsxXSwgY2Vy dF9oYXNoWzJdLCBjZXJ0X2hhc2hbM10pOworICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg ICB9CisgICAgfQorCisgIHJldHVybiBmYWxzZTsKK30KKworLyogQ2hlY2sgdGhlIGJpbmFyeSBo YXNoIHByZXNlbmNlIGluIHRoZSBQS1MgZGJ4IGxpc3QuICovCitzdGF0aWMgYm9vbAoraXNfZGJ4 X2JpbmFyeV9oYXNoIChjb25zdCBncnViX3VpbnQ4X3QgKmJpbmFyeV9oYXNoLCBjb25zdCBncnVi X3NpemVfdCBiaW5hcnlfaGFzaF9zaXplKQoreworICBncnViX3NpemVfdCBpOworCisgIGZvciAo aSA9IDA7IGkgPCBncnViX3Brc19rZXlzdG9yZS5kYnhfZW50cmllczsgaSsrKQorICAgIHsKKyAg ICAgIGlmIChncnViX3Brc19rZXlzdG9yZS5kYnhbaV0uZGF0YSA9PSBOVUxMIHx8CisgICAgICAg ICAgZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmRhdGFfc2l6ZSA9PSAwKQorICAgICAgICBjb250 aW51ZTsKKworICAgICAgaWYgKGJpbmFyeV9oYXNoX3NpemUgPT0gZ3J1Yl9wa3Nfa2V5c3RvcmUu ZGJ4W2ldLmRhdGFfc2l6ZSAmJgorICAgICAgICAgIGdydWJfbWVtY21wIChncnViX3Brc19rZXlz dG9yZS5kYnhbaV0uZGF0YSwgYmluYXJ5X2hhc2gsIGJpbmFyeV9oYXNoX3NpemUpID09IDApCisg ICAgICAgIHsKKyAgICAgICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJhIHRydXN0 ZWQgYmluYXJ5IGhhc2ggKCUwMnglMDJ4JTAyeCUwMngpIGlzIGlnbm9yZWQiCisgICAgICAgICAg ICAgICAgICAgICAgICAiIGJlY2F1c2UgaXQgaXMgb24gdGhlIGRieCBsaXN0XG4iLCBiaW5hcnlf aGFzaFswXSwgYmluYXJ5X2hhc2hbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlf aGFzaFsyXSwgYmluYXJ5X2hhc2hbM10pOworICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg ICB9CisgICAgfQorCisgIHJldHVybiBmYWxzZTsKK30KKworLyogQWRkIHRoZSBiaW5hcnkgaGFz aCB0byB0aGUgZGIgbGlzdCBpZiBpdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgUEtTIGRieCBsaXN0 LiAqLworc3RhdGljIGdydWJfZXJyX3QKK2FkZF9kYl9iaW5hcnlfaGFzaCAoY29uc3QgZ3J1Yl91 aW50OF90ICoqZGF0YSwgY29uc3QgZ3J1Yl9zaXplX3QgZGF0YV9zaXplKQoreworICBpZiAoKmRh dGEgPT0gTlVMTCB8fCBkYXRhX3NpemUgPT0gMCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JV Ql9FUlJfT1VUX09GX1JBTkdFLCAidHJ1c3RlZCBiaW5hcnkgaGFzaCBkYXRhIG9yIHNpemUgaXMg bm90IGF2YWlsYWJsZSIpOworCisgIGlmIChpc19kYnhfYmluYXJ5X2hhc2ggKCpkYXRhLCBkYXRh X3NpemUpID09IGZhbHNlKQorICAgIHJldHVybiBhZGRfaGFzaCAoZGF0YSwgZGF0YV9zaXplLCAm ZGIuc2lnbmF0dXJlcywgJmRiLnNpZ25hdHVyZV9zaXplLAorICAgICAgICAgICAgICAgICAgICAg JmRiLnNpZ25hdHVyZV9lbnRyaWVzKTsKKworICByZXR1cm4gR1JVQl9FUlJfQkFEX1NJR05BVFVS RTsKK30KKworc3RhdGljIGJvb2wKK2lzX2hhc2ggKGNvbnN0IGdydWJfcGFja2VkX2d1aWRfdCAq Z3VpZCkKK3sKKyAgLyogR1VJRCB0eXBlIG9mIHRoZSBiaW5hcnkgaGFzaC4gKi8KKyAgaWYgKGdy dWJfbWVtY21wIChndWlkLCAmR1JVQl9QS1NfQ0VSVF9TSEEyNTZfR1VJRCwgR1JVQl9QQUNLRURf R1VJRF9TSVpFKSA9PSAwIHx8CisgICAgICBncnViX21lbWNtcCAoZ3VpZCwgJkdSVUJfUEtTX0NF UlRfU0hBMzg0X0dVSUQsIEdSVUJfUEFDS0VEX0dVSURfU0laRSkgPT0gMCB8fAorICAgICAgZ3J1 Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1NIQTUxMl9HVUlELCBHUlVCX1BBQ0tFRF9H VUlEX1NJWkUpID09IDApCisgICAgcmV0dXJuIHRydWU7CisKKyAgLyogR1VJRCB0eXBlIG9mIHRo ZSBjZXJ0aWZpY2F0ZSBoYXNoLiAqLworICBpZiAoZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BL U19DRVJUX1g1MDlfU0hBMjU2X0dVSUQsIEdSVUJfUEFDS0VEX0dVSURfU0laRSkgPT0gMCB8fAor ICAgICAgZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1g1MDlfU0hBMzg0X0dVSUQs IEdSVUJfUEFDS0VEX0dVSURfU0laRSkgPT0gMCB8fAorICAgICAgZ3J1Yl9tZW1jbXAgKGd1aWQs ICZHUlVCX1BLU19DRVJUX1g1MDlfU0hBNTEyX0dVSUQsIEdSVUJfUEFDS0VEX0dVSURfU0laRSkg PT0gMCkKKyAgICByZXR1cm4gdHJ1ZTsKKworICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIEFkZCB0 aGUgWC41MDkgY2VydGlmaWNhdGVzL2JpbmFyeSBoYXNoIHRvIHRoZSBkYiBsaXN0IGZyb20gUEtT LiAqLworc3RhdGljIGdydWJfZXJyX3QKK2NyZWF0ZV9kYl9saXN0ICh2b2lkKQoreworICBncnVi X2Vycl90IHJjOworICBncnViX3NpemVfdCBpOworCisgIGZvciAoaSA9IDA7IGkgPCBncnViX3Br c19rZXlzdG9yZS5kYl9lbnRyaWVzOyBpKyspCisgICAgeworICAgICAgaWYgKGlzX2hhc2ggKCZn cnViX3Brc19rZXlzdG9yZS5kYltpXS5ndWlkKSA9PSB0cnVlKQorICAgICAgICB7CisgICAgICAg ICAgcmMgPSBhZGRfZGJfYmluYXJ5X2hhc2ggKChjb25zdCBncnViX3VpbnQ4X3QgKiopIGdydWJf cGtzX2tleXN0b3JlLmRiW2ldLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdydWJfcGtzX2tleXN0b3JlLmRiW2ldLmRhdGFfc2l6ZSk7CisgICAgICAgICAgaWYgKHJj ID09IEdSVUJfRVJSX09VVF9PRl9NRU1PUlkpCisgICAgICAgICAgICByZXR1cm4gcmM7CisgICAg ICAgIH0KKyAgICAgIGVsc2UgaWYgKGlzX3g1MDkgKCZncnViX3Brc19rZXlzdG9yZS5kYltpXS5n dWlkKSA9PSB0cnVlKQorICAgICAgICB7CisgICAgICAgICAgaWYgKGlzX2RieF9jZXJ0X2hhc2gg KGdydWJfcGtzX2tleXN0b3JlLmRiW2ldLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdydWJfcGtzX2tleXN0b3JlLmRiW2ldLmRhdGFfc2l6ZSkgPT0gdHJ1ZSkKKyAgICAg ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgcmMgPSBhZGRfY2VydGlmaWNhdGUgKGdydWJf cGtzX2tleXN0b3JlLmRiW2ldLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdydWJfcGtzX2tleXN0b3JlLmRiW2ldLmRhdGFfc2l6ZSwgJmRiLCB0cnVlKTsKKyAgICAgICAg ICBpZiAocmMgPT0gR1JVQl9FUlJfT1VUX09GX01FTU9SWSkKKyAgICAgICAgICAgIHJldHVybiBy YzsKKyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBncnViX2RwcmludGYgKCJhcHBlbmRl ZHNpZyIsICJ1bnN1cHBvcnRlZCBzaWduYXR1cmUgZGF0YSB0eXBlIGFuZCAiCisgICAgICAgICAg ICAgICAgICAgICAgInNraXBwZWQgKCUiIFBSSXVHUlVCX1NJWkUgIilcbiIsIGkgKyAxKTsKKyAg ICB9CisKKyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7Cit9CisKKy8qIEFkZCB0aGUgY2VydGlmaWNh dGVzIGFuZCBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCB0byB0aGUgZGJ4IGxpc3QgZnJvbSBQS1Mu ICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorY3JlYXRlX2RieF9saXN0ICh2b2lkKQoreworICBncnVi X2Vycl90IHJjOworICBncnViX3NpemVfdCBpOworCisgIGZvciAoaSA9IDA7IGkgPCBncnViX3Br c19rZXlzdG9yZS5kYnhfZW50cmllczsgaSsrKQorICAgIHsKKyAgICAgIGlmIChpc194NTA5ICgm Z3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmd1aWQpID09IHRydWUpCisgICAgICAgIHsKKyAgICAg ICAgICByYyA9IGFkZF9jZXJ0aWZpY2F0ZSAoZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmRhdGEs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfcGtzX2tleXN0b3JlLmRieFtp XS5kYXRhX3NpemUsICZkYngsIGZhbHNlKTsKKyAgICAgICAgICBpZiAocmMgPT0gR1JVQl9FUlJf T1VUX09GX01FTU9SWSkKKyAgICAgICAgICAgIHJldHVybiByYzsKKyAgICAgICAgfQorICAgICAg ZWxzZSBpZiAoaXNfaGFzaCAoJmdydWJfcGtzX2tleXN0b3JlLmRieFtpXS5ndWlkKSA9PSB0cnVl KQorICAgICAgICB7CisgICAgICAgICAgcmMgPSBhZGRfaGFzaCAoKGNvbnN0IGdydWJfdWludDhf dCAqKikgZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmRhdGEsCisgICAgICAgICAgICAgICAgICAg ICAgICAgZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4W2ldLmRhdGFfc2l6ZSwgJmRieC5zaWduYXR1cmVz LAorICAgICAgICAgICAgICAgICAgICAgICAgICZkYnguc2lnbmF0dXJlX3NpemUsICZkYnguc2ln bmF0dXJlX2VudHJpZXMpOworICAgICAgICAgIGlmIChyYyAhPSBHUlVCX0VSUl9OT05FKQorICAg ICAgICAgICAgcmV0dXJuIHJjOworICAgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIGdydWJf ZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInVuc3VwcG9ydGVkIHNpZ25hdHVyZSBkYXRhIHR5cGUg YW5kICIKKyAgICAgICAgICAgICAgICAgICAgICAic2tpcHBlZCAoJSIgUFJJdUdSVUJfU0laRSAi KVxuIiwgaSArIDEpOworICAgIH0KKworICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKK30KKworLyoK KyAqIEV4dHJhY3QgdGhlIHg1MDkgY2VydGlmaWNhdGVzIGZyb20gdGhlIEVMRiBOb3RlIGhlYWRl ciwKKyAqIHBhcnNlIGl0LCBhbmQgYWRkIGl0IHRvIHRoZSBkYiBsaXN0LgorICovCitzdGF0aWMg Z3J1Yl9lcnJfdAorYnVpbGRfc3RhdGljX2RiX2xpc3QgKGNvbnN0IHN0cnVjdCBncnViX21vZHVs ZV9oZWFkZXIgKmhlYWRlcikKK3sKKyAgZ3J1Yl9lcnJfdCBlcnI7CisgIHN0cnVjdCBncnViX2Zp bGUgcHNldWRvX2ZpbGU7CisgIGdydWJfdWludDhfdCAqY2VydF9kYXRhID0gTlVMTDsKKyAgZ3J1 Yl9zaXplX3QgY2VydF9kYXRhX3NpemUgPSAwOworCisgIGdydWJfbWVtc2V0ICgmcHNldWRvX2Zp bGUsIDAsIHNpemVvZiAocHNldWRvX2ZpbGUpKTsKKyAgcHNldWRvX2ZpbGUuZnMgPSAmcHNldWRv X2ZzOworICBwc2V1ZG9fZmlsZS5zaXplID0gaGVhZGVyLT5zaXplIC0gc2l6ZW9mIChzdHJ1Y3Qg Z3J1Yl9tb2R1bGVfaGVhZGVyKTsKKyAgcHNldWRvX2ZpbGUuZGF0YSA9IChjaGFyICopIGhlYWRl ciArIHNpemVvZiAoc3RydWN0IGdydWJfbW9kdWxlX2hlYWRlcik7CisKKyAgZ3J1Yl9kcHJpbnRm ICgiYXBwZW5kZWRzaWciLCAiZm91bmQgYW4geDUwOSBrZXksIHNpemU9JSIgUFJJdUdSVUJfVUlO VDY0X1QgIlxuIiwKKyAgICAgICAgICAgICAgICBwc2V1ZG9fZmlsZS5zaXplKTsKKworICBlcnIg PSBmaWxlX3JlYWRfd2hvbGUgKCZwc2V1ZG9fZmlsZSwgJmNlcnRfZGF0YSwgJmNlcnRfZGF0YV9z aXplKTsKKyAgaWYgKGVyciAhPSBHUlVCX0VSUl9OT05FKQorICAgIHJldHVybiBlcnI7CisKKyAg ZXJyID0gYWRkX2NlcnRpZmljYXRlIChjZXJ0X2RhdGEsIGNlcnRfZGF0YV9zaXplLCAmZGIsIHRy dWUpOworICBncnViX2ZyZWUgKGNlcnRfZGF0YSk7CisKKyAgcmV0dXJuIGVycjsKK30KKworLyog RnJlZSBkYiBsaXN0IG1lbW9yeSAqLworc3RhdGljIHZvaWQKK2ZyZWVfZGJfbGlzdCAodm9pZCkK K3sKKyAgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKmNlcnQ7CisgIGdydWJfc2l6ZV90IGkgPSAw OworCisgIHdoaWxlIChkYi5jZXJ0cyAhPSBOVUxMKQorICAgIHsKKyAgICAgIGNlcnQgPSBkYi5j ZXJ0czsKKyAgICAgIGRiLmNlcnRzID0gZGIuY2VydHMtPm5leHQ7CisgICAgICBjZXJ0aWZpY2F0 ZV9yZWxlYXNlIChjZXJ0KTsKKyAgICAgIGdydWJfZnJlZSAoY2VydCk7CisgICAgfQorCisgIGZv ciAoaSA9IDA7IGkgPCBkYi5zaWduYXR1cmVfZW50cmllczsgaSsrKQorICAgIGdydWJfZnJlZSAo ZGIuc2lnbmF0dXJlc1tpXSk7CisKKyAgZ3J1Yl9mcmVlIChkYi5zaWduYXR1cmVzKTsKKyAgZ3J1 Yl9mcmVlIChkYi5zaWduYXR1cmVfc2l6ZSk7CisgIGdydWJfbWVtc2V0ICgmZGIsIDAsIHNpemVv ZiAoZGIpKTsKK30KKworLyogRnJlZSBkYnggbGlzdCBtZW1vcnkgKi8KK3N0YXRpYyB2b2lkCitm cmVlX2RieF9saXN0ICh2b2lkKQoreworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydDsK KyAgZ3J1Yl9zaXplX3QgaSA9IDA7CisKKyAgd2hpbGUgKGRieC5jZXJ0cyAhPSBOVUxMKQorICAg IHsKKyAgICAgIGNlcnQgPSBkYnguY2VydHM7CisgICAgICBkYnguY2VydHMgPSBkYnguY2VydHMt Pm5leHQ7CisgICAgICBjZXJ0aWZpY2F0ZV9yZWxlYXNlIChjZXJ0KTsKKyAgICAgIGdydWJfZnJl ZSAoY2VydCk7CisgICAgfQorCisgIGZvciAoaSA9IDA7IGkgPCBkYnguc2lnbmF0dXJlX2VudHJp ZXM7IGkrKykKKyAgICBncnViX2ZyZWUgKGRieC5zaWduYXR1cmVzW2ldKTsKKworICBncnViX2Zy ZWUgKGRieC5zaWduYXR1cmVzKTsKKyAgZ3J1Yl9mcmVlIChkYnguc2lnbmF0dXJlX3NpemUpOwor ICBncnViX21lbXNldCAoJmRieCwgMCwgc2l6ZW9mIChkYngpKTsKK30KKwogR1JVQl9NT0RfSU5J VCAoYXBwZW5kZWRzaWcpCiB7CiAgIGludCByYzsKQEAgLTYyMSw3ICsxMDU0LDYgQEAgR1JVQl9N T0RfSU5JVCAoYXBwZW5kZWRzaWcpCiAgIGlmIChncnViX2llZWUxMjc1X2lzX3NlY3VyZV9ib290 ICgpID09IEdSVUJfU0JfRU5GT1JDRUQpCiAgICAgY2hlY2tfc2lncyA9IHRydWU7CiAKLSAgZGIg PSBOVUxMOwogICBncnViX3JlZ2lzdGVyX3ZhcmlhYmxlX2hvb2sgKCJjaGVja19hcHBlbmRlZF9z aWduYXR1cmVzIiwgZ3J1Yl9lbnZfcmVhZF9zZWMsIGdydWJfZW52X3dyaXRlX3NlYyk7CiAgIGdy dWJfZW52X2V4cG9ydCAoImNoZWNrX2FwcGVuZGVkX3NpZ25hdHVyZXMiKTsKIApAQCAtNjMwLDM4 ICsxMDYyLDU0IEBAIEdSVUJfTU9EX0lOSVQgKGFwcGVuZGVkc2lnKQogICAgIGdydWJfZmF0YWwg KCJlcnJvciBpbml0aW5nIEFTTi4xIGRhdGEgc3RydWN0dXJlczogJWQ6ICVzXG4iLCByYywgYXNu MV9zdHJlcnJvciAocmMpKTsKIAogICAvKgotICAgKiBJZiBzaWduYXR1cmUgdmVyaWZpY2F0aW9u IGlzIGVuYWJsZWQsCi0gICAqIGV4dHJhY3QgdHJ1c3RlZCBrZXlzIGZyb20gRUxGIE5vdGUgYW5k IHN0b3JlIHRoZW0gaW4gdGhlIGRiLgorICAgKiBJZiBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGlz IGVuYWJsZWQgd2l0aCBzdGF0aWMga2V5IG1hbmFnZW1lbnQgbW9kZSwKKyAgICogZXh0cmFjdCB0 cnVzdGVkIGtleXMgZnJvbSBFTEYgTm90ZSBhbmQgc3RvcmUgdGhlbSBpbiB0aGUgZGIgbGlzdC4K ICAgICovCi0gIGlmIChjaGVja19zaWdzID09IHRydWUpCisgIGlmIChncnViX3Brc191c2Vfa2V5 c3RvcmUgPT0gZmFsc2UgJiYgY2hlY2tfc2lncyA9PSB0cnVlKQogICAgIHsKICAgICAgIEZPUl9N T0RVTEVTIChoZWFkZXIpCi0gICAgICB7Ci0gICAgICAgIHN0cnVjdCBncnViX2ZpbGUgcHNldWRv X2ZpbGU7Ci0gICAgICAgIHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpwayA9IE5VTEw7Ci0gICAg ICAgIGdydWJfZXJyX3QgZXJyOwotCi0gICAgICAgIC8qIE5vdCBhbiBYLjUwOSBjZXJ0aWZpY2F0 ZSwgc2tpcC4gKi8KLSAgICAgICAgaWYgKGhlYWRlci0+dHlwZSAhPSBPQkpfVFlQRV9YNTA5X1BV QktFWSkKLSAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBncnViX21lbXNldCAoJnBzZXVk b19maWxlLCAwLCBzaXplb2YgKHBzZXVkb19maWxlKSk7Ci0gICAgICAgIHBzZXVkb19maWxlLmZz ID0gJnBzZXVkb19mczsKLSAgICAgICAgcHNldWRvX2ZpbGUuc2l6ZSA9IGhlYWRlci0+c2l6ZSAt IHNpemVvZiAoc3RydWN0IGdydWJfbW9kdWxlX2hlYWRlcik7Ci0gICAgICAgIHBzZXVkb19maWxl LmRhdGEgPSAoY2hhciAqKSBoZWFkZXIgKyBzaXplb2YgKHN0cnVjdCBncnViX21vZHVsZV9oZWFk ZXIpOwotCi0gICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgImZvdW5kIGFuIHg1 MDkga2V5LCBzaXplPSUiIFBSSXVHUlVCX1VJTlQ2NF9UICJcbiIsCi0gICAgICAgICAgICAgICAg ICAgICAgcHNldWRvX2ZpbGUuc2l6ZSk7Ci0KLSAgICAgICAgZXJyID0gcmVhZF9jZXJ0X2Zyb21f ZmlsZSAoJnBzZXVkb19maWxlLCAmcGspOwotICAgICAgICBpZiAoZXJyICE9IEdSVUJfRVJSX05P TkUpCi0gICAgICAgICAgZ3J1Yl9mYXRhbCAoImVycm9yIGxvYWRpbmcgaW5pdGlhbCBrZXk6ICVz IiwgZ3J1Yl9lcnJtc2cpOwotCi0gICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwg ImxvYWRlZCBjZXJ0aWZpY2F0ZSBDTj0nJXMnXG4iLCBway0+c3ViamVjdCk7Ci0KLSAgICAgICAg cGstPm5leHQgPSBkYjsKLSAgICAgICAgZGIgPSBwazsKLSAgICAgIH0KKyAgICAgICAgeworICAg ICAgICAgIC8qIE5vdCBhbiBFTEYgbW9kdWxlLCBza2lwLiAgKi8KKyAgICAgICAgICBpZiAoaGVh ZGVyLT50eXBlICE9IE9CSl9UWVBFX1g1MDlfUFVCS0VZKQorICAgICAgICAgICAgY29udGludWU7 CisgICAgICAgICAgcmMgPSBidWlsZF9zdGF0aWNfZGJfbGlzdCAoaGVhZGVyKTsKKyAgICAgICAg ICBpZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ZnJlZV9kYl9saXN0ICgpOworICAgICAgICAgICAgICBncnViX2Vycm9yIChyYywgInN0YXRpYyBk YiBsaXN0IGNyZWF0aW9uIGZhaWxlZCIpOworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UK KyAgICAgICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInRoZSBkYiBsaXN0IG5v dyBoYXMgJSIgUFJJdUdSVUJfU0laRSAiIHN0YXRpYyBrZXlzXG4iLAorICAgICAgICAgICAgICAg ICAgICAgICAgICBkYi5jZXJ0X2VudHJpZXMpOworICAgICAgICB9CisgICAgfQorICAvKgorICAg KiBJZiBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGlzIGVuYWJsZWQgd2l0aCBkeW5hbWljIGtleSBt YW5hZ2VtZW50IG1vZGUsCisgICAqIGV4dHJhY3QgdHJ1c3RlZCBhbmQgZGlzdHJ1c3RlZCBrZXlz IGZyb20gUEtTIGFuZCBzdG9yZSB0aGVtIGluIHRoZSBkYiBhbmQgZGJ4IGxpc3QuCisgICAqLwor ICBlbHNlIGlmIChncnViX3Brc191c2Vfa2V5c3RvcmUgPT0gdHJ1ZSAmJiBjaGVja19zaWdzID09 IHRydWUpCisgICAgeworICAgICAgcmMgPSBjcmVhdGVfZGJfbGlzdCAoKTsKKyAgICAgIGlmIChy YyAhPSBHUlVCX0VSUl9OT05FKQorICAgICAgICB7CisgICAgICAgICAgZnJlZV9kYl9saXN0ICgp OworICAgICAgICAgIGdydWJfZXJyb3IgKHJjLCAiZGIgbGlzdCBjcmVhdGlvbiBmYWlsZWQiKTsK KyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgcmMgPSBjcmVhdGVf ZGJ4X2xpc3QgKCk7CisgICAgICAgICAgaWYgKHJjICE9IEdSVUJfRVJSX05PTkUpCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgIGZyZWVfZGJfbGlzdCAoKTsKKyAgICAgICAgICAgICAgZnJl ZV9kYnhfbGlzdCAoKTsKKyAgICAgICAgICAgICAgZ3J1Yl9lcnJvciAocmMsICJkYnggbGlzdCBj cmVhdGlvbiBmYWlsZWQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAg ICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJ0aGUgZGIgbGlzdCBub3cgaGFzICUi IFBSSXVHUlVCX1NJWkUgIiBrZXlzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUg ZGJ4IGxpc3Qgbm93IGhhcyAlIiBQUkl1R1JVQl9TSVpFICIga2V5c1xuIiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgZGIuc2lnbmF0dXJlX2VudHJpZXMgKyBkYi5jZXJ0X2VudHJpZXMsIGRi eC5zaWduYXR1cmVfZW50cmllcyk7CisgICAgICAgIH0KKyAgICAgIGdydWJfcGtzX2ZyZWVfa2V5 c3RvcmUgKCk7CiAgICAgfQogCiAgIGNtZF9kYl9jZXJ0ID0gZ3J1Yl9yZWdpc3Rlcl9jb21tYW5k ICgiYXBwZW5kX2FkZF9kYl9jZXJ0IiwgZ3J1Yl9jbWRfZGJfY2VydCwgTl8oIlg1MDlfQ0VSVElG SUNBVEUiKSwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9jcnlwdG8uaCBiL2luY2x1ZGUvZ3J1 Yi9jcnlwdG8uaAppbmRleCBiMGQ3YWRkMWQuLjAwZDA3NGRmOCAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9ncnViL2NyeXB0by5oCisrKyBiL2luY2x1ZGUvZ3J1Yi9jcnlwdG8uaApAQCAtNTEwLDYgKzUx MCw3IEBAIGdydWJfY3J5cHRvX2htYWNfYnVmZmVyIChjb25zdCBzdHJ1Y3QgZ2NyeV9tZF9zcGVj ICptZCwKIGV4dGVybiBnY3J5X21kX3NwZWNfdCBfZ2NyeV9kaWdlc3Rfc3BlY19tZDU7CiBleHRl cm4gZ2NyeV9tZF9zcGVjX3QgX2djcnlfZGlnZXN0X3NwZWNfc2hhMTsKIGV4dGVybiBnY3J5X21k X3NwZWNfdCBfZ2NyeV9kaWdlc3Rfc3BlY19zaGEyNTY7CitleHRlcm4gZ2NyeV9tZF9zcGVjX3Qg X2djcnlfZGlnZXN0X3NwZWNfc2hhMzg0OwogZXh0ZXJuIGdjcnlfbWRfc3BlY190IF9nY3J5X2Rp Z2VzdF9zcGVjX3NoYTUxMjsKIGV4dGVybiBnY3J5X21kX3NwZWNfdCBfZ2NyeV9kaWdlc3Rfc3Bl Y19jcmMzMjsKIGV4dGVybiBnY3J5X2NpcGhlcl9zcGVjX3QgX2djcnlfY2lwaGVyX3NwZWNfYWVz OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL2VmaS9wa3MuaCBiL2luY2x1ZGUvZ3J1Yi9lZmkv cGtzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5mZjMwNmY1OTEKLS0t IC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2dydWIvZWZpL3Brcy5oCkBAIC0wLDAgKzEsMTEyIEBA CisvKgorICogQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxNSwgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMKKyAqIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcg bWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUKKyAqIHVuZGVyIHRoZSB0 ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgMi1DbGF1c2UgQlNEIExpY2Vuc2Ugd2hpY2gKKyAq IGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k aXRpb25zIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRp c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJB UyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUg RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09O VFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT RUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBodHRwczov L2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazItc3RhZ2luZyAoZWRrMi1zdGFnaW5nIHJlcG8gb2Yg dGlhbm9jb3JlKSwKKyAqIHRoZSBJbWFnZUF1dGhlbnRpY2F0aW9uLmggZmlsZSB1bmRlciBpdCwg YW5kIGhlcmUncyB0aGUgY29weXJpZ2h0IGFuZCBsaWNlbnNlLgorICoKKyAqIE1kZVBrZy9JbmNs dWRlL0d1aWQvSW1hZ2VBdXRoZW50aWNhdGlvbi5oCisgKgorICogQ29weXJpZ2h0IDIwMjIsIDIw MjMsIDIwMjQsIDIwMjUgSUJNIENvcnAuCisgKi8KKworI2lmbmRlZiBQS1NfSEVBREVSCisjZGVm aW5lIFBLU19IRUFERVIgICAxCisKKyNpbmNsdWRlIDxncnViL3R5cGVzLmg+CisKKy8qCisgKiBJ dCBpcyBkZXJpdmVkIGZyb20gRUZJX0NFUlRfWDUwOV9HVUlELgorICogaHR0cHM6Ly9naXRodWIu Y29tL3RpYW5vY29yZS9lZGsyLXN0YWdpbmcvYmxvYi9tYXN0ZXIvTWRlUGtnL0luY2x1ZGUvR3Vp ZC9JbWFnZUF1dGhlbnRpY2F0aW9uLmgKKyAqLworI2RlZmluZSBHUlVCX1BLU19DRVJUX1g1MDlf R1VJRCBcCisgIChncnViX2d1aWRfdCkgXAorICB7IDB4YTE1OWMwYTUsIDB4ZTQ5NCwgMHhhNzRh LCBcCisgICAgeyAweDg3LCAweGI1LCAweGFiLCAweDE1LCAweDVjLCAweDJiLCAweGYwLCAweDcy IH0gXAorICB9CisKKy8qCisgKiBJdCBpcyBkZXJpdmVkIGZyb20gRUZJX0NFUlRfU0hBMjU2X0dV SUQuCisgKiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazItc3RhZ2luZy9ibG9iL21h c3Rlci9NZGVQa2cvSW5jbHVkZS9HdWlkL0ltYWdlQXV0aGVudGljYXRpb24uaAorICovCisjZGVm aW5lIEdSVUJfUEtTX0NFUlRfU0hBMjU2X0dVSUQgXAorICAoZ3J1Yl9ndWlkX3QpIFwKKyAgeyAw eDI2MTZjNGMxLCAweDRjNTAsIDB4OTI0MCwgXAorICAgIHsgMHhhYywgMHhhOSwgMHg0MSwgMHhm OSwgMHgzNiwgMHg5MywgMHg0MywgMHgyOCB9IFwKKyAgfQorCisvKgorICogSXQgaXMgZGVyaXZl ZCBmcm9tIEVGSV9DRVJUX1NIQTM4NF9HVUlELgorICogaHR0cHM6Ly9naXRodWIuY29tL3RpYW5v Y29yZS9lZGsyLXN0YWdpbmcvYmxvYi9tYXN0ZXIvTWRlUGtnL0luY2x1ZGUvR3VpZC9JbWFnZUF1 dGhlbnRpY2F0aW9uLmgKKyAqLworI2RlZmluZSBHUlVCX1BLU19DRVJUX1NIQTM4NF9HVUlEIFwK KyAgKGdydWJfZ3VpZF90KSBcCisgIHsgMHgwNzUzM2VmZiwgMHhkMDlmLCAweGM5NDgsIFwKKyAg ICB7IDB4ODUsIDB4ZjEsIDB4OGEsIDB4ZDUsIDB4NmMsIDB4NzAsIDB4MWUsIDB4MSB9IFwKKyAg fQorCisvKgorICogSXQgaXMgZGVyaXZlZCBmcm9tIEVGSV9DRVJUX1NIQTUxMl9HVUlELgorICog aHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLXN0YWdpbmcvYmxvYi9tYXN0ZXIvTWRl UGtnL0luY2x1ZGUvR3VpZC9JbWFnZUF1dGhlbnRpY2F0aW9uLmgKKyAqLworI2RlZmluZSBHUlVC X1BLU19DRVJUX1NIQTUxMl9HVUlEIFwKKyAgKGdydWJfZ3VpZF90KSBcCisgIHsgMHhhZTBmM2Uw OSwgMHhjNGE2LCAweDUwNGYsIFwKKyAgICB7IDB4OWYsIDB4MWIsIDB4ZDQsIDB4MWUsIDB4MmIs IDB4ODksIDB4YzEsIDB4OWEgfSBcCisgIH0KKworLyoKKyAqIEl0IGlzIGRlcml2ZWQgZnJvbSBF RklfQ0VSVF9YNTA5X1NIQTI1Nl9HVUlELgorICogaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29y ZS9lZGsyLXN0YWdpbmcvYmxvYi9tYXN0ZXIvTWRlUGtnL0luY2x1ZGUvR3VpZC9JbWFnZUF1dGhl bnRpY2F0aW9uLmgKKyAqLworI2RlZmluZSBHUlVCX1BLU19DRVJUX1g1MDlfU0hBMjU2X0dVSUQg XAorICAoZ3J1Yl9ndWlkX3QpIFwKKyAgeyAweDkyYTRkMjNiLCAweGMwOTYsIDB4Nzk0MCwgXAor ICAgIHsgMHhiNCwgMHgyMCwgMHhmYywgMHhmOSwgMHg4ZSwgMHhmMSwgMHgwMywgMHhlZCB9IFwK KyAgfQorCisvKgorICogSXQgaXMgZGVyaXZlZCBmcm9tIEVGSV9DRVJUX1g1MDlfU0hBMzg0X0dV SUQuCisgKiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazItc3RhZ2luZy9ibG9iL21h c3Rlci9NZGVQa2cvSW5jbHVkZS9HdWlkL0ltYWdlQXV0aGVudGljYXRpb24uaAorICovCisjZGVm aW5lIEdSVUJfUEtTX0NFUlRfWDUwOV9TSEEzODRfR1VJRCAgICAgXAorICAoZ3J1Yl9ndWlkX3Qp IFwKKyAgeyAweDZlODc3NjcwLCAweGMyODAsIDB4ZTY0ZSwgXAorICAgIHsgMHhhYSwgMHhkMiwg MHgyOCwgMHhiMywgMHg0OSwgMHhhNiwgMHg4NiwgMHg1YiB9IFwKKyAgfQorCisvKgorICogSXQg aXMgZGVyaXZlZCBmcm9tIEVGSV9DRVJUX1g1MDlfU0hBNTEyX0dVSUQuCisgKiBodHRwczovL2dp dGh1Yi5jb20vdGlhbm9jb3JlL2VkazItc3RhZ2luZy9ibG9iL21hc3Rlci9NZGVQa2cvSW5jbHVk ZS9HdWlkL0ltYWdlQXV0aGVudGljYXRpb24uaAorICovCisjZGVmaW5lIEdSVUJfUEtTX0NFUlRf WDUwOV9TSEE1MTJfR1VJRCBcCisgIChncnViX2d1aWRfdCkgXAorICB7IDB4NjNiZjZkNDQsIDB4 MDIyNSwgMHhkYTRjLCBcCisgICAgeyAweGJjLCAweGZhLCAweDI0LCAweDY1LCAweGQyLCAweGIw LCAweGZlLCAweDlkIH0gXAorICB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnVi L3R5cGVzLmggYi9pbmNsdWRlL2dydWIvdHlwZXMuaAppbmRleCA0NTA3OWJmNjUuLmIzYmE3NjJm YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9ncnViL3R5cGVzLmgKKysrIGIvaW5jbHVkZS9ncnViL3R5 cGVzLmgKQEAgLTM3OSw2ICszNzksOCBAQCBzdHJ1Y3QgZ3J1Yl9ndWlkCiB9IF9fYXR0cmlidXRl X18gKChhbGlnbmVkKDQpKSk7CiB0eXBlZGVmIHN0cnVjdCBncnViX2d1aWQgZ3J1Yl9ndWlkX3Q7 CiAKKyNkZWZpbmUgR1JVQl9HVUlEX1NJWkUgICAgKHNpemVvZiAoZ3J1Yl9ndWlkX3QpKQorCiBz dHJ1Y3QgZ3J1Yl9wYWNrZWRfZ3VpZAogewogICBncnViX3VpbnQzMl90IGRhdGExOwpAQCAtMzg4 LDQgKzM5MCw2IEBAIHN0cnVjdCBncnViX3BhY2tlZF9ndWlkCiB9IEdSVUJfUEFDS0VEOwogdHlw ZWRlZiBzdHJ1Y3QgZ3J1Yl9wYWNrZWRfZ3VpZCBncnViX3BhY2tlZF9ndWlkX3Q7CiAKKyNkZWZp bmUgR1JVQl9QQUNLRURfR1VJRF9TSVpFICAgIChzaXplb2YgKGdydWJfcGFja2VkX2d1aWRfdCkp CisKICNlbmRpZiAvKiAhIEdSVUJfVFlQRVNfSEVBREVSICovCi0tIAoyLjM5LjUgKEFwcGxlIEdp dC0xNTQpCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K R3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBnbnUub3JnCmh0dHBzOi8vbGlzdHMu Z251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK