Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ubYJB-002EYr-Ku for pgpool-hackers@arkaria.postgresql.org; Tue, 15 Jul 2025 05:34:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ubYJ7-00H7Cv-Du for pgpool-hackers@arkaria.postgresql.org; Tue, 15 Jul 2025 05:34:26 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ubYJ6-00H7Cn-Rs for pgpool-hackers@lists.postgresql.org; Tue, 15 Jul 2025 05:34:25 +0000 Received: from meldrar.postgresql.org ([2a02:c0:301:0:ffff::31]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1ubYJ3-007M3R-2a for pgpool-hackers@lists.postgresql.org; Tue, 15 Jul 2025 05:34:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Content-Transfer-Encoding:Content-Type: Mime-Version:References:In-Reply-To:From:Subject:To:Message-Id:Date:Sender: Reply-To:Cc:Content-ID:Content-Description; bh=ayIdlOTKts7uff9PVeCzZkAmeEKNS8tMFF01KgN0cAQ=; b=2sRjwjjoPWQGwOUcWtYFiPWcr7 0J4QnK7z9Itaf2EfWyBq7oAQTQnn+F9s7gxhtCc2sedOOVZLcKIkLB7NEVBeq+QXc528oeMWDJkCw NcTirQdnTyh4kLJYi/r/ODJLiR0sAyb4vra6ndJqIE3NA8lKdbtIFNX5Ur393E8K43X7lxWLnQFhX hNP/yBe3FKfXPYVsTYcWQJVEQbcDd+T3r3F4MSekAY1MyUlfCQEltO4dHnVqh+z5cie7gPrUd8ZnD NkFZJw3a6q0w9jWy+4CYc+0BiJyEa4KmrzdSvNStKd4HYt8jZPkenyuhULTNVAddansJWlFVZ/+F+ CbjiNmAQ==; Received: from [2409:11:4120:300:872f:a3bb:594c:65dc] (helo=localhost) by meldrar.postgresql.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.96) (envelope-from ) id 1ubYIz-00AXDq-0Q for pgpool-hackers@lists.postgresql.org; Tue, 15 Jul 2025 05:34:20 +0000 Date: Tue, 15 Jul 2025 14:34:08 +0900 (JST) Message-Id: <20250715.143408.2248698006180584277.ishii@postgresql.org> To: pgpool-hackers@lists.postgresql.org Subject: Re: Implement protocol 3.2 BackendKeyData and cancel request message From: Tatsuo Ishii In-Reply-To: <20250715.105440.1906014753922388607.ishii@postgresql.org> References: <20250714.155710.1706961744888449986.ishii@postgresql.org> <20250715.105440.1906014753922388607.ishii@postgresql.org> X-Mailer: Mew version 6.8 on Emacs 26.3 Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Tue_Jul_15_14_34_08_2025_911)--" Content-Transfer-Encoding: 7bit X-Host-Lookup-Failed: Reverse DNS lookup failed for 2409:11:4120:300:872f:a3bb:594c:65dc (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ----Next_Part(Tue_Jul_15_14_34_08_2025_911)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit >> Starting from PostgreSQL 18, frontend/backend protocol has been >> changed from 3.0 to 3.2. In the changes the BackendKeyData and query >> cancel message are modified to allow variable length cancel key. >> >> This commit is a follow up to 766e73811 and implements the changes >> needed above. See attached patches. >> >> With the patch we can connect to PostgreSQL 18 frontend and backend >> using 3.2 protocol. >> >> Since PostgreSQL 18's psql uses 3.0 protocol by default, in order to >> test 3.2 protocol, you can do something like: >> >> PGMAXPROTOCOLVERSION="3.2" psql -p 11000 test > > Attached is the v2 patch which add more comments and some cosmetic > changes. Attached is the v3 patch which fixes a compiler error. Best regards, -- Tatsuo Ishii SRA OSS K.K. English: http://www.sraoss.co.jp/index_en/ Japanese:http://www.sraoss.co.jp ----Next_Part(Tue_Jul_15_14_34_08_2025_911)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v3-0001-Feature-implement-protocol-version-3.2-BackendKey.patch" RnJvbSA1MjNiM2Q5NGQ5YjliZDVlNjZkNTQ3ZWYyYzU4OGU3MjA1NTIyMDc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBUdWUsIDE1IEp1bCAyMDI1IDE0OjMwOjQ3ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2M10g RmVhdHVyZTogaW1wbGVtZW50IHByb3RvY29sIHZlcnNpb24gMy4yIEJhY2tlbmRLZXlEYXRhIGFu ZAogcXVlcnkgY2FuY2VsIG1lc3NhZ2UuCgpTdGFydGluZyBmcm9tIFBvc3RncmVTUUwgMTgsIGZy b250ZW5kL2JhY2tlbmQgcHJvdG9jb2wgaGFzIGJlZW4KY2hhbmdlZCB0byAzLjIuIEluIHRoZSBj aGFuZ2VzIHRoZSBCYWNrZW5kS2V5RGF0YSBhbmQgcXVlcnkgY2FuY2VsCm1lc3NhZ2UgYXJlIG1v ZGlmaWVkIHRvIGFsbG93IHZhcmlhYmxlIGxlbmd0aCBjYW5jZWwga2V5LgoKVGhpcyBjb21taXQg aW1wbGVtZW50cyB0aGUgY2hhbmdlcyBhbmQgbm93IHdlIGNhbiBjb25uZWN0IHRvClBvc3RncmVT UUwgZnJvbnRlbmQgYW5kIGJhY2tlbmQgdXNpbmcgMy4yIHByb3RvY29sLgoKRXhhbXBsZSBzZXNz aW9uIGlzOgpQR01BWFBST1RPQ09MVkVSU0lPTj0iMy4yIiBwc3FsIC1wIDExMDAwIHRlc3QKCkF1 dGhvcjogVGF0c3VvIElzaGlpIDxpc2hpaUBwb3N0Z3Jlc3FsLm9yZz4KRGlzY3Vzc2lvbjogaHR0 cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC8yMDI1MDcxNC4xNTU3MTAuMTcwNjk2 MTc0NDg4ODQ0OTk4Ni5pc2hpaSU0MHBvc3RncmVzcWwub3JnCi0tLQogc3JjL2F1dGgvcG9vbF9h dXRoLmMgICAgICAgICAgICAgICAgICAgICAgfCA4NSArKysrKysrKysrKysrKy0tLS0tLS0tLQog c3JjL2NvbnRleHQvcG9vbF9xdWVyeV9jb250ZXh0LmMgICAgICAgICAgfCAgOCArKy0KIHNyYy9p bmNsdWRlL3BjcC9saWJwY3BfZXh0LmggICAgICAgICAgICAgIHwgIDggKystCiBzcmMvaW5jbHVk ZS9wb29sLmggICAgICAgICAgICAgICAgICAgICAgICB8IDExICsrLQogc3JjL2luY2x1ZGUvcHJv dG9jb2wvcG9vbF9wcm9jZXNzX3F1ZXJ5LmggfCAgNCArLQogc3JjL2luY2x1ZGUvcHJvdG9jb2wv cG9vbF9wcm90b19tb2R1bGVzLmggfCAgMyArLQogc3JjL3Byb3RvY29sL2NoaWxkLmMgICAgICAg ICAgICAgICAgICAgICAgfCA3MCArKysrKysrKysrKysrLS0tLS0tCiBzcmMvcHJvdG9jb2wvcG9v bF9wcm9jZXNzX3F1ZXJ5LmMgICAgICAgICB8IDM5ICsrKysrKystLS0tCiBzcmMvcHJvdG9jb2wv cG9vbF9wcm90b19tb2R1bGVzLmMgICAgICAgICB8ICAyICstCiBzcmMvcmV3cml0ZS9wb29sX2xv YmouYyAgICAgICAgICAgICAgICAgICB8ICA0ICstCiAxMCBmaWxlcyBjaGFuZ2VkLCAxNTEgaW5z ZXJ0aW9ucygrKSwgODMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2F1dGgvcG9vbF9h dXRoLmMgYi9zcmMvYXV0aC9wb29sX2F1dGguYwppbmRleCA1NGQ2NDZiYzMuLjE5OGQ4Yzk5ZSAx MDA2NDQKLS0tIGEvc3JjL2F1dGgvcG9vbF9hdXRoLmMKKysrIGIvc3JjL2F1dGgvcG9vbF9hdXRo LmMKQEAgLTU4LDcgKzU4LDggQEAKICNkZWZpbmUgTUFYX1NBU0xfUEFZTE9BRF9MRU4gMTAyNAog CiAKLXN0YXRpYyBQT09MX1NUQVRVUyBwb29sX3NlbmRfYmFja2VuZF9rZXlfZGF0YShQT09MX0NP Tk5FQ1RJT04gKiBmcm9udGVuZCwgaW50IHBpZCwgaW50IGtleSwgaW50IHByb3RvTWFqb3IpOwor c3RhdGljIHZvaWQgcG9vbF9zZW5kX2JhY2tlbmRfa2V5X2RhdGEoUE9PTF9DT05ORUNUSU9OICog ZnJvbnRlbmQsIGludCBwaWQsCisJCQkJCQkJCQkgICBjaGFyICprZXksIGludDMyIGtleWxlbiwg aW50IHByb3RvTWFqb3IpOwogc3RhdGljIGludAlkb19jbGVhcl90ZXh0X3Bhc3N3b3JkKFBPT0xf Q09OTkVDVElPTiAqIGJhY2tlbmQsIFBPT0xfQ09OTkVDVElPTiAqIGZyb250ZW5kLCBpbnQgcmVh dXRoLCBpbnQgcHJvdG9NYWpvcik7CiBzdGF0aWMgdm9pZCBwb29sX3NlbmRfYXV0aF9mYWlsKFBP T0xfQ09OTkVDVElPTiAqIGZyb250ZW5kLCBQT09MX0NPTk5FQ1RJT05fUE9PTCAqIGNwKTsKIHN0 YXRpYyBpbnQgZG9fbWQ1KFBPT0xfQ09OTkVDVElPTiAqIGJhY2tlbmQsIFBPT0xfQ09OTkVDVElP TiAqIGZyb250ZW5kLCBpbnQgcmVhdXRoLCBpbnQgcHJvdG9NYWpvciwKQEAgLTkyLDkgKzkzLDcg QEAgY29ubmVjdGlvbl9kb19hdXRoKFBPT0xfQ09OTkVDVElPTl9QT09MX1NMT1QgKiBjcCwgY2hh ciAqcGFzc3dvcmQpCiAJaW50CQkJbGVuZ3RoOwogCWludAkJCWF1dGhfa2luZDsKIAljaGFyCQlz dGF0ZTsKLQljaGFyCSAgICpwOwotCWludAkJCXBpZCwKLQkJCQlrZXk7CisJaW50CQkJcGlkOwog CWJvb2wJCWtleWRhdGFfZG9uZTsKIAogCS8qCkBAIC0yNDQsNiArMjQzLDkgQEAgY29ubmVjdGlv bl9kb19hdXRoKFBPT0xfQ09OTkVDVElPTl9QT09MX1NMT1QgKiBjcCwgY2hhciAqcGFzc3dvcmQp CiAKIAkJc3dpdGNoIChraW5kKQogCQl7CisJCQljaGFyCSpwOworCQkJaW50MzIJa2V5bGVuOwor CiAJCQljYXNlICdLJzoJCQkvKiBiYWNrZW5kIGtleSBkYXRhICovCiAJCQkJa2V5ZGF0YV9kb25l ID0gdHJ1ZTsKIAkJCQllcmVwb3J0KERFQlVHMSwKQEAgLTI1MSwxMiArMjUzLDE0IEBAIGNvbm5l Y3Rpb25fZG9fYXV0aChQT09MX0NPTk5FQ1RJT05fUE9PTF9TTE9UICogY3AsIGNoYXIgKnBhc3N3 b3JkKQogCiAJCQkJLyogcmVhZCBtZXNzYWdlIGxlbmd0aCAqLwogCQkJCXBvb2xfcmVhZF93aXRo X2Vycm9yKGNwLT5jb24sICZsZW5ndGgsIHNpemVvZihsZW5ndGgpLCAibWVzc2FnZSBsZW5ndGgg Zm9yIGF1dGhlbnRpY2F0aW9uIGtpbmQgJ0snIik7Ci0JCQkJaWYgKG50b2hsKGxlbmd0aCkgIT0g MTIpCisJCQkJbGVuZ3RoID0gbnRvaGwobGVuZ3RoKTsKKwkJCQlrZXlsZW4gPSBsZW5ndGggLSBz aXplb2YoaW50MzIpIC0gc2l6ZW9mKGludDMyKTsKKwkJCQlpZiAoa2V5bGVuID4gTUFYX0NBTkNF TEtFWV9MRU5HVEgpCiAJCQkJewogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCShlcnJtc2co ImZhaWxlZCB0byBhdXRoZW50aWNhdGUiKSwKLQkJCQkJCQkgZXJyZGV0YWlsKCJpbnZhbGlkIGJh Y2tlbmQga2V5IGRhdGEgbGVuZ3RoLiByZWNlaXZlZCAlZCBieXRlcyB3aGVuIGV4cGVjdGluZyAx MiBieXRlcyIKLQkJCQkJCQkJCSAgICxudG9obChsZW5ndGgpKSkpOworCQkJCQkJCSBlcnJkZXRh aWwoImludmFsaWQgYmFja2VuZCBrZXkgZGF0YSBsZW5ndGguIHJlY2VpdmVkICVkIGJ5dGVzIGV4 Y2VlZGluZyAlZCIsIAorCQkJCQkJCQkJICAgbnRvaGwobGVuZ3RoKSwgTUFYX0NBTkNFTEtFWV9M RU5HVEgpKSk7CiAJCQkJfQogCiAJCQkJLyogcmVhZCBwaWQgKi8KQEAgLTI2NCw5ICsyNjgsOSBA QCBjb25uZWN0aW9uX2RvX2F1dGgoUE9PTF9DT05ORUNUSU9OX1BPT0xfU0xPVCAqIGNwLCBjaGFy ICpwYXNzd29yZCkKIAkJCQljcC0+cGlkID0gcGlkOwogCiAJCQkJLyogcmVhZCBrZXkgKi8KLQkJ CQlwb29sX3JlYWRfd2l0aF9lcnJvcihjcC0+Y29uLCAma2V5LCBzaXplb2Yoa2V5KSwKLQkJCQkJ CQkJCSAia2V5IGZvciBhdXRoZW50aWNhdGlvbiBraW5kICdLJyIpOwotCQkJCWNwLT5rZXkgPSBr ZXk7CisJCQkJa2V5bGVuID0gbGVuZ3RoIC0gc2l6ZW9mKGludDMyKSAtIHNpemVvZihpbnQzMik7 CisJCQkJcCA9IHBvb2xfcmVhZDIoY3AtPmNvbiwga2V5bGVuKTsKKwkJCQltZW1jcHkoY3AtPmtl eSwgcCwga2V5bGVuKTsKIAkJCQlicmVhazsKIAogCQkJY2FzZSAnWic6CQkJLyogUmVhZHkgZm9y IHF1ZXJ5ICovCkBAIC0zMzIsMTQgKzMzNiwxNSBAQCBwb29sX2RvX2F1dGgoUE9PTF9DT05ORUNU SU9OICogZnJvbnRlbmQsIFBPT0xfQ09OTkVDVElPTl9QT09MICogY3ApCiB7CiAJc2lnbmVkIGNo YXIga2luZDsKIAlpbnQJCQlwaWQ7Ci0JaW50CQkJa2V5OwogCWludAkJCXByb3RvTWFqb3I7CiAJ aW50CQkJbGVuZ3RoOwogCWludAkJCWF1dGhraW5kOwogCWludAkJCWk7CiAJaW50CQkJbWVzc2Fn ZV9sZW5ndGggPSAwOwogCVN0YXJ0dXBQYWNrZXQgKnNwOwotCisJaW50MzIJCWtleWxlbjsJLyog Y2FuY2VsIGtleSBsZW5ndGggKi8KKwljaGFyCWNhbmNlbF9rZXlbTUFYX0NBTkNFTEtFWV9MRU5H VEhdOworCWNoYXIJCSpwOwogCiAJcHJvdG9NYWpvciA9IE1BSU5fQ09OTkVDVElPTihjcCktPnNw LT5tYWpvcjsKIApAQCAtNzIyLDE3ICs3MjcsMjMgQEAgcmVhZF9raW5kOgogCX0KIAogCS8qCi0J ICogbWVzc2FnZSBsZW5ndGggKFYzIG9ubHkpCisJICogUmVhZCBCYWNrZW5kS2V5RGF0YSBtZXNz YWdlIGxlbmd0aC4KIAkgKi8KIAlpZiAocHJvdG9NYWpvciA9PSBQUk9UT19NQUpPUl9WMykKIAl7 Ci0JCWlmICgobGVuZ3RoID0gcG9vbF9yZWFkX21lc3NhZ2VfbGVuZ3RoKGNwKSkgIT0gMTIpCisJ CWxlbmd0aCA9IHBvb2xfcmVhZF9tZXNzYWdlX2xlbmd0aChjcCk7CisJCWtleWxlbiA9IGxlbmd0 aCAtIHNpemVvZihpbnQzMikgLSBzaXplb2YoaW50MzIpOworCQlpZiAoa2V5bGVuID4gTUFYX0NB TkNFTEtFWV9MRU5HVEgpCiAJCXsKIAkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJtc2coImF1 dGhlbnRpY2F0aW9uIGZhaWxlZCIpLAotCQkJCQkgZXJyZGV0YWlsKCJpbnZhbGlkIG1lc3NhZ2Vz IGxlbmd0aCglZCkgZm9yIEJhY2tlbmRLZXlEYXRhIiwgbGVuZ3RoKSkpOworCQkJCQkoZXJyY29k ZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCisJCQkJCSBlcnJtc2coImNhbmNlbCBrZXkg bGVuZ3RoIGV4Y2VlZHMgMjU2IGJ5dGVzIikpKTsKIAkJfQogCX0KKwllbHNlCisJCQlrZXlsZW4g PSA0OworCisJZWxvZyhERUJVRzEsICJjYW5jZWwga2V5IGxlbmd0aDogJWQiLCBrZXlsZW4pOwog CiAJLyoKIAkgKiBPSywgcmVhZCBwaWQgYW5kIHNlY3JldCBrZXkKQEAgLTc1OCwxMyArNzY5LDE3 IEBAIHJlYWRfa2luZDoKIAkJCUNPTk5FQ1RJT05fU0xPVChjcCwgaSktPnBpZCA9IGNwLT5pbmZv W2ldLnBpZCA9IHBpZDsKIAogCQkJLyogcmVhZCBrZXkgKi8KLQkJCWlmIChwb29sX3JlYWQoQ09O TkVDVElPTihjcCwgaSksICZrZXksIHNpemVvZihrZXkpKSA8IDApCisJCQlwID0gcG9vbF9yZWFk MihDT05ORUNUSU9OKGNwLCBpKSwga2V5bGVuKTsKKwkJCWlmIChwID09IE5VTEwpCiAJCQl7CiAJ CQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJtc2coImF1dGhlbnRpY2F0aW9uIGZhaWxlZCIp LAotCQkJCQkJIGVycmRldGFpbCgiZmFpbGVkIHRvIHJlYWQga2V5IGluIHNsb3QgJWQiLCBpKSkp OworCQkJCQkJIGVycmRldGFpbCgiZmFpbGVkIHRvIHJlYWQga2V5IG9mIGxlbmd0aDogJWQgaW4g c2xvdCAlZCIsIGtleWxlbiwgaSkpKTsKIAkJCX0KLQkJCUNPTk5FQ1RJT05fU0xPVChjcCwgaSkt PmtleSA9IGNwLT5pbmZvW2ldLmtleSA9IGtleTsKKwkJCW1lbWNweShDT05ORUNUSU9OX1NMT1Qo Y3AsIGkpLT5rZXksIHAsIGtleWxlbik7CisJCQltZW1jcHkoY3AtPmluZm9baV0ua2V5LCBwLCBr ZXlsZW4pOworCQkJbWVtY3B5KGNhbmNlbF9rZXksIHAsIGtleWxlbik7CisJCQlDT05ORUNUSU9O X1NMT1QoY3AsIGkpLT5rZXlsZW4gPSBjcC0+aW5mb1tpXS5rZXlsZW4gPSBrZXlsZW47CiAKIAkJ CWNwLT5pbmZvW2ldLm1ham9yID0gc3AtPm1ham9yOwogCkBAIC03OTEsMTAgKzgwNiwxMyBAQCBy ZWFkX2tpbmQ6CiAJCQkJKGVycm1zZygiYXV0aGVudGljYXRpb24gZmFpbGVkIiksCiAJCQkJIGVy cmRldGFpbCgicG9vbF9kb19hdXRoOiBhbGwgYmFja2VuZHMgYXJlIGRvd24iKSkpOwogCX0KLQlp ZiAocG9vbF9zZW5kX2JhY2tlbmRfa2V5X2RhdGEoZnJvbnRlbmQsIHBpZCwga2V5LCBwcm90b01h am9yKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJybXNnKCJhdXRoZW50aWNhdGlvbiBmYWls ZWQiKSwKLQkJCQkgZXJyZGV0YWlsKCJmYWlsZWQgdG8gc2VuZCBiYWNrZW5kIGRhdGEgdG8gZnJv bnRlbmQiKSkpOworCisJLyoKKwkgKiBXZSBzZW5kIHRoZSBCYWNrZW5kS2V5RGF0YSB0byBmcm9u dGVuZCwgd2hpY2ggYmVsb25ncyB0byB0aGUgbGFzdAorCSAqIGJhY2tlbmQgaW4gdGhlIGJhY2tl bmQgZ3JvdXAuCisJICovCisJcG9vbF9zZW5kX2JhY2tlbmRfa2V5X2RhdGEoZnJvbnRlbmQsIHBp ZCwgY2FuY2VsX2tleSwKKwkJCQkJCQkgICBNQUlOX0NPTk5FQ1RJT04oY3ApLT5rZXlsZW4sIHBy b3RvTWFqb3IpOwogCXJldHVybiAwOwogfQogCkBAIC04NzIsNyArODkwLDggQEAgcG9vbF9kb19y ZWF1dGgoUE9PTF9DT05ORUNUSU9OICogZnJvbnRlbmQsIFBPT0xfQ09OTkVDVElPTl9QT09MICog Y3ApCiAJcG9vbF93cml0ZV9hbmRfZmx1c2goZnJvbnRlbmQsICZtc2dsZW4sIHNpemVvZihtc2ds ZW4pKTsKIAogCS8qIHNlbmQgQmFja2VuZEtleURhdGEgKi8KLQlwb29sX3NlbmRfYmFja2VuZF9r ZXlfZGF0YShmcm9udGVuZCwgTUFJTl9DT05ORUNUSU9OKGNwKS0+cGlkLCBNQUlOX0NPTk5FQ1RJ T04oY3ApLT5rZXksIHByb3RvTWFqb3IpOworCXBvb2xfc2VuZF9iYWNrZW5kX2tleV9kYXRhKGZy b250ZW5kLCBNQUlOX0NPTk5FQ1RJT04oY3ApLT5waWQsIE1BSU5fQ09OTkVDVElPTihjcCktPmtl eSwKKwkJCQkJCQkgICBNQUlOX0NPTk5FQ1RJT04oY3ApLT5rZXlsZW4sIHByb3RvTWFqb3IpOwog CiAJcmV0dXJuIDA7CiB9CkBAIC05MDMsMjkgKzkyMiwyNyBAQCBwb29sX3NlbmRfYXV0aF9mYWls KFBPT0xfQ09OTkVDVElPTiAqIGZyb250ZW5kLCBQT09MX0NPTk5FQ1RJT05fUE9PTCAqIGNwKQog fQogCiAvKgotICogU2VuZCBiYWNrZW5kIGtleSBkYXRhIHRvIGZyb250ZW5kLiBpZiBzdWNjZXNz IHJldHVybiAwIG90aGVyd2lzZSBub24gMC4KKyAqIFNlbmQgYmFja2VuZCBrZXkgZGF0YSB0byBm cm9udGVuZC4KICAqLwotc3RhdGljIFBPT0xfU1RBVFVTIHBvb2xfc2VuZF9iYWNrZW5kX2tleV9k YXRhKFBPT0xfQ09OTkVDVElPTiAqIGZyb250ZW5kLCBpbnQgcGlkLCBpbnQga2V5LCBpbnQgcHJv dG9NYWpvcikKK3N0YXRpYyB2b2lkCitwb29sX3NlbmRfYmFja2VuZF9rZXlfZGF0YShQT09MX0NP Tk5FQ1RJT04gKiBmcm9udGVuZCwgaW50IHBpZCwKKwkJCQkJCSAgIGNoYXIgKmtleSwgaW50MzIg a2V5bGVuLCBpbnQgcHJvdG9NYWpvcikKIHsKIAljaGFyCQlraW5kOwotCWludAkJCWxlbjsKKwlp bnQzMgkJbGVuOwogCiAJLyogU2VuZCBiYWNrZW5kIGtleSBkYXRhICovCiAJa2luZCA9ICdLJzsK IAlwb29sX3dyaXRlKGZyb250ZW5kLCAma2luZCwgMSk7CiAJaWYgKHByb3RvTWFqb3IgPT0gUFJP VE9fTUFKT1JfVjMpCiAJewotCQlsZW4gPSBodG9ubCgxMik7CisJCWxlbiA9IGh0b25sKHNpemVv ZihpbnQzMikgKyBzaXplb2YoaW50MzIpICsga2V5bGVuKTsKIAkJcG9vbF93cml0ZShmcm9udGVu ZCwgJmxlbiwgc2l6ZW9mKGxlbikpOwogCX0KIAllcmVwb3J0KERFQlVHMSwKLQkJCShlcnJtc2co InNlbmRpbmcgYmFja2VuZCBrZXkgZGF0YSIpLAotCQkJIGVycmRldGFpbCgic2VuZCBwaWQgJWQg dG8gZnJvbnRlbmQiLCBudG9obChwaWQpKSkpOwotCisJCQkoZXJybXNnKCJzZW5kaW5nIGJhY2tl bmQga2V5IGRhdGEiKSkpOwogCXBvb2xfd3JpdGUoZnJvbnRlbmQsICZwaWQsIHNpemVvZihwaWQp KTsKLQlwb29sX3dyaXRlX2FuZF9mbHVzaChmcm9udGVuZCwgJmtleSwgc2l6ZW9mKGtleSkpOwot Ci0JcmV0dXJuIDA7CisJcG9vbF93cml0ZV9hbmRfZmx1c2goZnJvbnRlbmQsIGtleSwga2V5bGVu KTsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9jb250ZXh0L3Bvb2xfcXVlcnlf Y29udGV4dC5jIGIvc3JjL2NvbnRleHQvcG9vbF9xdWVyeV9jb250ZXh0LmMKaW5kZXggM2I5MDI4 NDk3Li5kMzk4YmVlNmQgMTAwNjQ0Ci0tLSBhL3NyYy9jb250ZXh0L3Bvb2xfcXVlcnlfY29udGV4 dC5jCisrKyBiL3NyYy9jb250ZXh0L3Bvb2xfcXVlcnlfY29udGV4dC5jCkBAIC00LDcgKzQsNyBA QAogICogcGdwb29sOiBhIGxhbmd1YWdlIGluZGVwZW5kZW50IGNvbm5lY3Rpb24gcG9vbCBzZXJ2 ZXIgZm9yIFBvc3RncmVTUUwKICAqIHdyaXR0ZW4gYnkgVGF0c3VvIElzaGlpCiAgKgotICogQ29w eXJpZ2h0IChjKSAyMDAzLTIwMjQJUGdQb29sIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICog Q29weXJpZ2h0IChjKSAyMDAzLTIwMjUJUGdQb29sIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAog ICoKICAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRo aXMgc29mdHdhcmUgYW5kCiAgKiBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5k IHdpdGhvdXQgZmVlIGlzIGhlcmVieQpAQCAtNjYzLDcgKzY2Myw4IEBAIHBvb2xfc2VuZF9hbmRf d2FpdChQT09MX1FVRVJZX0NPTlRFWFQgKiBxdWVyeV9jb250ZXh0LAogCQkJCQkJCQkJCQkJICAg Q09OTkVDVElPTihiYWNrZW5kLCBpKSwKIAkJCQkJCQkJCQkJCSAgIE1BSk9SKGJhY2tlbmQpLAog CQkJCQkJCQkJCQkJICAgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5waWQsCi0JCQkJCQkJCQkJ CQkgICBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSk7CisJCQkJCQkJCQkJCQkgICBNQUlO X0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSwKKwkJCQkJCQkJCQkJCSAgIE1BSU5fQ09OTkVDVElP TihiYWNrZW5kKS0+a2V5bGVuKTsKIAogCQkvKgogCQkgKiBDaGVjayBpZiBzb21lIGVycm9yIGRl dGVjdGVkLiAgSWYgc28sIGVtaXQgbG9nLiBUaGlzIGlzIHVzZWZ1bCB3aGVuCkBAIC04ODAsNyAr ODgxLDggQEAgcG9vbF9leHRlbmRlZF9zZW5kX2FuZF93YWl0KFBPT0xfUVVFUllfQ09OVEVYVCAq IHF1ZXJ5X2NvbnRleHQsCiAJCQkJCQkJCQkJCQkJICAgQ09OTkVDVElPTihiYWNrZW5kLCBpKSwK IAkJCQkJCQkJCQkJCQkgICBNQUpPUihiYWNrZW5kKSwKIAkJCQkJCQkJCQkJCQkgICBNQUlOX0NP Tk5FQ1RJT04oYmFja2VuZCktPnBpZCwKLQkJCQkJCQkJCQkJCQkgICBNQUlOX0NPTk5FQ1RJT04o YmFja2VuZCktPmtleSk7CisJCQkJCQkJCQkJCQkJICAgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQp LT5rZXksCisJCQkJCQkJCQkJCQkJICAgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXlsZW4p OwogCiAJCQkvKgogCQkJICogQ2hlY2sgaWYgc29tZSBlcnJvciBkZXRlY3RlZC4gIElmIHNvLCBl bWl0IGxvZy4gVGhpcyBpcyB1c2VmdWwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BjcC9saWJw Y3BfZXh0LmggYi9zcmMvaW5jbHVkZS9wY3AvbGlicGNwX2V4dC5oCmluZGV4IGQ3OWRkYzE1Ni4u M2E2ZDg3ODU4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wY3AvbGlicGNwX2V4dC5oCisrKyBi L3NyYy9pbmNsdWRlL3BjcC9saWJwY3BfZXh0LmgKQEAgLTEzNiw2ICsxMzYsMTEgQEAgdHlwZWRl ZiBlbnVtCiAJQ09OTkVDVElORwogfQkJCVByb2Nlc3NTdGF0dXM7CiAKKy8qCisgKiBtYW1pbXVt IGNhbmNlbCBrZXkgbGVuZ3RoCisqLworI2RlZmluZQlNQVhfQ0FOQ0VMS0VZX0xFTkdUSAkyNTYK KwogLyoKICAqIENvbm5lY3Rpb24gcG9vbCBpbmZvcm1hdGlvbi4gUGxhY2VkIG9uIHNoYXJlZCBt ZW1vcnkgYXJlYS4KICAqLwpAQCAtMTQ3LDcgKzE1Miw4IEBAIHR5cGVkZWYgc3RydWN0CiAJaW50 CQkJbWFqb3I7CQkJLyogcHJvdG9jb2wgbWFqb3IgdmVyc2lvbiAqLwogCWludAkJCW1pbm9yOwkJ CS8qIHByb3RvY29sIG1pbm9yIHZlcnNpb24gKi8KIAlpbnQJCQlwaWQ7CQkJLyogYmFja2VuZCBw cm9jZXNzIGlkICovCi0JaW50CQkJa2V5OwkJCS8qIGNhbmNlbCBrZXkgKi8KKwljaGFyCQlrZXlb TUFYX0NBTkNFTEtFWV9MRU5HVEhdOwkJCS8qIGNhbmNlbCBrZXkgKi8KKwlpbnQzMgkJa2V5bGVu OwkJCS8qIGNhbmNlbCBrZXkgbGVuZ3RoICovCiAJaW50CQkJY291bnRlcjsJCS8qIHVzZWQgY291 bnRlciAqLwogCXRpbWVfdAkJY3JlYXRlX3RpbWU7CS8qIGNvbm5lY3Rpb24gY3JlYXRpb24gdGlt ZSAqLwogCXRpbWVfdAkJY2xpZW50X2Nvbm5lY3Rpb25fdGltZTsJLyogY2xpZW50IGNvbm5lY3Rp b24gdGltZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9vbC5oIGIvc3JjL2luY2x1ZGUv cG9vbC5oCmluZGV4IDI4Y2YxNzU3Yy4uYzM0YTA2ZDJhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9wb29sLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9vbC5oCkBAIC0xODUsNyArMTg1LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgQ2FuY2VsUGFja2V0CiB7CiAJaW50CQkJcHJvdG9WZXJzaW9uOwkvKiBQcm90 b2NvbCB2ZXJzaW9uICovCiAJaW50CQkJcGlkOwkJCS8qIGJhY2tlbmQgcHJvY2VzcyBpZCAqLwot CWludAkJCWtleTsJCQkvKiBjYW5jZWwga2V5ICovCisJY2hhcgkJa2V5W01BWF9DQU5DRUxLRVlf TEVOR1RIXTsJCQkvKiBjYW5jZWwga2V5ICovCiB9CQkJQ2FuY2VsUGFja2V0OwogCiAjZGVmaW5l IE1BWF9QQVNTV09SRF9TSVpFCQkxMDI0CkBAIC0yOTQsNyArMjk0LDEyIEBAIHR5cGVkZWYgc3Ry dWN0CiB7CiAJU3RhcnR1cFBhY2tldCAqc3A7CQkJLyogc3RhcnR1cCBwYWNrZXQgaW5mbyAqLwog CWludAkJCXBpZDsJCQkvKiBiYWNrZW5kIHBpZCAqLwotCWludAkJCWtleTsJCQkvKiBjYW5jZWwg a2V5ICovCisJY2hhcgkJa2V5W01BWF9DQU5DRUxLRVlfTEVOR1RIXTsJCQkvKiBjYW5jZWwga2V5 ICovCisJLyoKKwkgKiBDYW5jZWwga2V5IGxlbmd0aC4gSW4gcHJvdG9jb2wgdmVyc2lvbiAzLjAs IGl0IGlzIDQuCisJICogSW4gMy4yIG9yIGxhdGVyLCB0aGUgbWF4aW11bSBsZW5ndGggaXMgMjU2 LgorCSAqLworCWludDMyCQlrZXlsZW47CiAJUE9PTF9DT05ORUNUSU9OICpjb247CiAJdGltZV90 CQljbG9zZXRpbWU7CQkvKiBhYnNvbHV0ZSB0aW1lIGluIHNlY29uZCB3aGVuIHRoZSBjb25uZWN0 aW9uCiAJCQkJCQkJCSAqIGNsb3NlZCBpZiAwLCB0aGF0IG1lYW5zIHRoZSBjb25uZWN0aW9uIGlz CkBAIC02NTUsNyArNjYwLDcgQEAgZXh0ZXJuIHZvaWQgcGNwX21haW4oaW50ICpmZHMpOwogZXh0 ZXJuIHZvaWQgZG9fY2hpbGQoaW50ICpmZHMpOwogZXh0ZXJuIHZvaWQgY2hpbGRfZXhpdChpbnQg Y29kZSk7CiAKLWV4dGVybiB2b2lkIGNhbmNlbF9yZXF1ZXN0KENhbmNlbFBhY2tldCAqIHNwKTsK K2V4dGVybiB2b2lkIGNhbmNlbF9yZXF1ZXN0KENhbmNlbFBhY2tldCAqIHNwLCBpbnQzMiBsZW4p OwogZXh0ZXJuIHZvaWQgY2hlY2tfc3RvcF9yZXF1ZXN0KHZvaWQpOwogZXh0ZXJuIHZvaWQgcG9v bF9pbml0aWFsaXplX3ByaXZhdGVfYmFja2VuZF9zdGF0dXModm9pZCk7CiBleHRlcm4gaW50CXNl bmRfdG9fcGdfZnJvbnRlbmQoY2hhciAqZGF0YSwgaW50IGxlbiwgYm9vbCBmbHVzaCk7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9wcm90b2NvbC9wb29sX3Byb2Nlc3NfcXVlcnkuaCBiL3NyYy9p bmNsdWRlL3Byb3RvY29sL3Bvb2xfcHJvY2Vzc19xdWVyeS5oCmluZGV4IDdmOTFkYmJjZC4uZTc5 OWI0ZDlkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wcm90b2NvbC9wb29sX3Byb2Nlc3NfcXVl cnkuaAorKysgYi9zcmMvaW5jbHVkZS9wcm90b2NvbC9wb29sX3Byb2Nlc3NfcXVlcnkuaApAQCAt Myw3ICszLDcgQEAKICAqIHBncG9vbDogYSBsYW5ndWFnZSBpbmRlcGVuZGVudCBjb25uZWN0aW9u IHBvb2wgc2VydmVyIGZvciBQb3N0Z3JlU1FMCiAgKiB3cml0dGVuIGJ5IFRhdHN1byBJc2hpaQog ICoKLSAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIwCVBnUG9vbCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDI1CVBnUG9vbCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKICAqCiAgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlz dHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAogICogaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBw dXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcyBoZXJlYnkKQEAgLTM1LDcgKzM1LDcgQEAgZXh0ZXJu IHZvaWQgcGVyX25vZGVfc3RhdGVtZW50X2xvZyhQT09MX0NPTk5FQ1RJT05fUE9PTCAqIGJhY2tl bmQsCiBleHRlcm4gaW50CXBvb2xfZXh0cmFjdF9lcnJvcl9tZXNzYWdlKGJvb2wgcmVhZF9raW5k LCBQT09MX0NPTk5FQ1RJT04gKiBiYWNrZW5kLAogCQkJCQkJCQkJICAgaW50IG1ham9yLCBib29s IHVucmVhZCwgY2hhciAqKm1lc3NhZ2UpOwogZXh0ZXJuIFBPT0xfU1RBVFVTIGRvX2NvbW1hbmQo UE9PTF9DT05ORUNUSU9OICogZnJvbnRlbmQsIFBPT0xfQ09OTkVDVElPTiAqIGJhY2tlbmQsCi0J CQkJCQkJICBjaGFyICpxdWVyeSwgaW50IHByb3RvTWFqb3IsIGludCBwaWQsIGludCBrZXksIGlu dCBub19yZWFkeV9mb3JfcXVlcnkpOworCQkJCQkJCSAgY2hhciAqcXVlcnksIGludCBwcm90b01h am9yLCBpbnQgcGlkLCBjaGFyICprZXksIGludCBrZXlsZW4sIGludCBub19yZWFkeV9mb3JfcXVl cnkpOwogZXh0ZXJuIHZvaWQgZG9fcXVlcnkoUE9PTF9DT05ORUNUSU9OICogYmFja2VuZCwgY2hh ciAqcXVlcnksIFBPT0xfU0VMRUNUX1JFU1VMVCAqICpyZXN1bHQsIGludCBtYWpvcik7CiBleHRl cm4gdm9pZCBmcmVlX3NlbGVjdF9yZXN1bHQoUE9PTF9TRUxFQ1RfUkVTVUxUICogcmVzdWx0KTsK IGV4dGVybiBpbnQJY29tcGFyZShjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvcHJvdG9jb2wvcG9vbF9wcm90b19tb2R1bGVzLmggYi9zcmMv aW5jbHVkZS9wcm90b2NvbC9wb29sX3Byb3RvX21vZHVsZXMuaAppbmRleCA2NjNkY2M5ODQuLjI4 NjY4YWE2ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcHJvdG9jb2wvcG9vbF9wcm90b19tb2R1 bGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvcHJvdG9jb2wvcG9vbF9wcm90b19tb2R1bGVzLmgKQEAg LTE1MSw3ICsxNTEsOCBAQCBleHRlcm4gaW50IFJvd0Rlc2NyaXB0aW9uKFBPT0xfQ09OTkVDVElP TiAqIGZyb250ZW5kLAogCQkJICAgUE9PTF9DT05ORUNUSU9OX1BPT0wgKiBiYWNrZW5kLAogCQkJ ICAgc2hvcnQgKnJlc3VsdCk7CiAKLWV4dGVybiB2b2lkIHdhaXRfZm9yX3F1ZXJ5X3Jlc3BvbnNl X3dpdGhfdHJhbnNfY2xlYW51cChQT09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwgUE9PTF9DT05O RUNUSU9OICogYmFja2VuZCwgaW50IHByb3RvVmVyc2lvbiwgaW50IHBpZCwgaW50IGtleSk7Citl eHRlcm4gdm9pZCB3YWl0X2Zvcl9xdWVyeV9yZXNwb25zZV93aXRoX3RyYW5zX2NsZWFudXAoUE9P TF9DT05ORUNUSU9OICogZnJvbnRlbmQsIFBPT0xfQ09OTkVDVElPTiAqIGJhY2tlbmQsCisJCQkJ CQkJCQkJCQkJICAgaW50IHByb3RvVmVyc2lvbiwgaW50IHBpZCwgY2hhciAqa2V5LCBpbnQga2V5 bGVuKTsKIGV4dGVybiBQT09MX1NUQVRVUyB3YWl0X2Zvcl9xdWVyeV9yZXNwb25zZShQT09MX0NP Tk5FQ1RJT04gKiBmcm9udGVuZCwgUE9PTF9DT05ORUNUSU9OICogYmFja2VuZCwgaW50IHByb3Rv VmVyc2lvbik7CiBleHRlcm4gYm9vbCBpc19zZWxlY3RfcXVlcnkoTm9kZSAqbm9kZSwgY2hhciAq c3FsKTsKIGV4dGVybiBib29sIGlzX2NvbW1pdF9xdWVyeShOb2RlICpub2RlKTsKZGlmZiAtLWdp dCBhL3NyYy9wcm90b2NvbC9jaGlsZC5jIGIvc3JjL3Byb3RvY29sL2NoaWxkLmMKaW5kZXggN2Fl YTMzNTQwLi4xZWY4ODkxMGQgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90b2NvbC9jaGlsZC5jCisrKyBi L3NyYy9wcm90b2NvbC9jaGlsZC5jCkBAIC02MjQsMTQgKzYyNCwxNiBAQCByZWFkX3N0YXJ0dXBf cGFja2V0KFBPT0xfQ09OTkVDVElPTiAqIGNwKQogCWxlbiA9IG50b2hsKGxlbik7CiAJbGVuIC09 IHNpemVvZihsZW4pOwogCi0JaWYgKGxlbiA8PSAwIHx8IGxlbiA+PSBNQVhfU1RBUlRVUF9QQUNL RVRfTEVOR1RIKQorCWlmIChsZW4gPCA0IHx8IGxlbiA+IE1BWF9TVEFSVFVQX1BBQ0tFVF9MRU5H VEgpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycm1zZygiZmFpbGVkIHdoaWxlIHJlYWRpbmcg c3RhcnR1cCBwYWNrZXQiKSwKIAkJCQkgZXJyZGV0YWlsKCJpbmNvcnJlY3QgcGFja2V0IGxlbmd0 aCAoJWQpIiwgbGVuKSkpOwogCiAJc3AtPnN0YXJ0dXBfcGFja2V0ID0gcGFsbG9jMChsZW4pOwog Ci0JLyogcmVhZCBzdGFydHVwIHBhY2tldCAqLworCS8qCisJICogUmVhZCBzdGFydHVwIHBhY2tl dCBleGNlcHQgdGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZS4KKwkgKi8KIAlwb29sX3JlYWRfd2l0 aF9lcnJvcihjcCwgc3AtPnN0YXJ0dXBfcGFja2V0LCBsZW4sCiAJCQkJCQkgInN0YXJ0dXAgcGFj a2V0Iik7CiAKQEAgLTg2MSw3ICs4NjMsOCBAQCBjb25uZWN0X3VzaW5nX2V4aXN0aW5nX2Nvbm5l Y3Rpb24oUE9PTF9DT05ORUNUSU9OICogZnJvbnRlbmQsCiAJCQkJCQlkb19jb21tYW5kKGZyb250 ZW5kLCBDT05ORUNUSU9OKGJhY2tlbmQsIGkpLAogCQkJCQkJCQkgICBjb21tYW5kX2J1ZiwgTUFK T1IoYmFja2VuZCksCiAJCQkJCQkJCSAgIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+cGlkLAot CQkJCQkJCQkgICBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSwgMCk7CisJCQkJCQkJCSAg IE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+a2V5LAorCQkJCQkJCQkgICBNQUlOX0NPTk5FQ1RJ T04oYmFja2VuZCktPmtleWxlbiwgMCk7CiAJCQkJCX0KIAkJCQkJUEdfQ0FUQ0goKTsKIAkJCQkJ ewpAQCAtOTAyLDcgKzkwNSw3IEBAIGNvbm5lY3RfdXNpbmdfZXhpc3RpbmdfY29ubmVjdGlvbihQ T09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwKICAqIHByb2Nlc3MgY2FuY2VsIHJlcXVlc3QKICAq Lwogdm9pZAotY2FuY2VsX3JlcXVlc3QoQ2FuY2VsUGFja2V0ICogc3ApCitjYW5jZWxfcmVxdWVz dChDYW5jZWxQYWNrZXQgKiBzcCwgaW50MzIgc3BsZW4pCiB7CiAJaW50CQkJbGVuOwogCWludAkJ CWZkOwpAQCAtOTExLDggKzkxNCw4IEBAIGNhbmNlbF9yZXF1ZXN0KENhbmNlbFBhY2tldCAqIHNw KQogCQkJCWosCiAJCQkJazsKIAlDb25uZWN0aW9uSW5mbyAqYyA9IE5VTEw7Ci0JQ2FuY2VsUGFj a2V0IGNwOwogCWJvb2wJCWZvdW5kID0gZmFsc2U7CisJaW50MzIJCWtleWxlbjsJLyogY2FuY2Vs IGtleSBsZW5ndGggKi8KIAogCWlmIChwb29sX2NvbmZpZy0+bG9nX2NsaWVudF9tZXNzYWdlcykK IAkJZXJlcG9ydChMT0csCkBAIC05MjEsNyArOTI0LDIwIEBAIGNhbmNlbF9yZXF1ZXN0KENhbmNl bFBhY2tldCAqIHNwKQogCWVyZXBvcnQoREVCVUcxLAogCQkJKGVycm1zZygiQ2FuY2VsIHJlcXVl c3QgcmVjZWl2ZWQiKSkpOwogCi0JLyogbG9vayBmb3IgY2FuY2VsIGtleSBmcm9tIHNobWVtIGlu Zm8gKi8KKwkvKgorCSAqIENhbmNlbCBrZXkgbGVuZ3RoIGlzIGNhbmNlbCBtZXNzYWdlIGxlbmd0 aCAtIGNhbmNlbCByZXF1ZXN0IGNvZGUgLQorCSAqIHByb2Nlc3MgaWQuCisJICovCisJa2V5bGVu ID0gc3BsZW4gLSBzaXplb2YoaW50MzIpIC0gc2l6ZW9mKGludDMyKTsKKworCS8qCisJICogTG9v ayBmb3IgY2FuY2VsIGtleSBmcm9tIHNobWVtIGluZm8uICBGcm9udGVuZCBzaG91bGQgaGF2ZSBz YXZlZCBvbmUgb2YKKwkgKiBjYW5jZWwga2V5IGFtb25nIGJhY2tlbmQgZ3JvdXBzIGFuZCBzZW50 IGl0IGluIHRoZSBjYW5jZWwgcmVxdWVzdAorCSAqIG1lc3NhZ2UuIFdlIGFyZSBsb29raW5nIGZv ciB0aGUgYmFja2VuZCB3aGljaCBoYXMgdGhlIHNhbWUgY2FuY2VsIGtleQorCSAqIGFuZCBwaWQu IFRoZSBxdWVyeSB3ZSB3YW50IHRvIGNhbmNlbCBzaG91bGQgaGF2ZSBiZWVuIHJ1bm5pbmcgb25l IHRoZQorCSAqIGJhY2tlbmQgZ3JvdXAuIFNvIHNvbWUgb2YgcXVlcnkgY2FuY2VsIHJlcXVlc3Rz IG1heSBub3Qgd29yayBidXQgaXQKKwkgKiBzaG91bGQgbm90IGJlIGEgcHJvYmxlbS4gVGhleSBh cmUganVzdCBpZ25vcmVkIGJ5IHRoZSBiYWNrZW5kLgorCSAqLwogCWZvciAoaSA9IDA7IGkgPCBw b29sX2NvbmZpZy0+bnVtX2luaXRfY2hpbGRyZW47IGkrKykKIAl7CiAJCWZvciAoaiA9IDA7IGog PCBwb29sX2NvbmZpZy0+bWF4X3Bvb2w7IGorKykKQEAgLTkzMSwxNCArOTQ3LDE5IEBAIGNhbmNl bF9yZXF1ZXN0KENhbmNlbFBhY2tldCAqIHNwKQogCQkJCWMgPSBwb29sX2NvbmluZm8oaSwgaiwg ayk7CiAJCQkJZXJlcG9ydChERUJVRzIsCiAJCQkJCQkoZXJybXNnKCJwcm9jZXNzaW5nIGNhbmNl bCByZXF1ZXN0IiksCi0JCQkJCQkgZXJyZGV0YWlsKCJjb25uZWN0aW9uIGluZm86IGFkZHJlc3M6 JXAgZGF0YWJhc2U6JXMgdXNlcjolcyBwaWQ6JWQga2V5OiVkIGk6JWQiLAotCQkJCQkJCQkgICBj LCBjLT5kYXRhYmFzZSwgYy0+dXNlciwgbnRvaGwoYy0+cGlkKSwgbnRvaGwoYy0+a2V5KSwgaSkp KTsKLQkJCQlpZiAoYy0+cGlkID09IHNwLT5waWQgJiYgYy0+a2V5ID09IHNwLT5rZXkpCisJCQkJ CQkgZXJyZGV0YWlsKCJjb25uZWN0aW9uIGluZm86IGFkZHJlc3M6JXAgZGF0YWJhc2U6JXMgdXNl cjolcyBwaWQ6JWQgc3AucGlkOiVkIGtleWxlbjolZCBzcC5rZXlsZW46JWQgaTolZCIsCisJCQkJ CQkJCSAgIGMsIGMtPmRhdGFiYXNlLCBjLT51c2VyLCBudG9obChjLT5waWQpLCBudG9obChzcC0+ cGlkKSwKKwkJCQkJCQkJICAgYy0+a2V5bGVuLCBrZXlsZW4sIGkpKSk7CisJCQkJaWYgKGMtPnBp ZCA9PSBzcC0+cGlkICYmIGMtPmtleWxlbiA9PSBrZXlsZW4gJiYKKwkJCQkJbWVtY21wKGMtPmtl eSwgc3AtPmtleSwga2V5bGVuKSA9PSAwKQogCQkJCXsKIAkJCQkJZXJlcG9ydChERUJVRzEsCiAJ CQkJCQkJKGVycm1zZygicHJvY2Vzc2luZyBjYW5jZWwgcmVxdWVzdCIpLAotCQkJCQkJCSBlcnJk ZXRhaWwoImZvdW5kIHBpZDolZCBrZXk6JWQgaTolZCIsIG50b2hsKGMtPnBpZCksIG50b2hsKGMt PmtleSksIGkpKSk7CisJCQkJCQkJIGVycmRldGFpbCgiZm91bmQgcGlkOiVkIGtleWxlbjolZCBp OiVkIiwgbnRvaGwoYy0+cGlkKSwgYy0+a2V5bGVuLCBpKSkpOwogCisJCQkJCS8qCisJCQkJCSAq ICJjIiBpcyBhIHBvaW50ZXIgdG8gaSB0aCBjaGlsZCwgaiB0aCBwb29sLCBhbmQgMCB0aCBiYWNr ZW5kLgorCQkJCQkgKi8KIAkJCQkJYyA9IHBvb2xfY29uaW5mbyhpLCBqLCAwKTsKIAkJCQkJZm91 bmQgPSB0cnVlOwogCQkJCQlnb3RvIGZvdW5kOwpAQCAtOTUxLDEyICs5NzIsMTkgQEAgZm91bmQ6 CiAJaWYgKCFmb3VuZCkKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImludmFsaWQg Y2FuY2VsIGtleTogcGlkOiVkIGtleTolZCIsIG50b2hsKHNwLT5waWQpLCBudG9obChzcC0+a2V5 KSkpKTsKKwkJCQkoZXJybXNnKCJpbnZhbGlkIGNhbmNlbCBrZXk6IHBpZDolZCBrZXlsZW46JWQi LCBudG9obChzcC0+cGlkKSwga2V5bGVuKSkpOwogCQlyZXR1cm47CQkJCQkvKiBpbnZhbGlkIGtl eSAqLwogCX0KIAorCS8qCisJICogV2UgYXJlIHNlbmRpbmcgY2FuY2VsIHJlcXVlc3QgbWVzc2Fn ZSB0byBhbGwgYmFja2VuZCBncm91cHMuICBTbyBzb21lCisJICogb2YgcXVlcnkgY2FuY2VsIHJl cXVlc3RzIG1heSBub3Qgd29yayBidXQgaXQgc2hvdWxkIG5vdCBiZSBhCisJICogcHJvYmxlbS4g VGhleSBhcmUganVzdCBpZ25vcmVkIGJ5IHRoZSBiYWNrZW5kLgorCSAqLwogCWZvciAoaSA9IDA7 IGkgPCBOVU1fQkFDS0VORFM7IGkrKywgYysrKQogCXsKKwkJaW50MzIJY2FuY2VsX3JlcXVlc3Rf Y29kZTsKKwogCQlpZiAoIVZBTElEX0JBQ0tFTkQoaSkpCiAJCQljb250aW51ZTsKIApAQCAtOTc4 LDE4ICsxMDA2LDE4IEBAIGZvdW5kOgogCiAJCXBvb2xfc2V0X2RiX25vZGVfaWQoY29uLCBpKTsK IAotCQlsZW4gPSBodG9ubChzaXplb2YobGVuKSArIHNpemVvZihDYW5jZWxQYWNrZXQpKTsKLQkJ cG9vbF93cml0ZShjb24sICZsZW4sIHNpemVvZihsZW4pKTsKLQotCQljcC5wcm90b1ZlcnNpb24g PSBzcC0+cHJvdG9WZXJzaW9uOwotCQljcC5waWQgPSBjLT5waWQ7Ci0JCWNwLmtleSA9IGMtPmtl eTsKKwkJbGVuID0gaHRvbmwoc3BsZW4gKyBzaXplb2YoaW50MzIpKTsJLyogc3BsZW4gZG9lcyBu b3QgaW5jbHVkZSBwYWNrZXQgbGVuZ3RoIGZpZWxkICovCisJCXBvb2xfd3JpdGUoY29uLCAmbGVu LCBzaXplb2YobGVuKSk7CS8qIHNlbmQgY2FuY2VsIG1lc3NhZ2VzIGxlbmd0aCAqLworCQljYW5j ZWxfcmVxdWVzdF9jb2RlID0gaHRvbmwoUEdfUFJPVE9DT0woMTIzNCw1Njc4KSk7CS8qIGNhbmNl bCByZXF1ZXN0IGNvZGUgKi8KKwkJcG9vbF93cml0ZShjb24sICZjYW5jZWxfcmVxdWVzdF9jb2Rl LCBzaXplb2YoaW50MzIpKTsKKwkJcG9vbF93cml0ZShjb24sICZjLT5waWQsIHNpemVvZihpbnQz MikpOwkvKiBzZW5kIHBpZCAqLworCQlwb29sX3dyaXRlKGNvbiwgYy0+a2V5LCBrZXlsZW4pOwkv KiBzZW5kIGNhbmNlbCBrZXkgKi8KIAogCQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJmb3J3 YXJkaW5nIGNhbmNlbCByZXF1ZXN0IHRvIGJhY2tlbmQiKSwKLQkJCQkgZXJyZGV0YWlsKCJjYW5j ZWxpbmcgYmFja2VuZCBwaWQ6JWQga2V5OiAlZCIsIG50b2hsKGNwLnBpZCksIG50b2hsKGNwLmtl eSkpKSk7CisJCQkJKGVycm1zZygiZm9yd2FyZGluZyBjYW5jZWwgcmVxdWVzdCB0byBiYWNrZW5k ICVkIiwgaSksCisJCQkJIGVycmRldGFpbCgiY2FuY2VsaW5nIGJhY2tlbmQgcGlkOiAlZCBrZXls ZW46ICVkIiwgbnRvaGwoc3AtPnBpZCksIGtleWxlbikpKTsKIAotCQlpZiAocG9vbF93cml0ZV9h bmRfZmx1c2hfbm9lcnJvcihjb24sICZjcCwgc2l6ZW9mKENhbmNlbFBhY2tldCkpIDwgMCkKKwkJ aWYgKHBvb2xfZmx1c2hfbm9lcnJvcihjb24pIDwgMCkKIAkJCWVyZXBvcnQoV0FSTklORywKIAkJ CQkJKGVycm1zZygiZmFpbGVkIHRvIHNlbmQgY2FuY2VsIHJlcXVlc3QgdG8gYmFja2VuZCAlZCIs IGkpKSk7CiAKQEAgLTE5NzgsNyArMjAwNiw3IEBAIHJldHJ5X3N0YXJ0dXA6CiAJLyogY2FuY2Vs IHJlcXVlc3Q/ICovCiAJaWYgKHNwLT5tYWpvciA9PSAxMjM0ICYmIHNwLT5taW5vciA9PSA1Njc4 KQogCXsKLQkJY2FuY2VsX3JlcXVlc3QoKENhbmNlbFBhY2tldCAqKSBzcC0+c3RhcnR1cF9wYWNr ZXQpOworCQljYW5jZWxfcmVxdWVzdCgoQ2FuY2VsUGFja2V0ICopIHNwLT5zdGFydHVwX3BhY2tl dCwgc3AtPmxlbik7CiAJCXBvb2xfZnJlZV9zdGFydHVwX3BhY2tldChzcCk7CiAJCWNvbm5lY3Rp b25fY291bnRfZG93bigpOwogCQlyZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9wcm90b2Nv bC9wb29sX3Byb2Nlc3NfcXVlcnkuYyBiL3NyYy9wcm90b2NvbC9wb29sX3Byb2Nlc3NfcXVlcnku YwppbmRleCBjYjcyZTljNTQuLjVhNmI5N2JhMSAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvY29sL3Bv b2xfcHJvY2Vzc19xdWVyeS5jCisrKyBiL3NyYy9wcm90b2NvbC9wb29sX3Byb2Nlc3NfcXVlcnku YwpAQCAtMyw3ICszLDcgQEAKICAqIHBncG9vbDogYSBsYW5ndWFnZSBpbmRlcGVuZGVudCBjb25u ZWN0aW9uIHBvb2wgc2VydmVyIGZvciBQb3N0Z3JlU1FMCiAgKiB3cml0dGVuIGJ5IFRhdHN1byBJ c2hpaQogICoKLSAqIENvcHlyaWdodCAoYykgMjAwMy0yMDI0CVBnUG9vbCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDI1CVBnUG9vbCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKICAqCiAgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBh bmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAogICogaXRzIGRvY3VtZW50YXRpb24gZm9y IGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcyBoZXJlYnkKQEAgLTUxMiw3ICs1MTIsOCBA QCBzZW5kX3NpbXBsZXF1ZXJ5X21lc3NhZ2UoUE9PTF9DT05ORUNUSU9OICogYmFja2VuZCwgaW50 IGxlbiwgY2hhciAqc3RyaW5nLCBpbnQgbQogICovCiAKIHZvaWQKLXdhaXRfZm9yX3F1ZXJ5X3Jl c3BvbnNlX3dpdGhfdHJhbnNfY2xlYW51cChQT09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwgUE9P TF9DT05ORUNUSU9OICogYmFja2VuZCwgaW50IHByb3RvVmVyc2lvbiwgaW50IHBpZCwgaW50IGtl eSkKK3dhaXRfZm9yX3F1ZXJ5X3Jlc3BvbnNlX3dpdGhfdHJhbnNfY2xlYW51cChQT09MX0NPTk5F Q1RJT04gKiBmcm9udGVuZCwgUE9PTF9DT05ORUNUSU9OICogYmFja2VuZCwKKwkJCQkJCQkJCQkg ICBpbnQgcHJvdG9WZXJzaW9uLCBpbnQgcGlkLCBjaGFyICprZXksIGludCBrZXlsZW4pCiB7CiAJ UEdfVFJZKCk7CiAJewpAQCAtNTI3LDggKzUyOCw4IEBAIHdhaXRfZm9yX3F1ZXJ5X3Jlc3BvbnNl X3dpdGhfdHJhbnNfY2xlYW51cChQT09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwgUE9PTF9DT05O CiAKIAkJCWNhbmNlbF9wYWNrZXQucHJvdG9WZXJzaW9uID0gaHRvbmwoUFJPVE9fQ0FOQ0VMKTsK IAkJCWNhbmNlbF9wYWNrZXQucGlkID0gcGlkOwotCQkJY2FuY2VsX3BhY2tldC5rZXkgPSBrZXk7 Ci0JCQljYW5jZWxfcmVxdWVzdCgmY2FuY2VsX3BhY2tldCk7CisJCQltZW1jcHkoY2FuY2VsX3Bh Y2tldC5rZXksIGtleSwga2V5bGVuKTsKKwkJCWNhbmNlbF9yZXF1ZXN0KCZjYW5jZWxfcGFja2V0 LCBrZXlsZW4gKyBzaXplb2YoaW50MzIpICsgc2l6ZW9mKGludDMyKSk7CiAJCX0KIAogCQlQR19S RV9USFJPVygpOwpAQCAtMTQ4MSw3ICsxNDgyLDcgQEAgcG9vbF9zZW5kX3JlYWR5Zm9ycXVlcnko UE9PTF9DT05ORUNUSU9OICogZnJvbnRlbmQpCiAgKi8KIFBPT0xfU1RBVFVTCiBkb19jb21tYW5k KFBPT0xfQ09OTkVDVElPTiAqIGZyb250ZW5kLCBQT09MX0NPTk5FQ1RJT04gKiBiYWNrZW5kLAot CQkgICBjaGFyICpxdWVyeSwgaW50IHByb3RvTWFqb3IsIGludCBwaWQsIGludCBrZXksIGludCBu b19yZWFkeV9mb3JfcXVlcnkpCisJCSAgIGNoYXIgKnF1ZXJ5LCBpbnQgcHJvdG9NYWpvciwgaW50 IHBpZCwgY2hhciAqa2V5LCBpbnQga2V5bGVuLCBpbnQgbm9fcmVhZHlfZm9yX3F1ZXJ5KQogewog CWludAkJCWxlbjsKIAljaGFyCQlraW5kOwpAQCAtMTUwMiw3ICsxNTAzLDggQEAgZG9fY29tbWFu ZChQT09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwgUE9PTF9DT05ORUNUSU9OICogYmFja2VuZCwK IAkJCQkJCQkJCQkJICAgYmFja2VuZCwKIAkJCQkJCQkJCQkJICAgcHJvdG9NYWpvciwKIAkJCQkJ CQkJCQkJICAgcGlkLAotCQkJCQkJCQkJCQkgICBrZXkpOworCQkJCQkJCQkJCQkgICBrZXksCisJ CQkJCQkJCQkJCSAgIGtleWxlbik7CiAKIAkvKgogCSAqIFdlIG11c3QgY2hlY2sgZGVhZGxvY2sg ZXJyb3IgaGVyZS4gSWYgYSBkZWFkbG9jayBlcnJvciBpcyBkZXRlY3RlZCBieSBhCkBAIC0yNzY3 LDcgKzI3NjksNyBAQCBpbnNlcnRfbG9jayhQT09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwgUE9P TF9DT05ORUNUSU9OX1BPT0wgKiBiYWNrZW5kLCBjaGFyICpxdQogCQllbHNlCiAJCXsKIAkJCXN0 YXR1cyA9IGRvX2NvbW1hbmQoZnJvbnRlbmQsIE1BSU4oYmFja2VuZCksIHFidWYsIE1BSk9SKGJh Y2tlbmQpLCBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPnBpZCwKLQkJCQkJCQkJTUFJTl9DT05O RUNUSU9OKGJhY2tlbmQpLT5rZXksIDApOworCQkJCQkJCQlNQUlOX0NPTk5FQ1RJT04oYmFja2Vu ZCktPmtleSwgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXlsZW4sIDApOwogCQl9CiAJfQog CWVsc2UgaWYgKGxvY2tfa2luZCA9PSAyKQpAQCAtMjgyNSw3ICsyODI3LDcgQEAgaW5zZXJ0X2xv Y2soUE9PTF9DT05ORUNUSU9OICogZnJvbnRlbmQsIFBPT0xfQ09OTkVDVElPTl9QT09MICogYmFj a2VuZCwgY2hhciAqcXUKIAkJCWVsc2UKIAkJCXsKIAkJCQlzdGF0dXMgPSBkb19jb21tYW5kKGZy b250ZW5kLCBNQUlOKGJhY2tlbmQpLCBxYnVmLCBNQUpPUihiYWNrZW5kKSwgTUFJTl9DT05ORUNU SU9OKGJhY2tlbmQpLT5waWQsCi0JCQkJCQkJCQlNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtl eSwgMCk7CisJCQkJCQkJCQlNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSwgTUFJTl9DT05O RUNUSU9OKGJhY2tlbmQpLT5rZXlsZW4gLDApOwogCQkJfQogCQl9CiAJfQpAQCAtMjg0Myw3ICsy ODQ1LDggQEAgaW5zZXJ0X2xvY2soUE9PTF9DT05ORUNUSU9OICogZnJvbnRlbmQsIFBPT0xfQ09O TkVDVElPTl9QT09MICogYmFja2VuZCwgY2hhciAqcXUKIAkJewogCQkJaWYgKGRlYWRsb2NrX2Rl dGVjdGVkKQogCQkJCXN0YXR1cyA9IGRvX2NvbW1hbmQoZnJvbnRlbmQsIENPTk5FQ1RJT04oYmFj a2VuZCwgaSksIFBPT0xfRVJST1JfUVVFUlksIFBST1RPX01BSk9SX1YzLAotCQkJCQkJCQkJTUFJ Tl9DT05ORUNUSU9OKGJhY2tlbmQpLT5waWQsIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+a2V5 LCAwKTsKKwkJCQkJCQkJCU1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+cGlkLAorCQkJCQkJCQkJ TUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXksIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+ a2V5bGVuLCAwKTsKIAkJCWVsc2UKIAkJCXsKIAkJCQlpZiAobG9ja19raW5kID09IDEpCkBAIC0y ODU4LDcgKzI4NjEsOCBAQCBpbnNlcnRfbG9jayhQT09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwg UE9PTF9DT05ORUNUSU9OX1BPT0wgKiBiYWNrZW5kLCBjaGFyICpxdQogCQkJCQllbHNlCiAJCQkJ CXsKIAkJCQkJCXN0YXR1cyA9IGRvX2NvbW1hbmQoZnJvbnRlbmQsIENPTk5FQ1RJT04oYmFja2Vu ZCwgaSksIHFidWYsIFBST1RPX01BSk9SX1YzLAotCQkJCQkJCQkJCQlNQUlOX0NPTk5FQ1RJT04o YmFja2VuZCktPnBpZCwgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXksIDApOworCQkJCQkJ CQkJCQlNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPnBpZCwKKwkJCQkJCQkJCQkJTUFJTl9DT05O RUNUSU9OKGJhY2tlbmQpLT5rZXksIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+a2V5bGVuLCAw KTsKIAkJCQkJfQogCQkJCX0KIAkJCQllbHNlIGlmIChsb2NrX2tpbmQgPT0gMiB8fCBsb2NrX2tp bmQgPT0gMykKQEAgLTI5MzMsNyArMjkzNyw4IEBAIHN0YXRpYyBQT09MX1NUQVRVUyBhZGRfbG9j a190YXJnZXQoUE9PTF9DT05ORUNUSU9OICogZnJvbnRlbmQsIFBPT0xfQ09OTkVDVElPTl9QCiAJ CXBlcl9ub2RlX3N0YXRlbWVudF9sb2coYmFja2VuZCwgTUFJTl9OT0RFX0lELCAiTE9DSyBUQUJM RSBwZ3Bvb2xfY2F0YWxvZy5pbnNlcnRfbG9jayBJTiBTSEFSRSBST1cgRVhDTFVTSVZFIE1PREUi KTsKIAogCQlpZiAoZG9fY29tbWFuZChmcm9udGVuZCwgTUFJTihiYWNrZW5kKSwgIkxPQ0sgVEFC TEUgcGdwb29sX2NhdGFsb2cuaW5zZXJ0X2xvY2sgSU4gU0hBUkUgUk9XIEVYQ0xVU0lWRSBNT0RF IiwKLQkJCQkJICAgUFJPVE9fTUFKT1JfVjMsIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+cGlk LCBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSwgMCkgIT0gUE9PTF9DT05USU5VRSkKKwkJ CQkJICAgUFJPVE9fTUFKT1JfVjMsIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+cGlkLAorCQkJ CQkgICBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSwgTUFJTl9DT05ORUNUSU9OKGJhY2tl bmQpLT5rZXlsZW4sIDApICE9IFBPT0xfQ09OVElOVUUpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkoZXJybXNnKCJ1bmFibGUgdG8gYWRkIGxvY2sgdGFyZ2V0IiksCiAJCQkJCSBlcnJkZXRhaWwo ImRvX2NvbW1hbmQgcmV0dXJuZWQgREVBRExPQ0sgc3RhdHVzIikpKTsKQEAgLTMwNDMsNyArMzA0 OCw4IEBAIHN0YXRpYyBQT09MX1NUQVRVUyBpbnNlcnRfb2lkX2ludG9faW5zZXJ0X2xvY2soUE9P TF9DT05ORUNUSU9OICogZnJvbnRlbmQsCiAKIAlwZXJfbm9kZV9zdGF0ZW1lbnRfbG9nKGJhY2tl bmQsIE1BSU5fTk9ERV9JRCwgcWJ1Zik7CiAJc3RhdHVzID0gZG9fY29tbWFuZChmcm9udGVuZCwg TUFJTihiYWNrZW5kKSwgcWJ1ZiwgUFJPVE9fTUFKT1JfVjMsCi0JCQkJCQlNQUlOX0NPTk5FQ1RJ T04oYmFja2VuZCktPnBpZCwgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXksIDApOworCQkJ CQkJTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5waWQsCisJCQkJCQlNQUlOX0NPTk5FQ1RJT04o YmFja2VuZCktPmtleSwgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXlsZW4sIDApOwogCXJl dHVybiBzdGF0dXM7CiB9CiAKQEAgLTQxNDAsNyArNDE0Niw4IEBAIHN0YXJ0X2ludGVybmFsX3Ry YW5zYWN0aW9uKFBPT0xfQ09OTkVDVElPTiAqIGZyb250ZW5kLCBQT09MX0NPTk5FQ1RJT05fUE9P TCAqIGJhCiAJCQkJcGVyX25vZGVfc3RhdGVtZW50X2xvZyhiYWNrZW5kLCBpLCAiQkVHSU4iKTsK IAogCQkJCWlmIChkb19jb21tYW5kKGZyb250ZW5kLCBDT05ORUNUSU9OKGJhY2tlbmQsIGkpLCAi QkVHSU4iLCBNQUpPUihiYWNrZW5kKSwKLQkJCQkJCQkgICBNQUlOX0NPTk5FQ1RJT04oYmFja2Vu ZCktPnBpZCwgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXksIDApICE9IFBPT0xfQ09OVElO VUUpCisJCQkJCQkJICAgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5waWQsCisJCQkJCQkJICAg TUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXksIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+ a2V5bGVuLCAwKSAhPSBQT09MX0NPTlRJTlVFKQogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJ CShlcnJtc2coInVuYWJsZSB0byBzdGFydCB0aGUgaW50ZXJuYWwgdHJhbnNhY3Rpb24iKSwKIAkJ CQkJCQkgZXJyZGV0YWlsKCJkb19jb21tYW5kIHJldHVybmVkIERFQURMT0NLIHN0YXR1cyIpKSk7 CkBAIC00MjA1LDcgKzQyMTIsOCBAQCBlbmRfaW50ZXJuYWxfdHJhbnNhY3Rpb24oUE9PTF9DT05O RUNUSU9OICogZnJvbnRlbmQsIFBPT0xfQ09OTkVDVElPTl9QT09MICogYmFjawogCQkJCVBHX1RS WSgpOwogCQkJCXsKIAkJCQkJaWYgKGRvX2NvbW1hbmQoZnJvbnRlbmQsIENPTk5FQ1RJT04oYmFj a2VuZCwgaSksICJDT01NSVQiLCBNQUpPUihiYWNrZW5kKSwKLQkJCQkJCQkJICAgTUFJTl9DT05O RUNUSU9OKGJhY2tlbmQpLT5waWQsIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+a2V5LCAxKSAh PSBQT09MX0NPTlRJTlVFKQorCQkJCQkJCQkgICBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPnBp ZCwKKwkJCQkJCQkJICAgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXksIE1BSU5fQ09OTkVD VElPTihiYWNrZW5kKS0+a2V5bGVuLCAxKSAhPSBQT09MX0NPTlRJTlVFKQogCQkJCQl7CiAJCQkJ CQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCQkoZXJybXNnKCJ1bmFibGUgdG8gQ09NTUlUIHRoZSB0 cmFuc2FjdGlvbiIpLApAQCAtNDI1OCw3ICs0MjY2LDggQEAgZW5kX2ludGVybmFsX3RyYW5zYWN0 aW9uKFBPT0xfQ09OTkVDVElPTiAqIGZyb250ZW5kLCBQT09MX0NPTk5FQ1RJT05fUE9PTCAqIGJh Y2sKIAkJCVBHX1RSWSgpOwogCQkJewogCQkJCWlmIChkb19jb21tYW5kKGZyb250ZW5kLCBNQUlO KGJhY2tlbmQpLCAiQ09NTUlUIiwgTUFKT1IoYmFja2VuZCksCi0JCQkJCQkJICAgTUFJTl9DT05O RUNUSU9OKGJhY2tlbmQpLT5waWQsIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+a2V5LCAxKSAh PSBQT09MX0NPTlRJTlVFKQorCQkJCQkJCSAgIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+cGlk LAorCQkJCQkJCSAgIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+a2V5LCBNQUlOX0NPTk5FQ1RJ T04oYmFja2VuZCktPmtleWxlbiwgMSkgIT0gUE9PTF9DT05USU5VRSkKIAkJCQl7CiAJCQkJCWVy ZXBvcnQoRVJST1IsCiAJCQkJCQkJKGVycm1zZygidW5hYmxlIHRvIENPTU1JVCB0aGUgdHJhbnNh Y3Rpb24iKSwKZGlmZiAtLWdpdCBhL3NyYy9wcm90b2NvbC9wb29sX3Byb3RvX21vZHVsZXMuYyBi L3NyYy9wcm90b2NvbC9wb29sX3Byb3RvX21vZHVsZXMuYwppbmRleCBhNjMzNmY4ZTIuLmMyODAy OTk4YSAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvY29sL3Bvb2xfcHJvdG9fbW9kdWxlcy5jCisrKyBi L3NyYy9wcm90b2NvbC9wb29sX3Byb3RvX21vZHVsZXMuYwpAQCAtMjQ5MCw3ICsyNDkwLDcgQEAg c3RhdGljIFBPT0xfU1RBVFVTIGNsb3NlX3N0YW5kYnlfdHJhbnNhY3Rpb25zKFBPT0xfQ09OTkVD VElPTiAqIGZyb250ZW5kLAogCQkJcGVyX25vZGVfc3RhdGVtZW50X2xvZyhiYWNrZW5kLCBpLCAi Q09NTUlUIik7CiAJCQlpZiAoZG9fY29tbWFuZChmcm9udGVuZCwgQ09OTkVDVElPTihiYWNrZW5k LCBpKSwgIkNPTU1JVCIsIE1BSk9SKGJhY2tlbmQpLAogCQkJCQkJICAgTUFJTl9DT05ORUNUSU9O KGJhY2tlbmQpLT5waWQsCi0JCQkJCQkgICBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSwg MCkgIT0gUE9PTF9DT05USU5VRSkKKwkJCQkJCSAgIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+ a2V5LCBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleWxlbiwgMCkgIT0gUE9PTF9DT05USU5V RSkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycm1zZygidW5hYmxlIHRvIGNsb3NlIHN0 YW5kYnkgdHJhbnNhY3Rpb25zIiksCiAJCQkJCQkgZXJyZGV0YWlsKCJkb19jb21tYW5kIHJldHVy bmVkIERFQURMT0NLIHN0YXR1cyIpKSk7CmRpZmYgLS1naXQgYS9zcmMvcmV3cml0ZS9wb29sX2xv YmouYyBiL3NyYy9yZXdyaXRlL3Bvb2xfbG9iai5jCmluZGV4IDM4MTg3ZmUxNC4uNzYwMWE5MzE2 IDEwMDY0NAotLS0gYS9zcmMvcmV3cml0ZS9wb29sX2xvYmouYworKysgYi9zcmMvcmV3cml0ZS9w b29sX2xvYmouYwpAQCAtNSw3ICs1LDcgQEAKICAqIHBncG9vbDogYSBsYW5ndWFnZSBpbmRlcGVu ZGVudCBjb25uZWN0aW9uIHBvb2wgc2VydmVyIGZvciBQb3N0Z3JlU1FMCiAgKiB3cml0dGVuIGJ5 IFRhdHN1byBJc2hpaQogICoKLSAqIENvcHlyaWdodCAoYykgMjAwMy0yMDEwCVBnUG9vbCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDI1CVBnUG9vbCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAqCiAgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwg bW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAogICogaXRzIGRvY3VtZW50 YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcyBoZXJlYnkKQEAgLTE3NCw3 ICsxNzQsNyBAQCBwb29sX3Jld3JpdGVfbG9fY3JlYXQoY2hhciBraW5kLCBjaGFyICpwYWNrZXQs IGludCBwYWNrZXRfbGVuLAogCXNucHJpbnRmKHFidWYsIHNpemVvZihxYnVmKSwgIkxPQ0sgVEFC TEUgJXMgSU4gU0hBUkUgUk9XIEVYQ0xVU0lWRSBNT0RFIiwgcG9vbF9jb25maWctPmxvYmpfbG9j a190YWJsZSk7CiAJcGVyX25vZGVfc3RhdGVtZW50X2xvZyhiYWNrZW5kLCBNQUlOX05PREVfSUQs IHFidWYpOwogCXN0YXR1cyA9IGRvX2NvbW1hbmQoZnJvbnRlbmQsIE1BSU4oYmFja2VuZCksIHFi dWYsIE1BSk9SKGJhY2tlbmQpLCBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPnBpZCwKLQkJCQkJ CU1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+a2V5LCAwKTsKKwkJCQkJCU1BSU5fQ09OTkVDVElP TihiYWNrZW5kKS0+a2V5LCBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleWxlbiwgMCk7CiAJ aWYgKHN0YXR1cyA9PSBQT09MX0VORCkKIAl7CiAJCWVyZXBvcnQoV0FSTklORywKLS0gCjIuMjUu MQoK ----Next_Part(Tue_Jul_15_14_34_08_2025_911)----