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 1ubD8u-00F5XA-Q2 for pgpool-hackers@arkaria.postgresql.org; Mon, 14 Jul 2025 06:58:29 +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 1ubD7t-004GVx-52 for pgpool-hackers@arkaria.postgresql.org; Mon, 14 Jul 2025 06:57:25 +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 1ubD7s-004GVp-Kc for pgpool-hackers@lists.postgresql.org; Mon, 14 Jul 2025 06:57: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 1ubD7r-007Byl-0q for pgpool-hackers@lists.postgresql.org; Mon, 14 Jul 2025 06:57: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:From:Subject:To:Message-Id:Date:Sender:Reply-To:Cc:Content-ID: Content-Description:In-Reply-To:References; bh=jndZt2luLXr3u+AWantbfXcgKCmAN49xW5VP/1H4As8=; b=xdQ2YwunVLVh0Hw56Gcw1+aZaQ gFvBQSIkmpx9EDTKP65xoLWE/CJ6tyfGV7sHA/jWEVNM9WFE/t1FSqKdWleD5CKMdVwUkjxEZVtSb sK7YyRXlH2PKyc2dWuCTlYBb9PTS6FBMDMOdBjKsnHYZr9OEsUbkNfu3Zsg4QCwyKJ/A8t1v50OOr E498Yw+hNjjPcOOsLyRPMCwXmnXNSfOCCiPsMspnA2pz+nHGLodUQghXS1CNMGDnKbAefwFIGcn7Q dVOoKts1Z1izv/HxHelffxb9wDtm7JNaV95ecFkqYhY53TYEK9+kk/9Eb7OrRxg0wwxXl7j++Vzbc DVkdMTfw==; Received: from [2409:11:4120:300:abea:15c9:2857:6dd0] (helo=localhost) by meldrar.postgresql.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (Exim 4.96) (envelope-from ) id 1ubD7m-00A0Ai-1o for pgpool-hackers@lists.postgresql.org; Mon, 14 Jul 2025 06:57:22 +0000 Date: Mon, 14 Jul 2025 15:57:10 +0900 (JST) Message-Id: <20250714.155710.1706961744888449986.ishii@postgresql.org> To: pgpool-hackers@lists.postgresql.org Subject: Implement protocol 3.2 BackendKeyData and cancel request message From: Tatsuo Ishii X-Mailer: Mew version 6.8 on Emacs 26.3 Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Mon_Jul_14_15_57_10_2025_257)--" Content-Transfer-Encoding: 7bit X-Host-Lookup-Failed: Reverse DNS lookup failed for 2409:11:4120:300:abea:15c9:2857:6dd0 (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ----Next_Part(Mon_Jul_14_15_57_10_2025_257)-- 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 Best regards, -- Tatsuo Ishii SRA OSS K.K. English: http://www.sraoss.co.jp/index_en/ Japanese:http://www.sraoss.co.jp ----Next_Part(Mon_Jul_14_15_57_10_2025_257)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v1-0001-Feature-implement-protocol-version-3.2-BackendKey.patch" RnJvbSAxOWU1ODdkMTRiZTk2MGZkOTVmZjMyNThmNzI3YWNlYTg1ZTM4NWNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBNb24sIDE0IEp1bCAyMDI1IDE1OjQ4OjUzICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MV0g RmVhdHVyZTogaW1wbGVtZW50IHByb3RvY29sIHZlcnNpb24gMy4yIEJhY2tlbmRLZXlEYXRhIGFu ZAogcXVlcnkgY2FuY2VsIG1lc3NhZ2UuCgpTdGFydGluZyBmcm9tIFBvc3RncmVTUUwgMTgsIGZy b250ZW5kL2JhY2tlbmQgcHJvdG9jb2wgaGFzIGJlZW4KY2hhbmdlZCB0byAzLjIuIEluIHRoZSBj aGFuZ2VzIHRoZSBCYWNrZW5kS2V5RGF0YSBhbmQgcXVlcnkgY2FuY2VsCm1lc3NhZ2UgYXJlIG1v ZGlmaWVkIHRvIGFsbG93IHZhcmlhYmxlIGxlbmd0aCBjYW5jZWwga2V5LgoKVGhpcyBjb21taXQg aW1wbGVtZW50cyB0aGUgY2hhbmdlcyBhbmQgbm93IHdlIGNhbiBjb25uZWN0IHRvClBvc3RncmVT UUwgZnJvbnRlbmQgYW5kIGJhY2tlbmQgdXNpbmcgMy4yIHByb3RvY29sLgoKRXhhbXBsZSBzZXNz aW9uIGlzOgpQR01BWFBST1RPQ09MVkVSU0lPTj0iMy4yIiBwc3FsIC1wIDExMDAwIHRlc3QKLS0t CiBzcmMvYXV0aC9wb29sX2F1dGguYyAgICAgICAgICAgICAgICAgICAgICB8IDgxICsrKysrKysr KysrKystLS0tLS0tLS0tCiBzcmMvY29udGV4dC9wb29sX3F1ZXJ5X2NvbnRleHQuYyAgICAgICAg ICB8ICA4ICsrLQogc3JjL2luY2x1ZGUvcGNwL2xpYnBjcF9leHQuaCAgICAgICAgICAgICAgfCAg OCArKy0KIHNyYy9pbmNsdWRlL3Bvb2wuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEgKyst CiBzcmMvaW5jbHVkZS9wcm90b2NvbC9wb29sX3Byb2Nlc3NfcXVlcnkuaCB8ICA0ICstCiBzcmMv aW5jbHVkZS9wcm90b2NvbC9wb29sX3Byb3RvX21vZHVsZXMuaCB8ICAzICstCiBzcmMvcHJvdG9j b2wvY2hpbGQuYyAgICAgICAgICAgICAgICAgICAgICB8IDU2ICsrKysrKysrKystLS0tLS0KIHNy Yy9wcm90b2NvbC9wb29sX3Byb2Nlc3NfcXVlcnkuYyAgICAgICAgIHwgMzYgKysrKysrLS0tLQog c3JjL3Byb3RvY29sL3Bvb2xfcHJvdG9fbW9kdWxlcy5jICAgICAgICAgfCAgMiArLQogc3JjL3Jl d3JpdGUvcG9vbF9sb2JqLmMgICAgICAgICAgICAgICAgICAgfCAgNCArLQogMTAgZmlsZXMgY2hh bmdlZCwgMTMzIGluc2VydGlvbnMoKyksIDgwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9hdXRoL3Bvb2xfYXV0aC5jIGIvc3JjL2F1dGgvcG9vbF9hdXRoLmMKaW5kZXggNTRkNjQ2YmMz Li44MTg3MTg3YTAgMTAwNjQ0Ci0tLSBhL3NyYy9hdXRoL3Bvb2xfYXV0aC5jCisrKyBiL3NyYy9h dXRoL3Bvb2xfYXV0aC5jCkBAIC01OCw3ICs1OCw4IEBACiAjZGVmaW5lIE1BWF9TQVNMX1BBWUxP QURfTEVOIDEwMjQKIAogCi1zdGF0aWMgUE9PTF9TVEFUVVMgcG9vbF9zZW5kX2JhY2tlbmRfa2V5 X2RhdGEoUE9PTF9DT05ORUNUSU9OICogZnJvbnRlbmQsIGludCBwaWQsIGludCBrZXksIGludCBw cm90b01ham9yKTsKK3N0YXRpYyB2b2lkIHBvb2xfc2VuZF9iYWNrZW5kX2tleV9kYXRhKFBPT0xf Q09OTkVDVElPTiAqIGZyb250ZW5kLCBpbnQgcGlkLAorCQkJCQkJCQkJICAgY2hhciAqa2V5LCBp bnQzMiBrZXlsZW4sIGludCBwcm90b01ham9yKTsKIHN0YXRpYyBpbnQJZG9fY2xlYXJfdGV4dF9w YXNzd29yZChQT09MX0NPTk5FQ1RJT04gKiBiYWNrZW5kLCBQT09MX0NPTk5FQ1RJT04gKiBmcm9u dGVuZCwgaW50IHJlYXV0aCwgaW50IHByb3RvTWFqb3IpOwogc3RhdGljIHZvaWQgcG9vbF9zZW5k X2F1dGhfZmFpbChQT09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwgUE9PTF9DT05ORUNUSU9OX1BP T0wgKiBjcCk7CiBzdGF0aWMgaW50IGRvX21kNShQT09MX0NPTk5FQ1RJT04gKiBiYWNrZW5kLCBQ T09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwgaW50IHJlYXV0aCwgaW50IHByb3RvTWFqb3IsCkBA IC05Miw5ICs5Myw3IEBAIGNvbm5lY3Rpb25fZG9fYXV0aChQT09MX0NPTk5FQ1RJT05fUE9PTF9T TE9UICogY3AsIGNoYXIgKnBhc3N3b3JkKQogCWludAkJCWxlbmd0aDsKIAlpbnQJCQlhdXRoX2tp bmQ7CiAJY2hhcgkJc3RhdGU7Ci0JY2hhcgkgICAqcDsKLQlpbnQJCQlwaWQsCi0JCQkJa2V5Owor CWludAkJCXBpZDsKIAlib29sCQlrZXlkYXRhX2RvbmU7CiAKIAkvKgpAQCAtMjQ0LDYgKzI0Myw5 IEBAIGNvbm5lY3Rpb25fZG9fYXV0aChQT09MX0NPTk5FQ1RJT05fUE9PTF9TTE9UICogY3AsIGNo YXIgKnBhc3N3b3JkKQogCiAJCXN3aXRjaCAoa2luZCkKIAkJeworCQkJY2hhcgkqcDsKKwkJCWlu dDMyCWtleWxlbjsKKwogCQkJY2FzZSAnSyc6CQkJLyogYmFja2VuZCBrZXkgZGF0YSAqLwogCQkJ CWtleWRhdGFfZG9uZSA9IHRydWU7CiAJCQkJZXJlcG9ydChERUJVRzEsCkBAIC0yNTEsMTIgKzI1 MywxNCBAQCBjb25uZWN0aW9uX2RvX2F1dGgoUE9PTF9DT05ORUNUSU9OX1BPT0xfU0xPVCAqIGNw LCBjaGFyICpwYXNzd29yZCkKIAogCQkJCS8qIHJlYWQgbWVzc2FnZSBsZW5ndGggKi8KIAkJCQlw b29sX3JlYWRfd2l0aF9lcnJvcihjcC0+Y29uLCAmbGVuZ3RoLCBzaXplb2YobGVuZ3RoKSwgIm1l c3NhZ2UgbGVuZ3RoIGZvciBhdXRoZW50aWNhdGlvbiBraW5kICdLJyIpOwotCQkJCWlmIChudG9o bChsZW5ndGgpICE9IDEyKQorCQkJCWxlbmd0aCA9IG50b2hsKGxlbmd0aCk7CisJCQkJa2V5bGVu ID0gbGVuZ3RoIC0gc2l6ZW9mKGludDMyKSAtIHNpemVvZihpbnQzMik7CisJCQkJaWYgKGtleWxl biA+IE1BWF9DQU5DRUxLRVlfTEVOR1RIKQogCQkJCXsKIAkJCQkJZXJlcG9ydChFUlJPUiwKIAkJ CQkJCQkoZXJybXNnKCJmYWlsZWQgdG8gYXV0aGVudGljYXRlIiksCi0JCQkJCQkJIGVycmRldGFp bCgiaW52YWxpZCBiYWNrZW5kIGtleSBkYXRhIGxlbmd0aC4gcmVjZWl2ZWQgJWQgYnl0ZXMgd2hl biBleHBlY3RpbmcgMTIgYnl0ZXMiCi0JCQkJCQkJCQkgICAsbnRvaGwobGVuZ3RoKSkpKTsKKwkJ CQkJCQkgZXJyZGV0YWlsKCJpbnZhbGlkIGJhY2tlbmQga2V5IGRhdGEgbGVuZ3RoLiByZWNlaXZl ZCAlZCBieXRlcyBleGNlZWRpbmcgJWQiLCAKKwkJCQkJCQkJCSAgIG50b2hsKGxlbmd0aCksIE1B WF9DQU5DRUxLRVlfTEVOR1RIKSkpOwogCQkJCX0KIAogCQkJCS8qIHJlYWQgcGlkICovCkBAIC0y NjQsOSArMjY4LDkgQEAgY29ubmVjdGlvbl9kb19hdXRoKFBPT0xfQ09OTkVDVElPTl9QT09MX1NM T1QgKiBjcCwgY2hhciAqcGFzc3dvcmQpCiAJCQkJY3AtPnBpZCA9IHBpZDsKIAogCQkJCS8qIHJl YWQga2V5ICovCi0JCQkJcG9vbF9yZWFkX3dpdGhfZXJyb3IoY3AtPmNvbiwgJmtleSwgc2l6ZW9m KGtleSksCi0JCQkJCQkJCQkgImtleSBmb3IgYXV0aGVudGljYXRpb24ga2luZCAnSyciKTsKLQkJ CQljcC0+a2V5ID0ga2V5OworCQkJCWtleWxlbiA9IGxlbmd0aCAtIHNpemVvZihpbnQzMikgLSBz aXplb2YoaW50MzIpOworCQkJCXAgPSBwb29sX3JlYWQyKGNwLT5jb24sIGtleWxlbik7CisJCQkJ bWVtY3B5KGNwLT5rZXksIHAsIGtleWxlbik7CiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UgJ1onOgkJ CS8qIFJlYWR5IGZvciBxdWVyeSAqLwpAQCAtMzMyLDE0ICszMzYsMTUgQEAgcG9vbF9kb19hdXRo KFBPT0xfQ09OTkVDVElPTiAqIGZyb250ZW5kLCBQT09MX0NPTk5FQ1RJT05fUE9PTCAqIGNwKQog ewogCXNpZ25lZCBjaGFyIGtpbmQ7CiAJaW50CQkJcGlkOwotCWludAkJCWtleTsKIAlpbnQJCQlw cm90b01ham9yOwogCWludAkJCWxlbmd0aDsKIAlpbnQJCQlhdXRoa2luZDsKIAlpbnQJCQlpOwog CWludAkJCW1lc3NhZ2VfbGVuZ3RoID0gMDsKIAlTdGFydHVwUGFja2V0ICpzcDsKLQorCWludDMy CQlrZXlsZW47CS8qIGNhbmNlbCBrZXkgbGVuZ3RoICovCisJY2hhcgljYW5jZWxfa2V5W01BWF9D QU5DRUxLRVlfTEVOR1RIXTsKKwljaGFyCQkqcDsKIAogCXByb3RvTWFqb3IgPSBNQUlOX0NPTk5F Q1RJT04oY3ApLT5zcC0+bWFqb3I7CiAKQEAgLTcyMiwxNyArNzI3LDIzIEBAIHJlYWRfa2luZDoK IAl9CiAKIAkvKgotCSAqIG1lc3NhZ2UgbGVuZ3RoIChWMyBvbmx5KQorCSAqIFJlYWQgQmFja2Vu ZEtleURhdGEgbWVzc2FnZSBsZW5ndGguCiAJICovCiAJaWYgKHByb3RvTWFqb3IgPT0gUFJPVE9f TUFKT1JfVjMpCiAJewotCQlpZiAoKGxlbmd0aCA9IHBvb2xfcmVhZF9tZXNzYWdlX2xlbmd0aChj cCkpICE9IDEyKQorCQlsZW5ndGggPSBwb29sX3JlYWRfbWVzc2FnZV9sZW5ndGgoY3ApOworCQlr ZXlsZW4gPSBsZW5ndGggLSBzaXplb2YoaW50MzIpIC0gc2l6ZW9mKGludDMyKTsKKwkJaWYgKGtl eWxlbiA+IE1BWF9DQU5DRUxLRVlfTEVOR1RIKQogCQl7CiAJCQllcmVwb3J0KEVSUk9SLAotCQkJ CQkoZXJybXNnKCJhdXRoZW50aWNhdGlvbiBmYWlsZWQiKSwKLQkJCQkJIGVycmRldGFpbCgiaW52 YWxpZCBtZXNzYWdlcyBsZW5ndGgoJWQpIGZvciBCYWNrZW5kS2V5RGF0YSIsIGxlbmd0aCkpKTsK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCQkgZXJybXNn KCJjYW5jZWwga2V5IGxlbmd0aCBleGNlZWRzIDI1NiBieXRlcyIpKSk7CiAJCX0KIAl9CisJZWxz ZQorCQkJa2V5bGVuID0gNDsKKworCWVsb2coREVCVUcxLCAiY2FuY2VsIGtleSBsZW5ndGg6ICVk Iiwga2V5bGVuKTsKIAogCS8qCiAJICogT0ssIHJlYWQgcGlkIGFuZCBzZWNyZXQga2V5CkBAIC03 NTgsMTMgKzc2OSwxNyBAQCByZWFkX2tpbmQ6CiAJCQlDT05ORUNUSU9OX1NMT1QoY3AsIGkpLT5w aWQgPSBjcC0+aW5mb1tpXS5waWQgPSBwaWQ7CiAKIAkJCS8qIHJlYWQga2V5ICovCi0JCQlpZiAo cG9vbF9yZWFkKENPTk5FQ1RJT04oY3AsIGkpLCAma2V5LCBzaXplb2Yoa2V5KSkgPCAwKQorCQkJ cCA9IHBvb2xfcmVhZDIoQ09OTkVDVElPTihjcCwgaSksIGtleWxlbik7CisJCQlpZiAocCA9PSBO VUxMKQogCQkJewogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJybXNnKCJhdXRoZW50aWNh dGlvbiBmYWlsZWQiKSwKLQkJCQkJCSBlcnJkZXRhaWwoImZhaWxlZCB0byByZWFkIGtleSBpbiBz bG90ICVkIiwgaSkpKTsKKwkJCQkJCSBlcnJkZXRhaWwoImZhaWxlZCB0byByZWFkIGtleSBvZiBs ZW5ndGg6ICVkIGluIHNsb3QgJWQiLCBrZXlsZW4sIGkpKSk7CiAJCQl9Ci0JCQlDT05ORUNUSU9O X1NMT1QoY3AsIGkpLT5rZXkgPSBjcC0+aW5mb1tpXS5rZXkgPSBrZXk7CisJCQltZW1jcHkoQ09O TkVDVElPTl9TTE9UKGNwLCBpKS0+a2V5LCBwLCBrZXlsZW4pOworCQkJbWVtY3B5KGNwLT5pbmZv W2ldLmtleSwgcCwga2V5bGVuKTsKKwkJCW1lbWNweShjYW5jZWxfa2V5LCBwLCBrZXlsZW4pOwor CQkJQ09OTkVDVElPTl9TTE9UKGNwLCBpKS0+a2V5bGVuID0gY3AtPmluZm9baV0ua2V5bGVuID0g a2V5bGVuOwogCiAJCQljcC0+aW5mb1tpXS5tYWpvciA9IHNwLT5tYWpvcjsKIApAQCAtNzkxLDEw ICs4MDYsOSBAQCByZWFkX2tpbmQ6CiAJCQkJKGVycm1zZygiYXV0aGVudGljYXRpb24gZmFpbGVk IiksCiAJCQkJIGVycmRldGFpbCgicG9vbF9kb19hdXRoOiBhbGwgYmFja2VuZHMgYXJlIGRvd24i KSkpOwogCX0KLQlpZiAocG9vbF9zZW5kX2JhY2tlbmRfa2V5X2RhdGEoZnJvbnRlbmQsIHBpZCwg a2V5LCBwcm90b01ham9yKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJybXNnKCJhdXRoZW50 aWNhdGlvbiBmYWlsZWQiKSwKLQkJCQkgZXJyZGV0YWlsKCJmYWlsZWQgdG8gc2VuZCBiYWNrZW5k IGRhdGEgdG8gZnJvbnRlbmQiKSkpOworCisJcG9vbF9zZW5kX2JhY2tlbmRfa2V5X2RhdGEoZnJv bnRlbmQsIHBpZCwgY2FuY2VsX2tleSwKKwkJCQkJCQkgICBNQUlOX0NPTk5FQ1RJT04oY3ApLT5r ZXlsZW4sIHByb3RvTWFqb3IpOwogCXJldHVybiAwOwogfQogCkBAIC04NzIsNyArODg2LDggQEAg cG9vbF9kb19yZWF1dGgoUE9PTF9DT05ORUNUSU9OICogZnJvbnRlbmQsIFBPT0xfQ09OTkVDVElP Tl9QT09MICogY3ApCiAJcG9vbF93cml0ZV9hbmRfZmx1c2goZnJvbnRlbmQsICZtc2dsZW4sIHNp emVvZihtc2dsZW4pKTsKIAogCS8qIHNlbmQgQmFja2VuZEtleURhdGEgKi8KLQlwb29sX3NlbmRf YmFja2VuZF9rZXlfZGF0YShmcm9udGVuZCwgTUFJTl9DT05ORUNUSU9OKGNwKS0+cGlkLCBNQUlO X0NPTk5FQ1RJT04oY3ApLT5rZXksIHByb3RvTWFqb3IpOworCXBvb2xfc2VuZF9iYWNrZW5kX2tl eV9kYXRhKGZyb250ZW5kLCBNQUlOX0NPTk5FQ1RJT04oY3ApLT5waWQsIE1BSU5fQ09OTkVDVElP TihjcCktPmtleSwKKwkJCQkJCQkgICBNQUlOX0NPTk5FQ1RJT04oY3ApLT5rZXlsZW4sIHByb3Rv TWFqb3IpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC05MDMsMjkgKzkxOCwyNyBAQCBwb29sX3NlbmRf YXV0aF9mYWlsKFBPT0xfQ09OTkVDVElPTiAqIGZyb250ZW5kLCBQT09MX0NPTk5FQ1RJT05fUE9P TCAqIGNwKQogfQogCiAvKgotICogU2VuZCBiYWNrZW5kIGtleSBkYXRhIHRvIGZyb250ZW5kLiBp ZiBzdWNjZXNzIHJldHVybiAwIG90aGVyd2lzZSBub24gMC4KKyAqIFNlbmQgYmFja2VuZCBrZXkg ZGF0YSB0byBmcm9udGVuZC4KICAqLwotc3RhdGljIFBPT0xfU1RBVFVTIHBvb2xfc2VuZF9iYWNr ZW5kX2tleV9kYXRhKFBPT0xfQ09OTkVDVElPTiAqIGZyb250ZW5kLCBpbnQgcGlkLCBpbnQga2V5 LCBpbnQgcHJvdG9NYWpvcikKK3N0YXRpYyB2b2lkCitwb29sX3NlbmRfYmFja2VuZF9rZXlfZGF0 YShQT09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwgaW50IHBpZCwKKwkJCQkJCSAgIGNoYXIgKmtl eSwgaW50MzIga2V5bGVuLCBpbnQgcHJvdG9NYWpvcikKIHsKIAljaGFyCQlraW5kOwotCWludAkJ CWxlbjsKKwlpbnQzMgkJbGVuOwogCiAJLyogU2VuZCBiYWNrZW5kIGtleSBkYXRhICovCiAJa2lu ZCA9ICdLJzsKIAlwb29sX3dyaXRlKGZyb250ZW5kLCAma2luZCwgMSk7CiAJaWYgKHByb3RvTWFq b3IgPT0gUFJPVE9fTUFKT1JfVjMpCiAJewotCQlsZW4gPSBodG9ubCgxMik7CisJCWxlbiA9IGh0 b25sKHNpemVvZihpbnQzMikgKyBzaXplb2YoaW50MzIpICsga2V5bGVuKTsKIAkJcG9vbF93cml0 ZShmcm9udGVuZCwgJmxlbiwgc2l6ZW9mKGxlbikpOwogCX0KIAllcmVwb3J0KERFQlVHMSwKLQkJ CShlcnJtc2coInNlbmRpbmcgYmFja2VuZCBrZXkgZGF0YSIpLAotCQkJIGVycmRldGFpbCgic2Vu ZCBwaWQgJWQgdG8gZnJvbnRlbmQiLCBudG9obChwaWQpKSkpOwotCisJCQkoZXJybXNnKCJzZW5k aW5nIGJhY2tlbmQga2V5IGRhdGEiKSkpOwogCXBvb2xfd3JpdGUoZnJvbnRlbmQsICZwaWQsIHNp emVvZihwaWQpKTsKLQlwb29sX3dyaXRlX2FuZF9mbHVzaChmcm9udGVuZCwgJmtleSwgc2l6ZW9m KGtleSkpOwotCi0JcmV0dXJuIDA7CisJcG9vbF93cml0ZV9hbmRfZmx1c2goZnJvbnRlbmQsIGtl eSwga2V5bGVuKTsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9jb250ZXh0L3Bv b2xfcXVlcnlfY29udGV4dC5jIGIvc3JjL2NvbnRleHQvcG9vbF9xdWVyeV9jb250ZXh0LmMKaW5k ZXggM2I5MDI4NDk3Li5kMzk4YmVlNmQgMTAwNjQ0Ci0tLSBhL3NyYy9jb250ZXh0L3Bvb2xfcXVl cnlfY29udGV4dC5jCisrKyBiL3NyYy9jb250ZXh0L3Bvb2xfcXVlcnlfY29udGV4dC5jCkBAIC00 LDcgKzQsNyBAQAogICogcGdwb29sOiBhIGxhbmd1YWdlIGluZGVwZW5kZW50IGNvbm5lY3Rpb24g cG9vbCBzZXJ2ZXIgZm9yIFBvc3RncmVTUUwKICAqIHdyaXR0ZW4gYnkgVGF0c3VvIElzaGlpCiAg KgotICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjQJUGdQb29sIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjUJUGdQb29sIEdsb2JhbCBEZXZlbG9wbWVu dCBHcm91cAogICoKICAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0 cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kCiAgKiBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1 cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieQpAQCAtNjYzLDcgKzY2Myw4IEBAIHBvb2xf c2VuZF9hbmRfd2FpdChQT09MX1FVRVJZX0NPTlRFWFQgKiBxdWVyeV9jb250ZXh0LAogCQkJCQkJ CQkJCQkJICAgQ09OTkVDVElPTihiYWNrZW5kLCBpKSwKIAkJCQkJCQkJCQkJCSAgIE1BSk9SKGJh Y2tlbmQpLAogCQkJCQkJCQkJCQkJICAgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5waWQsCi0J CQkJCQkJCQkJCQkgICBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSk7CisJCQkJCQkJCQkJ CQkgICBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSwKKwkJCQkJCQkJCQkJCSAgIE1BSU5f Q09OTkVDVElPTihiYWNrZW5kKS0+a2V5bGVuKTsKIAogCQkvKgogCQkgKiBDaGVjayBpZiBzb21l IGVycm9yIGRldGVjdGVkLiAgSWYgc28sIGVtaXQgbG9nLiBUaGlzIGlzIHVzZWZ1bCB3aGVuCkBA IC04ODAsNyArODgxLDggQEAgcG9vbF9leHRlbmRlZF9zZW5kX2FuZF93YWl0KFBPT0xfUVVFUllf Q09OVEVYVCAqIHF1ZXJ5X2NvbnRleHQsCiAJCQkJCQkJCQkJCQkJICAgQ09OTkVDVElPTihiYWNr ZW5kLCBpKSwKIAkJCQkJCQkJCQkJCQkgICBNQUpPUihiYWNrZW5kKSwKIAkJCQkJCQkJCQkJCQkg ICBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPnBpZCwKLQkJCQkJCQkJCQkJCQkgICBNQUlOX0NP Tk5FQ1RJT04oYmFja2VuZCktPmtleSk7CisJCQkJCQkJCQkJCQkJICAgTUFJTl9DT05ORUNUSU9O KGJhY2tlbmQpLT5rZXksCisJCQkJCQkJCQkJCQkJICAgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQp LT5rZXlsZW4pOwogCiAJCQkvKgogCQkJICogQ2hlY2sgaWYgc29tZSBlcnJvciBkZXRlY3RlZC4g IElmIHNvLCBlbWl0IGxvZy4gVGhpcyBpcyB1c2VmdWwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3BjcC9saWJwY3BfZXh0LmggYi9zcmMvaW5jbHVkZS9wY3AvbGlicGNwX2V4dC5oCmluZGV4IGQ3 OWRkYzE1Ni4uM2E2ZDg3ODU4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wY3AvbGlicGNwX2V4 dC5oCisrKyBiL3NyYy9pbmNsdWRlL3BjcC9saWJwY3BfZXh0LmgKQEAgLTEzNiw2ICsxMzYsMTEg QEAgdHlwZWRlZiBlbnVtCiAJQ09OTkVDVElORwogfQkJCVByb2Nlc3NTdGF0dXM7CiAKKy8qCisg KiBtYW1pbXVtIGNhbmNlbCBrZXkgbGVuZ3RoCisqLworI2RlZmluZQlNQVhfQ0FOQ0VMS0VZX0xF TkdUSAkyNTYKKwogLyoKICAqIENvbm5lY3Rpb24gcG9vbCBpbmZvcm1hdGlvbi4gUGxhY2VkIG9u IHNoYXJlZCBtZW1vcnkgYXJlYS4KICAqLwpAQCAtMTQ3LDcgKzE1Miw4IEBAIHR5cGVkZWYgc3Ry dWN0CiAJaW50CQkJbWFqb3I7CQkJLyogcHJvdG9jb2wgbWFqb3IgdmVyc2lvbiAqLwogCWludAkJ CW1pbm9yOwkJCS8qIHByb3RvY29sIG1pbm9yIHZlcnNpb24gKi8KIAlpbnQJCQlwaWQ7CQkJLyog YmFja2VuZCBwcm9jZXNzIGlkICovCi0JaW50CQkJa2V5OwkJCS8qIGNhbmNlbCBrZXkgKi8KKwlj aGFyCQlrZXlbTUFYX0NBTkNFTEtFWV9MRU5HVEhdOwkJCS8qIGNhbmNlbCBrZXkgKi8KKwlpbnQz MgkJa2V5bGVuOwkJCS8qIGNhbmNlbCBrZXkgbGVuZ3RoICovCiAJaW50CQkJY291bnRlcjsJCS8q IHVzZWQgY291bnRlciAqLwogCXRpbWVfdAkJY3JlYXRlX3RpbWU7CS8qIGNvbm5lY3Rpb24gY3Jl YXRpb24gdGltZSAqLwogCXRpbWVfdAkJY2xpZW50X2Nvbm5lY3Rpb25fdGltZTsJLyogY2xpZW50 IGNvbm5lY3Rpb24gdGltZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9vbC5oIGIvc3Jj L2luY2x1ZGUvcG9vbC5oCmluZGV4IDI4Y2YxNzU3Yy4uYzM0YTA2ZDJhIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9wb29sLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9vbC5oCkBAIC0xODUsNyArMTg1 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ2FuY2VsUGFja2V0CiB7CiAJaW50CQkJcHJvdG9WZXJzaW9u OwkvKiBQcm90b2NvbCB2ZXJzaW9uICovCiAJaW50CQkJcGlkOwkJCS8qIGJhY2tlbmQgcHJvY2Vz cyBpZCAqLwotCWludAkJCWtleTsJCQkvKiBjYW5jZWwga2V5ICovCisJY2hhcgkJa2V5W01BWF9D QU5DRUxLRVlfTEVOR1RIXTsJCQkvKiBjYW5jZWwga2V5ICovCiB9CQkJQ2FuY2VsUGFja2V0Owog CiAjZGVmaW5lIE1BWF9QQVNTV09SRF9TSVpFCQkxMDI0CkBAIC0yOTQsNyArMjk0LDEyIEBAIHR5 cGVkZWYgc3RydWN0CiB7CiAJU3RhcnR1cFBhY2tldCAqc3A7CQkJLyogc3RhcnR1cCBwYWNrZXQg aW5mbyAqLwogCWludAkJCXBpZDsJCQkvKiBiYWNrZW5kIHBpZCAqLwotCWludAkJCWtleTsJCQkv KiBjYW5jZWwga2V5ICovCisJY2hhcgkJa2V5W01BWF9DQU5DRUxLRVlfTEVOR1RIXTsJCQkvKiBj YW5jZWwga2V5ICovCisJLyoKKwkgKiBDYW5jZWwga2V5IGxlbmd0aC4gSW4gcHJvdG9jb2wgdmVy c2lvbiAzLjAsIGl0IGlzIDQuCisJICogSW4gMy4yIG9yIGxhdGVyLCB0aGUgbWF4aW11bSBsZW5n dGggaXMgMjU2LgorCSAqLworCWludDMyCQlrZXlsZW47CiAJUE9PTF9DT05ORUNUSU9OICpjb247 CiAJdGltZV90CQljbG9zZXRpbWU7CQkvKiBhYnNvbHV0ZSB0aW1lIGluIHNlY29uZCB3aGVuIHRo ZSBjb25uZWN0aW9uCiAJCQkJCQkJCSAqIGNsb3NlZCBpZiAwLCB0aGF0IG1lYW5zIHRoZSBjb25u ZWN0aW9uIGlzCkBAIC02NTUsNyArNjYwLDcgQEAgZXh0ZXJuIHZvaWQgcGNwX21haW4oaW50ICpm ZHMpOwogZXh0ZXJuIHZvaWQgZG9fY2hpbGQoaW50ICpmZHMpOwogZXh0ZXJuIHZvaWQgY2hpbGRf ZXhpdChpbnQgY29kZSk7CiAKLWV4dGVybiB2b2lkIGNhbmNlbF9yZXF1ZXN0KENhbmNlbFBhY2tl dCAqIHNwKTsKK2V4dGVybiB2b2lkIGNhbmNlbF9yZXF1ZXN0KENhbmNlbFBhY2tldCAqIHNwLCBp bnQzMiBsZW4pOwogZXh0ZXJuIHZvaWQgY2hlY2tfc3RvcF9yZXF1ZXN0KHZvaWQpOwogZXh0ZXJu IHZvaWQgcG9vbF9pbml0aWFsaXplX3ByaXZhdGVfYmFja2VuZF9zdGF0dXModm9pZCk7CiBleHRl cm4gaW50CXNlbmRfdG9fcGdfZnJvbnRlbmQoY2hhciAqZGF0YSwgaW50IGxlbiwgYm9vbCBmbHVz aCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wcm90b2NvbC9wb29sX3Byb2Nlc3NfcXVlcnku aCBiL3NyYy9pbmNsdWRlL3Byb3RvY29sL3Bvb2xfcHJvY2Vzc19xdWVyeS5oCmluZGV4IDdmOTFk YmJjZC4uZTc5OWI0ZDlkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wcm90b2NvbC9wb29sX3By b2Nlc3NfcXVlcnkuaAorKysgYi9zcmMvaW5jbHVkZS9wcm90b2NvbC9wb29sX3Byb2Nlc3NfcXVl cnkuaApAQCAtMyw3ICszLDcgQEAKICAqIHBncG9vbDogYSBsYW5ndWFnZSBpbmRlcGVuZGVudCBj b25uZWN0aW9uIHBvb2wgc2VydmVyIGZvciBQb3N0Z3JlU1FMCiAgKiB3cml0dGVuIGJ5IFRhdHN1 byBJc2hpaQogICoKLSAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIwCVBnUG9vbCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDI1CVBnUG9vbCBHbG9iYWwg RGV2ZWxvcG1lbnQgR3JvdXAKICAqCiAgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAogICogaXRzIGRvY3VtZW50YXRpb24g Zm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcyBoZXJlYnkKQEAgLTM1LDcgKzM1LDcg QEAgZXh0ZXJuIHZvaWQgcGVyX25vZGVfc3RhdGVtZW50X2xvZyhQT09MX0NPTk5FQ1RJT05fUE9P TCAqIGJhY2tlbmQsCiBleHRlcm4gaW50CXBvb2xfZXh0cmFjdF9lcnJvcl9tZXNzYWdlKGJvb2wg cmVhZF9raW5kLCBQT09MX0NPTk5FQ1RJT04gKiBiYWNrZW5kLAogCQkJCQkJCQkJICAgaW50IG1h am9yLCBib29sIHVucmVhZCwgY2hhciAqKm1lc3NhZ2UpOwogZXh0ZXJuIFBPT0xfU1RBVFVTIGRv X2NvbW1hbmQoUE9PTF9DT05ORUNUSU9OICogZnJvbnRlbmQsIFBPT0xfQ09OTkVDVElPTiAqIGJh Y2tlbmQsCi0JCQkJCQkJICBjaGFyICpxdWVyeSwgaW50IHByb3RvTWFqb3IsIGludCBwaWQsIGlu dCBrZXksIGludCBub19yZWFkeV9mb3JfcXVlcnkpOworCQkJCQkJCSAgY2hhciAqcXVlcnksIGlu dCBwcm90b01ham9yLCBpbnQgcGlkLCBjaGFyICprZXksIGludCBrZXlsZW4sIGludCBub19yZWFk eV9mb3JfcXVlcnkpOwogZXh0ZXJuIHZvaWQgZG9fcXVlcnkoUE9PTF9DT05ORUNUSU9OICogYmFj a2VuZCwgY2hhciAqcXVlcnksIFBPT0xfU0VMRUNUX1JFU1VMVCAqICpyZXN1bHQsIGludCBtYWpv cik7CiBleHRlcm4gdm9pZCBmcmVlX3NlbGVjdF9yZXN1bHQoUE9PTF9TRUxFQ1RfUkVTVUxUICog cmVzdWx0KTsKIGV4dGVybiBpbnQJY29tcGFyZShjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAq cDIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcHJvdG9jb2wvcG9vbF9wcm90b19tb2R1bGVz LmggYi9zcmMvaW5jbHVkZS9wcm90b2NvbC9wb29sX3Byb3RvX21vZHVsZXMuaAppbmRleCA2NjNk Y2M5ODQuLjI4NjY4YWE2ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcHJvdG9jb2wvcG9vbF9w cm90b19tb2R1bGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvcHJvdG9jb2wvcG9vbF9wcm90b19tb2R1 bGVzLmgKQEAgLTE1MSw3ICsxNTEsOCBAQCBleHRlcm4gaW50IFJvd0Rlc2NyaXB0aW9uKFBPT0xf Q09OTkVDVElPTiAqIGZyb250ZW5kLAogCQkJICAgUE9PTF9DT05ORUNUSU9OX1BPT0wgKiBiYWNr ZW5kLAogCQkJICAgc2hvcnQgKnJlc3VsdCk7CiAKLWV4dGVybiB2b2lkIHdhaXRfZm9yX3F1ZXJ5 X3Jlc3BvbnNlX3dpdGhfdHJhbnNfY2xlYW51cChQT09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwg UE9PTF9DT05ORUNUSU9OICogYmFja2VuZCwgaW50IHByb3RvVmVyc2lvbiwgaW50IHBpZCwgaW50 IGtleSk7CitleHRlcm4gdm9pZCB3YWl0X2Zvcl9xdWVyeV9yZXNwb25zZV93aXRoX3RyYW5zX2Ns ZWFudXAoUE9PTF9DT05ORUNUSU9OICogZnJvbnRlbmQsIFBPT0xfQ09OTkVDVElPTiAqIGJhY2tl bmQsCisJCQkJCQkJCQkJCQkJICAgaW50IHByb3RvVmVyc2lvbiwgaW50IHBpZCwgY2hhciAqa2V5 LCBpbnQga2V5bGVuKTsKIGV4dGVybiBQT09MX1NUQVRVUyB3YWl0X2Zvcl9xdWVyeV9yZXNwb25z ZShQT09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwgUE9PTF9DT05ORUNUSU9OICogYmFja2VuZCwg aW50IHByb3RvVmVyc2lvbik7CiBleHRlcm4gYm9vbCBpc19zZWxlY3RfcXVlcnkoTm9kZSAqbm9k ZSwgY2hhciAqc3FsKTsKIGV4dGVybiBib29sIGlzX2NvbW1pdF9xdWVyeShOb2RlICpub2RlKTsK ZGlmZiAtLWdpdCBhL3NyYy9wcm90b2NvbC9jaGlsZC5jIGIvc3JjL3Byb3RvY29sL2NoaWxkLmMK aW5kZXggN2FlYTMzNTQwLi4xYmVmMDQyMWMgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90b2NvbC9jaGls ZC5jCisrKyBiL3NyYy9wcm90b2NvbC9jaGlsZC5jCkBAIC02MjQsMTQgKzYyNCwxNiBAQCByZWFk X3N0YXJ0dXBfcGFja2V0KFBPT0xfQ09OTkVDVElPTiAqIGNwKQogCWxlbiA9IG50b2hsKGxlbik7 CiAJbGVuIC09IHNpemVvZihsZW4pOwogCi0JaWYgKGxlbiA8PSAwIHx8IGxlbiA+PSBNQVhfU1RB UlRVUF9QQUNLRVRfTEVOR1RIKQorCWlmIChsZW4gPCA0IHx8IGxlbiA+IE1BWF9TVEFSVFVQX1BB Q0tFVF9MRU5HVEgpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycm1zZygiZmFpbGVkIHdoaWxl IHJlYWRpbmcgc3RhcnR1cCBwYWNrZXQiKSwKIAkJCQkgZXJyZGV0YWlsKCJpbmNvcnJlY3QgcGFj a2V0IGxlbmd0aCAoJWQpIiwgbGVuKSkpOwogCiAJc3AtPnN0YXJ0dXBfcGFja2V0ID0gcGFsbG9j MChsZW4pOwogCi0JLyogcmVhZCBzdGFydHVwIHBhY2tldCAqLworCS8qCisJICogUmVhZCBzdGFy dHVwIHBhY2tldCBleGNlcHQgdGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZS4KKwkgKi8KIAlwb29s X3JlYWRfd2l0aF9lcnJvcihjcCwgc3AtPnN0YXJ0dXBfcGFja2V0LCBsZW4sCiAJCQkJCQkgInN0 YXJ0dXAgcGFja2V0Iik7CiAKQEAgLTg2MSw3ICs4NjMsOCBAQCBjb25uZWN0X3VzaW5nX2V4aXN0 aW5nX2Nvbm5lY3Rpb24oUE9PTF9DT05ORUNUSU9OICogZnJvbnRlbmQsCiAJCQkJCQlkb19jb21t YW5kKGZyb250ZW5kLCBDT05ORUNUSU9OKGJhY2tlbmQsIGkpLAogCQkJCQkJCQkgICBjb21tYW5k X2J1ZiwgTUFKT1IoYmFja2VuZCksCiAJCQkJCQkJCSAgIE1BSU5fQ09OTkVDVElPTihiYWNrZW5k KS0+cGlkLAotCQkJCQkJCQkgICBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSwgMCk7CisJ CQkJCQkJCSAgIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+a2V5LAorCQkJCQkJCQkgICBNQUlO X0NPTk5FQ1RJT04oYmFja2VuZCktPmtleWxlbiwgMCk7CiAJCQkJCX0KIAkJCQkJUEdfQ0FUQ0go KTsKIAkJCQkJewpAQCAtOTAyLDcgKzkwNSw3IEBAIGNvbm5lY3RfdXNpbmdfZXhpc3RpbmdfY29u bmVjdGlvbihQT09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwKICAqIHByb2Nlc3MgY2FuY2VsIHJl cXVlc3QKICAqLwogdm9pZAotY2FuY2VsX3JlcXVlc3QoQ2FuY2VsUGFja2V0ICogc3ApCitjYW5j ZWxfcmVxdWVzdChDYW5jZWxQYWNrZXQgKiBzcCwgaW50MzIgc3BsZW4pCiB7CiAJaW50CQkJbGVu OwogCWludAkJCWZkOwpAQCAtOTExLDggKzkxNCw4IEBAIGNhbmNlbF9yZXF1ZXN0KENhbmNlbFBh Y2tldCAqIHNwKQogCQkJCWosCiAJCQkJazsKIAlDb25uZWN0aW9uSW5mbyAqYyA9IE5VTEw7Ci0J Q2FuY2VsUGFja2V0IGNwOwogCWJvb2wJCWZvdW5kID0gZmFsc2U7CisJaW50MzIJCWtleWxlbjsJ LyogY2FuY2VsIGtleSBsZW5ndGggKi8KIAogCWlmIChwb29sX2NvbmZpZy0+bG9nX2NsaWVudF9t ZXNzYWdlcykKIAkJZXJlcG9ydChMT0csCkBAIC05MjEsNiArOTI0LDEyIEBAIGNhbmNlbF9yZXF1 ZXN0KENhbmNlbFBhY2tldCAqIHNwKQogCWVyZXBvcnQoREVCVUcxLAogCQkJKGVycm1zZygiQ2Fu Y2VsIHJlcXVlc3QgcmVjZWl2ZWQiKSkpOwogCisJLyoKKwkgKiBDYW5jZWwga2V5IGxlbmd0aCBp cyBjYW5jZWwgbWVzc2FnZSBsZW5ndGggLSBjYW5jZWwgcmVxdWVzdCBjb2RlIC0KKwkgKiBwcm9j ZXNzIGlkLgorCSAqLworCWtleWxlbiA9IHNwbGVuIC0gc2l6ZW9mKGludDMyKSAtIHNpemVvZihp bnQzMik7CisKIAkvKiBsb29rIGZvciBjYW5jZWwga2V5IGZyb20gc2htZW0gaW5mbyAqLwogCWZv ciAoaSA9IDA7IGkgPCBwb29sX2NvbmZpZy0+bnVtX2luaXRfY2hpbGRyZW47IGkrKykKIAl7CkBA IC05MzEsMTMgKzk0MCwxOCBAQCBjYW5jZWxfcmVxdWVzdChDYW5jZWxQYWNrZXQgKiBzcCkKIAkJ CQljID0gcG9vbF9jb25pbmZvKGksIGosIGspOwogCQkJCWVyZXBvcnQoREVCVUcyLAogCQkJCQkJ KGVycm1zZygicHJvY2Vzc2luZyBjYW5jZWwgcmVxdWVzdCIpLAotCQkJCQkJIGVycmRldGFpbCgi Y29ubmVjdGlvbiBpbmZvOiBhZGRyZXNzOiVwIGRhdGFiYXNlOiVzIHVzZXI6JXMgcGlkOiVkIGtl eTolZCBpOiVkIiwKLQkJCQkJCQkJICAgYywgYy0+ZGF0YWJhc2UsIGMtPnVzZXIsIG50b2hsKGMt PnBpZCksIG50b2hsKGMtPmtleSksIGkpKSk7Ci0JCQkJaWYgKGMtPnBpZCA9PSBzcC0+cGlkICYm IGMtPmtleSA9PSBzcC0+a2V5KQorCQkJCQkJIGVycmRldGFpbCgiY29ubmVjdGlvbiBpbmZvOiBh ZGRyZXNzOiVwIGRhdGFiYXNlOiVzIHVzZXI6JXMgcGlkOiVkIHNwLnBpZDolZCBrZXlsZW46JWQg c3Aua2V5bGVuOiVkIGtleTolMDJ4JTAyeCUwMnglMDJ4IHNwLmtleToleCV4JXgleCBpOiVkIiwK KwkJCQkJCQkJICAgYywgYy0+ZGF0YWJhc2UsIGMtPnVzZXIsIG50b2hsKGMtPnBpZCksIG50b2hs KHNwLT5waWQpLAorCQkJCQkJCQkgICBjLT5rZXlsZW4sIGtleWxlbiwKKwkJCQkJCQkJICAgYy0+ a2V5WzBdLCBjLT5rZXlbMV0sIGMtPmtleVsyXSwgYy0+a2V5WzNdLAorCQkJCQkJCQkgICBzcC0+ a2V5WzBdLCBzcC0+a2V5WzFdLCBzcC0+a2V5WzJdLCBzcC0+a2V5WzNdLAorCQkJCQkJCQkgICBp KSkpOworCQkJCWlmIChjLT5waWQgPT0gc3AtPnBpZCAmJiBjLT5rZXlsZW4gPT0ga2V5bGVuICYm CisJCQkJCW1lbWNtcChjLT5rZXksIHNwLT5rZXksIGtleWxlbikgPT0gMCkKIAkJCQl7CiAJCQkJ CWVyZXBvcnQoREVCVUcxLAogCQkJCQkJCShlcnJtc2coInByb2Nlc3NpbmcgY2FuY2VsIHJlcXVl c3QiKSwKLQkJCQkJCQkgZXJyZGV0YWlsKCJmb3VuZCBwaWQ6JWQga2V5OiVkIGk6JWQiLCBudG9o bChjLT5waWQpLCBudG9obChjLT5rZXkpLCBpKSkpOworCQkJCQkJCSBlcnJkZXRhaWwoImZvdW5k IHBpZDolZCBrZXlsZW46JWQgaTolZCIsIG50b2hsKGMtPnBpZCksIGMtPmtleWxlbiwgaSkpKTsK IAogCQkJCQljID0gcG9vbF9jb25pbmZvKGksIGosIDApOwogCQkJCQlmb3VuZCA9IHRydWU7CkBA IC05NTEsMTIgKzk2NSwxNCBAQCBmb3VuZDoKIAlpZiAoIWZvdW5kKQogCXsKIAkJZXJlcG9ydChM T0csCi0JCQkJKGVycm1zZygiaW52YWxpZCBjYW5jZWwga2V5OiBwaWQ6JWQga2V5OiVkIiwgbnRv aGwoc3AtPnBpZCksIG50b2hsKHNwLT5rZXkpKSkpOworCQkJCShlcnJtc2coImludmFsaWQgY2Fu Y2VsIGtleTogcGlkOiVkIGtleWxlbjolZCIsIG50b2hsKHNwLT5waWQpLCBrZXlsZW4pKSk7CiAJ CXJldHVybjsJCQkJCS8qIGludmFsaWQga2V5ICovCiAJfQogCiAJZm9yIChpID0gMDsgaSA8IE5V TV9CQUNLRU5EUzsgaSsrLCBjKyspCiAJeworCQlpbnQzMgljYW5jZWxfcmVxdWVzdF9jb2RlOwor CiAJCWlmICghVkFMSURfQkFDS0VORChpKSkKIAkJCWNvbnRpbnVlOwogCkBAIC05NzgsMTggKzk5 NCwxOCBAQCBmb3VuZDoKIAogCQlwb29sX3NldF9kYl9ub2RlX2lkKGNvbiwgaSk7CiAKLQkJbGVu ID0gaHRvbmwoc2l6ZW9mKGxlbikgKyBzaXplb2YoQ2FuY2VsUGFja2V0KSk7Ci0JCXBvb2xfd3Jp dGUoY29uLCAmbGVuLCBzaXplb2YobGVuKSk7Ci0KLQkJY3AucHJvdG9WZXJzaW9uID0gc3AtPnBy b3RvVmVyc2lvbjsKLQkJY3AucGlkID0gYy0+cGlkOwotCQljcC5rZXkgPSBjLT5rZXk7CisJCWxl biA9IGh0b25sKHNwbGVuICsgNCk7CS8qIHNwbGVuIGRvZXMgbm90IGluY2x1ZGUgcGFja2V0IGxl bmd0aCBmaWVsZCAqLworCQlwb29sX3dyaXRlKGNvbiwgJmxlbiwgc2l6ZW9mKGxlbikpOwkvKiBz ZW5kIGNhbmNlbCBtZXNzYWdlcyBsZW5ndGggKi8KKwkJY2FuY2VsX3JlcXVlc3RfY29kZSA9IGh0 b25sKFBHX1BST1RPQ09MKDEyMzQsNTY3OCkpOworCQlwb29sX3dyaXRlKGNvbiwgJmNhbmNlbF9y ZXF1ZXN0X2NvZGUsIDQpOworCQlwb29sX3dyaXRlKGNvbiwgJmMtPnBpZCwgNCk7CS8qIHNlbmQg cGlkICovCisJCXBvb2xfd3JpdGUoY29uLCBjLT5rZXksIGtleWxlbik7CS8qIHNlbmQgY2FuY2Vs IGtleSAqLwogCiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImZvcndhcmRpbmcgY2FuY2Vs IHJlcXVlc3QgdG8gYmFja2VuZCIpLAotCQkJCSBlcnJkZXRhaWwoImNhbmNlbGluZyBiYWNrZW5k IHBpZDolZCBrZXk6ICVkIiwgbnRvaGwoY3AucGlkKSwgbnRvaGwoY3Aua2V5KSkpKTsKKwkJCQko ZXJybXNnKCJmb3J3YXJkaW5nIGNhbmNlbCByZXF1ZXN0IHRvIGJhY2tlbmQgJWQiLCBpKSwKKwkJ CQkgZXJyZGV0YWlsKCJjYW5jZWxpbmcgYmFja2VuZCBwaWQ6ICVkIGtleWxlbjogJWQiLCBudG9o bChzcC0+cGlkKSwga2V5bGVuKSkpOwogCi0JCWlmIChwb29sX3dyaXRlX2FuZF9mbHVzaF9ub2Vy cm9yKGNvbiwgJmNwLCBzaXplb2YoQ2FuY2VsUGFja2V0KSkgPCAwKQorCQlpZiAocG9vbF9mbHVz aF9ub2Vycm9yKGNvbikgPCAwKQogCQkJZXJlcG9ydChXQVJOSU5HLAogCQkJCQkoZXJybXNnKCJm YWlsZWQgdG8gc2VuZCBjYW5jZWwgcmVxdWVzdCB0byBiYWNrZW5kICVkIiwgaSkpKTsKIApAQCAt MTk3OCw3ICsxOTk0LDcgQEAgcmV0cnlfc3RhcnR1cDoKIAkvKiBjYW5jZWwgcmVxdWVzdD8gKi8K IAlpZiAoc3AtPm1ham9yID09IDEyMzQgJiYgc3AtPm1pbm9yID09IDU2NzgpCiAJewotCQljYW5j ZWxfcmVxdWVzdCgoQ2FuY2VsUGFja2V0ICopIHNwLT5zdGFydHVwX3BhY2tldCk7CisJCWNhbmNl bF9yZXF1ZXN0KChDYW5jZWxQYWNrZXQgKikgc3AtPnN0YXJ0dXBfcGFja2V0LCBzcC0+bGVuKTsK IAkJcG9vbF9mcmVlX3N0YXJ0dXBfcGFja2V0KHNwKTsKIAkJY29ubmVjdGlvbl9jb3VudF9kb3du KCk7CiAJCXJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvY29sL3Bvb2xfcHJvY2Vz c19xdWVyeS5jIGIvc3JjL3Byb3RvY29sL3Bvb2xfcHJvY2Vzc19xdWVyeS5jCmluZGV4IGNiNzJl OWM1NC4uMmM4MDc1YjExIDEwMDY0NAotLS0gYS9zcmMvcHJvdG9jb2wvcG9vbF9wcm9jZXNzX3F1 ZXJ5LmMKKysrIGIvc3JjL3Byb3RvY29sL3Bvb2xfcHJvY2Vzc19xdWVyeS5jCkBAIC0zLDcgKzMs NyBAQAogICogcGdwb29sOiBhIGxhbmd1YWdlIGluZGVwZW5kZW50IGNvbm5lY3Rpb24gcG9vbCBz ZXJ2ZXIgZm9yIFBvc3RncmVTUUwKICAqIHdyaXR0ZW4gYnkgVGF0c3VvIElzaGlpCiAgKgotICog Q29weXJpZ2h0IChjKSAyMDAzLTIwMjQJUGdQb29sIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor ICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjUJUGdQb29sIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAogICoKICAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRl IHRoaXMgc29mdHdhcmUgYW5kCiAgKiBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2Ug YW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieQpAQCAtNTEyLDcgKzUxMiw4IEBAIHNlbmRfc2ltcGxl cXVlcnlfbWVzc2FnZShQT09MX0NPTk5FQ1RJT04gKiBiYWNrZW5kLCBpbnQgbGVuLCBjaGFyICpz dHJpbmcsIGludCBtCiAgKi8KIAogdm9pZAotd2FpdF9mb3JfcXVlcnlfcmVzcG9uc2Vfd2l0aF90 cmFuc19jbGVhbnVwKFBPT0xfQ09OTkVDVElPTiAqIGZyb250ZW5kLCBQT09MX0NPTk5FQ1RJT04g KiBiYWNrZW5kLCBpbnQgcHJvdG9WZXJzaW9uLCBpbnQgcGlkLCBpbnQga2V5KQord2FpdF9mb3Jf cXVlcnlfcmVzcG9uc2Vfd2l0aF90cmFuc19jbGVhbnVwKFBPT0xfQ09OTkVDVElPTiAqIGZyb250 ZW5kLCBQT09MX0NPTk5FQ1RJT04gKiBiYWNrZW5kLAorCQkJCQkJCQkJCSAgIGludCBwcm90b1Zl cnNpb24sIGludCBwaWQsIGNoYXIgKmtleSwgaW50IGtleWxlbikKIHsKIAlQR19UUlkoKTsKIAl7 CkBAIC01MjgsNiArNTI5LDcgQEAgd2FpdF9mb3JfcXVlcnlfcmVzcG9uc2Vfd2l0aF90cmFuc19j bGVhbnVwKFBPT0xfQ09OTkVDVElPTiAqIGZyb250ZW5kLCBQT09MX0NPTk4KIAkJCWNhbmNlbF9w YWNrZXQucHJvdG9WZXJzaW9uID0gaHRvbmwoUFJPVE9fQ0FOQ0VMKTsKIAkJCWNhbmNlbF9wYWNr ZXQucGlkID0gcGlkOwogCQkJY2FuY2VsX3BhY2tldC5rZXkgPSBrZXk7CisJCQljYW5jZWxfcGFj a2V0LmtleWxlbiA9IGtleWxlbjsKIAkJCWNhbmNlbF9yZXF1ZXN0KCZjYW5jZWxfcGFja2V0KTsK IAkJfQogCkBAIC0xNDgxLDcgKzE0ODMsNyBAQCBwb29sX3NlbmRfcmVhZHlmb3JxdWVyeShQT09M X0NPTk5FQ1RJT04gKiBmcm9udGVuZCkKICAqLwogUE9PTF9TVEFUVVMKIGRvX2NvbW1hbmQoUE9P TF9DT05ORUNUSU9OICogZnJvbnRlbmQsIFBPT0xfQ09OTkVDVElPTiAqIGJhY2tlbmQsCi0JCSAg IGNoYXIgKnF1ZXJ5LCBpbnQgcHJvdG9NYWpvciwgaW50IHBpZCwgaW50IGtleSwgaW50IG5vX3Jl YWR5X2Zvcl9xdWVyeSkKKwkJICAgY2hhciAqcXVlcnksIGludCBwcm90b01ham9yLCBpbnQgcGlk LCBjaGFyICprZXksIGludCBrZXlsZW4sIGludCBub19yZWFkeV9mb3JfcXVlcnkpCiB7CiAJaW50 CQkJbGVuOwogCWNoYXIJCWtpbmQ7CkBAIC0xNTAyLDcgKzE1MDQsOCBAQCBkb19jb21tYW5kKFBP T0xfQ09OTkVDVElPTiAqIGZyb250ZW5kLCBQT09MX0NPTk5FQ1RJT04gKiBiYWNrZW5kLAogCQkJ CQkJCQkJCQkgICBiYWNrZW5kLAogCQkJCQkJCQkJCQkgICBwcm90b01ham9yLAogCQkJCQkJCQkJ CQkgICBwaWQsCi0JCQkJCQkJCQkJCSAgIGtleSk7CisJCQkJCQkJCQkJCSAgIGtleSwKKwkJCQkJ CQkJCQkJICAga2V5bGVuKTsKIAogCS8qCiAJICogV2UgbXVzdCBjaGVjayBkZWFkbG9jayBlcnJv ciBoZXJlLiBJZiBhIGRlYWRsb2NrIGVycm9yIGlzIGRldGVjdGVkIGJ5IGEKQEAgLTI3NjcsNyAr Mjc3MCw3IEBAIGluc2VydF9sb2NrKFBPT0xfQ09OTkVDVElPTiAqIGZyb250ZW5kLCBQT09MX0NP Tk5FQ1RJT05fUE9PTCAqIGJhY2tlbmQsIGNoYXIgKnF1CiAJCWVsc2UKIAkJewogCQkJc3RhdHVz ID0gZG9fY29tbWFuZChmcm9udGVuZCwgTUFJTihiYWNrZW5kKSwgcWJ1ZiwgTUFKT1IoYmFja2Vu ZCksIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+cGlkLAotCQkJCQkJCQlNQUlOX0NPTk5FQ1RJ T04oYmFja2VuZCktPmtleSwgMCk7CisJCQkJCQkJCU1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+ a2V5LCBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleWxlbiwgMCk7CiAJCX0KIAl9CiAJZWxz ZSBpZiAobG9ja19raW5kID09IDIpCkBAIC0yODI1LDcgKzI4MjgsNyBAQCBpbnNlcnRfbG9jayhQ T09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwgUE9PTF9DT05ORUNUSU9OX1BPT0wgKiBiYWNrZW5k LCBjaGFyICpxdQogCQkJZWxzZQogCQkJewogCQkJCXN0YXR1cyA9IGRvX2NvbW1hbmQoZnJvbnRl bmQsIE1BSU4oYmFja2VuZCksIHFidWYsIE1BSk9SKGJhY2tlbmQpLCBNQUlOX0NPTk5FQ1RJT04o YmFja2VuZCktPnBpZCwKLQkJCQkJCQkJCU1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+a2V5LCAw KTsKKwkJCQkJCQkJCU1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+a2V5LCBNQUlOX0NPTk5FQ1RJ T04oYmFja2VuZCktPmtleWxlbiAsMCk7CiAJCQl9CiAJCX0KIAl9CkBAIC0yODQzLDcgKzI4NDYs OCBAQCBpbnNlcnRfbG9jayhQT09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwgUE9PTF9DT05ORUNU SU9OX1BPT0wgKiBiYWNrZW5kLCBjaGFyICpxdQogCQl7CiAJCQlpZiAoZGVhZGxvY2tfZGV0ZWN0 ZWQpCiAJCQkJc3RhdHVzID0gZG9fY29tbWFuZChmcm9udGVuZCwgQ09OTkVDVElPTihiYWNrZW5k LCBpKSwgUE9PTF9FUlJPUl9RVUVSWSwgUFJPVE9fTUFKT1JfVjMsCi0JCQkJCQkJCQlNQUlOX0NP Tk5FQ1RJT04oYmFja2VuZCktPnBpZCwgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXksIDAp OworCQkJCQkJCQkJTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5waWQsCisJCQkJCQkJCQlNQUlO X0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSwgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXls ZW4sIDApOwogCQkJZWxzZQogCQkJewogCQkJCWlmIChsb2NrX2tpbmQgPT0gMSkKQEAgLTI4NTgs NyArMjg2Miw4IEBAIGluc2VydF9sb2NrKFBPT0xfQ09OTkVDVElPTiAqIGZyb250ZW5kLCBQT09M X0NPTk5FQ1RJT05fUE9PTCAqIGJhY2tlbmQsIGNoYXIgKnF1CiAJCQkJCWVsc2UKIAkJCQkJewog CQkJCQkJc3RhdHVzID0gZG9fY29tbWFuZChmcm9udGVuZCwgQ09OTkVDVElPTihiYWNrZW5kLCBp KSwgcWJ1ZiwgUFJPVE9fTUFKT1JfVjMsCi0JCQkJCQkJCQkJCU1BSU5fQ09OTkVDVElPTihiYWNr ZW5kKS0+cGlkLCBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSwgMCk7CisJCQkJCQkJCQkJ CU1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+cGlkLAorCQkJCQkJCQkJCQlNQUlOX0NPTk5FQ1RJ T04oYmFja2VuZCktPmtleSwgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXlsZW4sIDApOwog CQkJCQl9CiAJCQkJfQogCQkJCWVsc2UgaWYgKGxvY2tfa2luZCA9PSAyIHx8IGxvY2tfa2luZCA9 PSAzKQpAQCAtMjkzMyw3ICsyOTM4LDggQEAgc3RhdGljIFBPT0xfU1RBVFVTIGFkZF9sb2NrX3Rh cmdldChQT09MX0NPTk5FQ1RJT04gKiBmcm9udGVuZCwgUE9PTF9DT05ORUNUSU9OX1AKIAkJcGVy X25vZGVfc3RhdGVtZW50X2xvZyhiYWNrZW5kLCBNQUlOX05PREVfSUQsICJMT0NLIFRBQkxFIHBn cG9vbF9jYXRhbG9nLmluc2VydF9sb2NrIElOIFNIQVJFIFJPVyBFWENMVVNJVkUgTU9ERSIpOwog CiAJCWlmIChkb19jb21tYW5kKGZyb250ZW5kLCBNQUlOKGJhY2tlbmQpLCAiTE9DSyBUQUJMRSBw Z3Bvb2xfY2F0YWxvZy5pbnNlcnRfbG9jayBJTiBTSEFSRSBST1cgRVhDTFVTSVZFIE1PREUiLAot CQkJCQkgICBQUk9UT19NQUpPUl9WMywgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5waWQsIE1B SU5fQ09OTkVDVElPTihiYWNrZW5kKS0+a2V5LCAwKSAhPSBQT09MX0NPTlRJTlVFKQorCQkJCQkg ICBQUk9UT19NQUpPUl9WMywgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5waWQsCisJCQkJCSAg IE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+a2V5LCBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCkt PmtleWxlbiwgMCkgIT0gUE9PTF9DT05USU5VRSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShl cnJtc2coInVuYWJsZSB0byBhZGQgbG9jayB0YXJnZXQiKSwKIAkJCQkJIGVycmRldGFpbCgiZG9f Y29tbWFuZCByZXR1cm5lZCBERUFETE9DSyBzdGF0dXMiKSkpOwpAQCAtMzA0Myw3ICszMDQ5LDgg QEAgc3RhdGljIFBPT0xfU1RBVFVTIGluc2VydF9vaWRfaW50b19pbnNlcnRfbG9jayhQT09MX0NP Tk5FQ1RJT04gKiBmcm9udGVuZCwKIAogCXBlcl9ub2RlX3N0YXRlbWVudF9sb2coYmFja2VuZCwg TUFJTl9OT0RFX0lELCBxYnVmKTsKIAlzdGF0dXMgPSBkb19jb21tYW5kKGZyb250ZW5kLCBNQUlO KGJhY2tlbmQpLCBxYnVmLCBQUk9UT19NQUpPUl9WMywKLQkJCQkJCU1BSU5fQ09OTkVDVElPTihi YWNrZW5kKS0+cGlkLCBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSwgMCk7CisJCQkJCQlN QUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPnBpZCwKKwkJCQkJCU1BSU5fQ09OTkVDVElPTihiYWNr ZW5kKS0+a2V5LCBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleWxlbiwgMCk7CiAJcmV0dXJu IHN0YXR1czsKIH0KIApAQCAtNDE0MCw3ICs0MTQ3LDggQEAgc3RhcnRfaW50ZXJuYWxfdHJhbnNh Y3Rpb24oUE9PTF9DT05ORUNUSU9OICogZnJvbnRlbmQsIFBPT0xfQ09OTkVDVElPTl9QT09MICog YmEKIAkJCQlwZXJfbm9kZV9zdGF0ZW1lbnRfbG9nKGJhY2tlbmQsIGksICJCRUdJTiIpOwogCiAJ CQkJaWYgKGRvX2NvbW1hbmQoZnJvbnRlbmQsIENPTk5FQ1RJT04oYmFja2VuZCwgaSksICJCRUdJ TiIsIE1BSk9SKGJhY2tlbmQpLAotCQkJCQkJCSAgIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+ cGlkLCBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSwgMCkgIT0gUE9PTF9DT05USU5VRSkK KwkJCQkJCQkgICBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPnBpZCwKKwkJCQkJCQkgICBNQUlO X0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSwgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXls ZW4sIDApICE9IFBPT0xfQ09OVElOVUUpCiAJCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkJKGVy cm1zZygidW5hYmxlIHRvIHN0YXJ0IHRoZSBpbnRlcm5hbCB0cmFuc2FjdGlvbiIpLAogCQkJCQkJ CSBlcnJkZXRhaWwoImRvX2NvbW1hbmQgcmV0dXJuZWQgREVBRExPQ0sgc3RhdHVzIikpKTsKQEAg LTQyMDUsNyArNDIxMyw4IEBAIGVuZF9pbnRlcm5hbF90cmFuc2FjdGlvbihQT09MX0NPTk5FQ1RJ T04gKiBmcm9udGVuZCwgUE9PTF9DT05ORUNUSU9OX1BPT0wgKiBiYWNrCiAJCQkJUEdfVFJZKCk7 CiAJCQkJewogCQkJCQlpZiAoZG9fY29tbWFuZChmcm9udGVuZCwgQ09OTkVDVElPTihiYWNrZW5k LCBpKSwgIkNPTU1JVCIsIE1BSk9SKGJhY2tlbmQpLAotCQkJCQkJCQkgICBNQUlOX0NPTk5FQ1RJ T04oYmFja2VuZCktPnBpZCwgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXksIDEpICE9IFBP T0xfQ09OVElOVUUpCisJCQkJCQkJCSAgIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+cGlkLAor CQkJCQkJCQkgICBNQUlOX0NPTk5FQ1RJT04oYmFja2VuZCktPmtleSwgTUFJTl9DT05ORUNUSU9O KGJhY2tlbmQpLT5rZXlsZW4sIDEpICE9IFBPT0xfQ09OVElOVUUpCiAJCQkJCXsKIAkJCQkJCWVy ZXBvcnQoRVJST1IsCiAJCQkJCQkJCShlcnJtc2coInVuYWJsZSB0byBDT01NSVQgdGhlIHRyYW5z YWN0aW9uIiksCkBAIC00MjU4LDcgKzQyNjcsOCBAQCBlbmRfaW50ZXJuYWxfdHJhbnNhY3Rpb24o UE9PTF9DT05ORUNUSU9OICogZnJvbnRlbmQsIFBPT0xfQ09OTkVDVElPTl9QT09MICogYmFjawog CQkJUEdfVFJZKCk7CiAJCQl7CiAJCQkJaWYgKGRvX2NvbW1hbmQoZnJvbnRlbmQsIE1BSU4oYmFj a2VuZCksICJDT01NSVQiLCBNQUpPUihiYWNrZW5kKSwKLQkJCQkJCQkgICBNQUlOX0NPTk5FQ1RJ T04oYmFja2VuZCktPnBpZCwgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXksIDEpICE9IFBP T0xfQ09OVElOVUUpCisJCQkJCQkJICAgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5waWQsCisJ CQkJCQkJICAgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXksIE1BSU5fQ09OTkVDVElPTihi YWNrZW5kKS0+a2V5bGVuLCAxKSAhPSBQT09MX0NPTlRJTlVFKQogCQkJCXsKIAkJCQkJZXJlcG9y dChFUlJPUiwKIAkJCQkJCQkoZXJybXNnKCJ1bmFibGUgdG8gQ09NTUlUIHRoZSB0cmFuc2FjdGlv biIpLApkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvY29sL3Bvb2xfcHJvdG9fbW9kdWxlcy5jIGIvc3Jj L3Byb3RvY29sL3Bvb2xfcHJvdG9fbW9kdWxlcy5jCmluZGV4IGE2MzM2ZjhlMi4uYzI4MDI5OThh IDEwMDY0NAotLS0gYS9zcmMvcHJvdG9jb2wvcG9vbF9wcm90b19tb2R1bGVzLmMKKysrIGIvc3Jj L3Byb3RvY29sL3Bvb2xfcHJvdG9fbW9kdWxlcy5jCkBAIC0yNDkwLDcgKzI0OTAsNyBAQCBzdGF0 aWMgUE9PTF9TVEFUVVMgY2xvc2Vfc3RhbmRieV90cmFuc2FjdGlvbnMoUE9PTF9DT05ORUNUSU9O ICogZnJvbnRlbmQsCiAJCQlwZXJfbm9kZV9zdGF0ZW1lbnRfbG9nKGJhY2tlbmQsIGksICJDT01N SVQiKTsKIAkJCWlmIChkb19jb21tYW5kKGZyb250ZW5kLCBDT05ORUNUSU9OKGJhY2tlbmQsIGkp LCAiQ09NTUlUIiwgTUFKT1IoYmFja2VuZCksCiAJCQkJCQkgICBNQUlOX0NPTk5FQ1RJT04oYmFj a2VuZCktPnBpZCwKLQkJCQkJCSAgIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+a2V5LCAwKSAh PSBQT09MX0NPTlRJTlVFKQorCQkJCQkJICAgTUFJTl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXks IE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+a2V5bGVuLCAwKSAhPSBQT09MX0NPTlRJTlVFKQog CQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJybXNnKCJ1bmFibGUgdG8gY2xvc2Ugc3RhbmRi eSB0cmFuc2FjdGlvbnMiKSwKIAkJCQkJCSBlcnJkZXRhaWwoImRvX2NvbW1hbmQgcmV0dXJuZWQg REVBRExPQ0sgc3RhdHVzIikpKTsKZGlmZiAtLWdpdCBhL3NyYy9yZXdyaXRlL3Bvb2xfbG9iai5j IGIvc3JjL3Jld3JpdGUvcG9vbF9sb2JqLmMKaW5kZXggMzgxODdmZTE0Li43NjAxYTkzMTYgMTAw NjQ0Ci0tLSBhL3NyYy9yZXdyaXRlL3Bvb2xfbG9iai5jCisrKyBiL3NyYy9yZXdyaXRlL3Bvb2xf bG9iai5jCkBAIC01LDcgKzUsNyBAQAogICogcGdwb29sOiBhIGxhbmd1YWdlIGluZGVwZW5kZW50 IGNvbm5lY3Rpb24gcG9vbCBzZXJ2ZXIgZm9yIFBvc3RncmVTUUwKICAqIHdyaXR0ZW4gYnkgVGF0 c3VvIElzaGlpCiAgKgotICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMTAJUGdQb29sIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAorICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjUJUGdQb29sIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAogICoKICAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kCiAgKiBpdHMgZG9jdW1lbnRhdGlv biBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieQpAQCAtMTc0LDcgKzE3 NCw3IEBAIHBvb2xfcmV3cml0ZV9sb19jcmVhdChjaGFyIGtpbmQsIGNoYXIgKnBhY2tldCwgaW50 IHBhY2tldF9sZW4sCiAJc25wcmludGYocWJ1Ziwgc2l6ZW9mKHFidWYpLCAiTE9DSyBUQUJMRSAl cyBJTiBTSEFSRSBST1cgRVhDTFVTSVZFIE1PREUiLCBwb29sX2NvbmZpZy0+bG9ial9sb2NrX3Rh YmxlKTsKIAlwZXJfbm9kZV9zdGF0ZW1lbnRfbG9nKGJhY2tlbmQsIE1BSU5fTk9ERV9JRCwgcWJ1 Zik7CiAJc3RhdHVzID0gZG9fY29tbWFuZChmcm9udGVuZCwgTUFJTihiYWNrZW5kKSwgcWJ1Ziwg TUFKT1IoYmFja2VuZCksIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+cGlkLAotCQkJCQkJTUFJ Tl9DT05ORUNUSU9OKGJhY2tlbmQpLT5rZXksIDApOworCQkJCQkJTUFJTl9DT05ORUNUSU9OKGJh Y2tlbmQpLT5rZXksIE1BSU5fQ09OTkVDVElPTihiYWNrZW5kKS0+a2V5bGVuLCAwKTsKIAlpZiAo c3RhdHVzID09IFBPT0xfRU5EKQogCXsKIAkJZXJlcG9ydChXQVJOSU5HLAotLSAKMi4yNS4xCgo= ----Next_Part(Mon_Jul_14_15_57_10_2025_257)----