Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oAtAN-0001nl-4E for pgsql-hackers@arkaria.postgresql.org; Mon, 11 Jul 2022 13:09:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oAtAM-0007hh-24 for pgsql-hackers@arkaria.postgresql.org; Mon, 11 Jul 2022 13:09:34 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oAtAL-0007hK-08 for pgsql-hackers@lists.postgresql.org; Mon, 11 Jul 2022 13:09:33 +0000 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oAtAE-0005tV-MT for pgsql-hackers@postgresql.org; Mon, 11 Jul 2022 13:09:32 +0000 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.west.internal (Postfix) with ESMTP id 0ABF93200645; Mon, 11 Jul 2022 09:09:22 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Mon, 11 Jul 2022 09:09:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:date:date:feedback-id :feedback-id:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; t=1657544962; x=1657631362; bh=ALMLzQAUb3Kku8rNXjTi5OAoNkm4 g6+NCKvq3hwPEL0=; b=tBWq4Ct02XiisRTS5Mlnysi2SKNvBBQFajPvEf2obYS1 Zbi4KeeyyAeQsaZ90r8RgUm1XRqZkKRt1kn8VgZNXQMuwo7yKJUMxnPSiBBtc1xY fX4DI22szIVb9FKyYvHT9nur4rH3DYeDmL2rXscBdPlbKJS/fvoeMaNTj/CIfxHz +ZFx/4MjkgOqXfPQWOlpB9a9MhgwH4zgxWpVWzHpfXjQmEadUHmlqoZYW1+NtzdO UqLipwMtms9gl3iU8LO7d5rw2rgtsafKIYqtxhZ9JMsv2GuC43BmRbjRotSx7vSU E/pAiDIxHlQvxCqtO+LbGuNpJ3TqrCUJuT5OeCyc6w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrudejfedgheelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurheptgfkffggfgfuvfevfhfhjgesmhdtreertdefjeenucfhrhhomheprfgvthgv rhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghishgvnhhtrhgruhhtsegvnhhtvg hrphhrihhsvggusgdrtghomheqnecuggftrfgrthhtvghrnhepuedtkeehueehtddvgfff heelteefhfeifeduiedtffeitdeludejhfejudefffffnecuvehluhhsthgvrhfuihiivg eptdenucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnhhtrhgruhht segvnhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Feedback-ID: i131946ab:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 11 Jul 2022 09:09:21 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------aGZ7dnZnUZCBCclIjIbaz3lj" Message-ID: <2ef20161-e99d-a6ea-a36d-577843a2daae@enterprisedb.com> Date: Mon, 11 Jul 2022 15:09:19 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH] Log details for client certificate failures Content-Language: en-US To: Jacob Champion Cc: "pgsql-hackers@postgresql.org" References: <290871e5-f1d9-54a8-5df4-dbd9e604c08d@enterprisedb.com> <7c0468dcadbc0d0c987daf9ca08c8d111948eae6.camel@vmware.com> <9b8338210b865d79239ec35ca523792ce331c0a3.camel@vmware.com> <61aa4b6c-9de2-d61b-821a-a34ab1e515e2@enterprisedb.com> From: Peter Eisentraut In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------aGZ7dnZnUZCBCclIjIbaz3lj Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 08.07.22 20:39, Jacob Champion wrote: > I also added an optional 0002 that bubbles the error info up to the > final ereport(ERROR), using errdetail() and errhint(). I can squash it > into 0001 if you like it, or drop it if you don't. (This approach > could be adapted to the client, too.) I squashed those two together. I also adjusted the error message a bit more for project style. (We can put both lines into detail.) I had to read up on this "ex_data" API. Interesting. But I'm wondering a bit about how the life cycle of these objects is managed. What happens if the allocated error string is deallocated before its containing object? Or vice versa? How do we ensure we don't accidentally reuse the error string when the code runs again? (I guess currently it can't?) Maybe we should avoid this and just put the errdetail itself into a static variable that we unset once the message is printed? --------------aGZ7dnZnUZCBCclIjIbaz3lj Content-Type: text/plain; charset=UTF-8; name="v5-0001-Log-details-for-client-certificate-failures.patch" Content-Disposition: attachment; filename*0="v5-0001-Log-details-for-client-certificate-failures.patch" Content-Transfer-Encoding: base64 RnJvbSBlOWJiZjY5NjE4YmZlYTQzM2E2OTE2YWY5Y2RjYzU5ZjA0Yjk2ZWRhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCAxMSBKdWwgMjAyMiAxNDoyODo0MyArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggdjVdIExvZyBkZXRhaWxzIGZvciBjbGllbnQgY2VydGlmaWNhdGUgZmFpbHVy ZXMKCkN1cnJlbnRseSwgZGVidWdnaW5nIGNsaWVudCBjZXJ0IHZlcmlmaWNhdGlvbiBmYWls dXJlcyBpcyBtb3N0bHkKbGltaXRlZCB0byBsb29raW5nIGF0IHRoZSBUTFMgYWxlcnQgY29k ZSBvbiB0aGUgY2xpZW50IHNpZGUuICBGb3IKc2ltcGxlIGRlcGxveW1lbnRzLCBzb21ldGlt ZXMgaXQncyBlbm91Z2ggdG8gc2VlICJzc2x2MyBhbGVydApjZXJ0aWZpY2F0ZSByZXZva2Vk IiBhbmQga25vdyBleGFjdGx5IHdoYXQgbmVlZHMgdG8gYmUgZml4ZWQsIGJ1dCBpZgp5b3Ug YWRkIGFueSBtb3JlIGNvbXBsZXhpdHkgKG11bHRpcGxlIENBIGxheWVycywgbWlzY29uZmln dXJlZCBDQQpjZXJ0aWZpY2F0ZXMsIGV0Yy4pLCB0cnlpbmcgdG8gZGVidWcgd2hhdCBoYXBw ZW5lZCBiYXNlZCBvbiB0aGUgVExTCmFsZXJ0IGFsb25lIGNhbiBiZSBhbiBleGVyY2lzZSBp biBmcnVzdHJhdGlvbi4KCkx1Y2tpbHksIHRoZSBzZXJ2ZXIgaGFzIG1vcmUgaW5mb3JtYXRp b24gYWJvdXQgZXhhY3RseSB3aGF0IGZhaWxlZCBpbgp0aGUgY2hhaW4sIGFuZCB3ZSBhbHJl YWR5IGhhdmUgdGhlIHJlcXVpc2l0ZSBjYWxsYmFjayBpbXBsZW1lbnRlZCBhcyBhCnN0dWIu ICBBZGQgYW4gZXhfZGF0YSBwb2ludGVyIHRvIHRoZSBTU0wgaGFuZGxlLCBzbyB0aGF0IHdl IGNhbiBzdG9yZQplcnJvciBpbmZvcm1hdGlvbiBmcm9tIHRoZSB2ZXJpZmljYXRpb24gY2Fs bGJhY2suICBUaGlzIGxldHMgdXMgYWRkCm91ciBlcnJvciBkZXRhaWxzIGRpcmVjdGx5IHRv IHRoZSBmaW5hbCAiY291bGQgbm90IGFjY2VwdCBTU0wKY29ubmVjdGlvbiIgbG9nIG1lc3Nh Z2UsIGFzIG9wcG9zZWQgdG8gaXNzdWluZyBpbnRlcm1lZGlhdGUgTE9Hcy4KCkl0IGVuZHMg dXAgbG9va2luZyBsaWtlCgogICAgTE9HOiAgY29ubmVjdGlvbiByZWNlaXZlZDogaG9zdD1s b2NhbGhvc3QgcG9ydD00MzExMgogICAgTE9HOiAgY291bGQgbm90IGFjY2VwdCBTU0wgY29u bmVjdGlvbjogY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZAogICAgREVUQUlMOiAgQ2xpZW50 IGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBmYWlsZWQgYXQgZGVwdGggMTogdW5hYmxlIHRv IGdldCBsb2NhbCBpc3N1ZXIgY2VydGlmaWNhdGUuCiAgICAgICAgICAgIEZhaWxlZCBjZXJ0 aWZpY2F0ZSBkYXRhICh1bnZlcmlmaWVkKTogc3ViamVjdCAiL0NOPVRlc3QgQ0EgZm9yIFBv c3RncmVTUUwgU1NMIHJlZ3Jlc3Npb24gdGVzdCBjbGllbnQgY2VydHMiLCBzZXJpYWwgbnVt YmVyIDIzMTUxMzQ5OTUyMDE2NTY1NzcsIGlzc3VlciAiL0NOPVRlc3Qgcm9vdCBDQSBmb3Ig UG9zdGdyZVNRTCBTU0wgcmVncmVzc2lvbiB0ZXN0IHN1aXRlIi4KClRoZSBsZW5ndGggb2Yg dGhlIFN1YmplY3QgYW5kIElzc3VlciBzdHJpbmdzIGlzIGxpbWl0ZWQgdG8gcHJldmVudApt YWxpY2lvdXMgY2xpZW50IGNlcnRzIGZyb20gc3BhbW1pbmcgdGhlIGxvZ3MuICBJbiBjYXNl IHRoZSB0cnVuY2F0aW9uCm1ha2VzIHRoaW5ncyBhbWJpZ3VvdXMsIHRoZSBjZXJ0aWZpY2F0 ZSdzIHNlcmlhbCBudW1iZXIgaXMgYWxzbwpsb2dnZWQuCgpBdXRob3I6IEphY29iIENoYW1w aW9uIDxwY2hhbXBpb25Adm13YXJlLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9z dGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0L2QxM2M0YTU3ODdjMmEzZjgzNzA1MTI0ZjAz OTFlMDczOGM3OTY3NTEuY2FtZWxAdm13YXJlLmNvbQotLS0KIHNyYy9iYWNrZW5kL2xpYnBx L2JlLXNlY3VyZS1vcGVuc3NsLmMgfCAxMzIgKysrKysrKysrKysrKysrKysrKysrKysrKy0K IHNyYy90ZXN0L3NzbC9jb25mL2NsaWVudC1sb25nLmNvbmZpZyAgfCAgMTQgKysrCiBzcmMv dGVzdC9zc2wvc3NsL2NsaWVudC1sb25nLmNydCAgICAgIHwgIDIwICsrKysKIHNyYy90ZXN0 L3NzbC9zc2wvY2xpZW50LWxvbmcua2V5ICAgICAgfCAgMjcgKysrKysrCiBzcmMvdGVzdC9z c2wvc3NsZmlsZXMubWsgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9zc2wvdC8w MDFfc3NsdGVzdHMucGwgICAgICAgIHwgIDQwICsrKysrKystCiBzcmMvdGVzdC9zc2wvdC9T U0wvQmFja2VuZC9PcGVuU1NMLnBtIHwgICAyICstCiA3IGZpbGVzIGNoYW5nZWQsIDIzMCBp bnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L3NzbC9jb25mL2NsaWVudC1sb25nLmNvbmZpZwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3NzbC9zc2wvY2xpZW50LWxvbmcuY3J0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3Qvc3NsL3NzbC9jbGllbnQtbG9uZy5rZXkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9saWJwcS9iZS1zZWN1cmUtb3BlbnNzbC5jIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2Vj dXJlLW9wZW5zc2wuYwppbmRleCAzZDAxNjhhMzY5Li44ZDVlZWUwZDE2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtb3BlbnNzbC5jCisrKyBiL3NyYy9iYWNr ZW5kL2xpYnBxL2JlLXNlY3VyZS1vcGVuc3NsLmMKQEAgLTgxLDYgKzgxLDE0IEBAIHN0YXRp YyBib29sIHNzbF9pc19zZXJ2ZXJfc3RhcnQ7CiBzdGF0aWMgaW50CXNzbF9wcm90b2NvbF92 ZXJzaW9uX3RvX29wZW5zc2woaW50IHYpOwogc3RhdGljIGNvbnN0IGNoYXIgKnNzbF9wcm90 b2NvbF92ZXJzaW9uX3RvX3N0cmluZyhpbnQgdik7CiAKKy8qIEhlbHBlcnMgZm9yIHN0b3Jp bmcgYXBwbGljYXRpb24gZGF0YSBpbiB0aGUgU1NMIGhhbmRsZSAqLworc3RydWN0IHBnX2V4 X2RhdGEKK3sKKwkvKiB0byBidWJibGUgZXJyb3JzIG91dCBvZiBjYWxsYmFja3MgKi8KKwlj aGFyCSAgICplcnJkZXRhaWw7Cit9Oworc3RhdGljIGludAlzc2xfZXhfaW5kZXg7CisKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSAqLwogLyoJCQkJCQkgUHVibGljIGludGVyZmFjZQkJCQkJCSovCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gKi8KQEAgLTEwMiw2ICsxMTAsNyBAQCBiZV90bHNfaW5pdChib29sIGlzU2VydmVyU3Rh cnQpCiAJCVNTTF9saWJyYXJ5X2luaXQoKTsKIAkJU1NMX2xvYWRfZXJyb3Jfc3RyaW5ncygp OwogI2VuZGlmCisJCXNzbF9leF9pbmRleCA9IFNTTF9nZXRfZXhfbmV3X2luZGV4KDAsIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEwpOwogCQlTU0xfaW5pdGlhbGl6ZWQgPSB0cnVlOwogCX0K IApAQCAtNDEzLDYgKzQyMiw3IEBAIGJlX3Rsc19vcGVuX3NlcnZlcihQb3J0ICpwb3J0KQog CWludAkJCWVycjsKIAlpbnQJCQl3YWl0Zm9yOwogCXVuc2lnbmVkIGxvbmcgZWNvZGU7CisJ c3RydWN0IHBnX2V4X2RhdGEgZXhkYXRhID0gezB9OwogCWJvb2wJCWdpdmVfcHJvdG9faGlu dDsKIAogCUFzc2VydCghcG9ydC0+c3NsKTsKQEAgLTQ0NSw2ICs0NTUsMTUgQEAgYmVfdGxz X29wZW5fc2VydmVyKFBvcnQgKnBvcnQpCiAJCQkJCQlTU0xlcnJtZXNzYWdlKEVSUl9nZXRf ZXJyb3IoKSkpKSk7CiAJCXJldHVybiAtMTsKIAl9CisJaWYgKCFTU0xfc2V0X2V4X2RhdGEo cG9ydC0+c3NsLCBzc2xfZXhfaW5kZXgsICZleGRhdGEpKQorCXsKKwkJZXJlcG9ydChDT01N RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJ CSBlcnJtc2coImNvdWxkIG5vdCBhdHRhY2ggYXBwbGljYXRpb24gZGF0YSB0byBTU0wgaGFu ZGxlOiAlcyIsCisJCQkJCQlTU0xlcnJtZXNzYWdlKEVSUl9nZXRfZXJyb3IoKSkpKSk7CisJ CXJldHVybiAtMTsKKwl9CisKIAlwb3J0LT5zc2xfaW5fdXNlID0gdHJ1ZTsKIAogYWxvb3A6 CkBAIC01MzcsMTAgKzU1NiwxMiBAQCBiZV90bHNfb3Blbl9zZXJ2ZXIoUG9ydCAqcG9ydCkK IAkJCQkJCWdpdmVfcHJvdG9faGludCA9IGZhbHNlOwogCQkJCQkJYnJlYWs7CiAJCQkJfQor CiAJCQkJZXJlcG9ydChDT01NRVJST1IsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RP Q09MX1ZJT0xBVElPTiksCiAJCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgYWNjZXB0IFNTTCBj b25uZWN0aW9uOiAlcyIsCiAJCQkJCQkJCVNTTGVycm1lc3NhZ2UoZWNvZGUpKSwKKwkJCQkJ CSBleGRhdGEuZXJyZGV0YWlsID8gZXJyZGV0YWlsX2ludGVybmFsKCIlcyIsIGV4ZGF0YS5l cnJkZXRhaWwpIDogMCwKIAkJCQkJCSBnaXZlX3Byb3RvX2hpbnQgPwogCQkJCQkJIGVycmhp bnQoIlRoaXMgbWF5IGluZGljYXRlIHRoYXQgdGhlIGNsaWVudCBkb2VzIG5vdCBzdXBwb3J0 IGFueSBTU0wgcHJvdG9jb2wgdmVyc2lvbiBiZXR3ZWVuICVzIGFuZCAlcy4iLAogCQkJCQkJ CQkgc3NsX21pbl9wcm90b2NvbF92ZXJzaW9uID8KQEAgLTEwNzYsMTIgKzEwOTcsNDYgQEAg ZHVtbXlfc3NsX3Bhc3N3ZF9jYihjaGFyICpidWYsIGludCBzaXplLCBpbnQgcndmbGFnLCB2 b2lkICp1c2VyZGF0YSkKIAlyZXR1cm4gMDsKIH0KIAorLyoKKyAqIEV4YW1pbmVzIHRoZSBw cm92aWRlZCBjZXJ0aWZpY2F0ZSBuYW1lLCBhbmQgaWYgaXQncyB0b28gbG9uZyB0byBsb2cs IG1vZGlmaWVzCisgKiBhbmQgdHJ1bmNhdGVzIGl0LiBUaGUgcmV0dXJuIHZhbHVlIGlzIE5V TEwgaWYgbm8gdHJ1bmNhdGlvbiB3YXMgbmVlZGVkOyBpdAorICogb3RoZXJ3aXNlIHBvaW50 cyBpbnRvIHRoZSBtaWRkbGUgb2YgdGhlIGlucHV0IHN0cmluZywgYW5kIHNob3VsZCBub3Qg YmUKKyAqIGZyZWVkLgorICovCitzdGF0aWMgY2hhciAqCit0cnVuY2F0ZV9jZXJ0X25hbWUo Y2hhciAqbmFtZSkKK3sKKwlzaXplX3QJCW5hbWVsZW4gPSBzdHJsZW4obmFtZSk7CisJY2hh cgkgICAqdHJ1bmNhdGVkOworCisJLyoKKwkgKiBDb21tb24gTmFtZXMgYXJlIDY0IGNoYXJz IG1heCwgc28gZm9yIGEgY29tbW9uIGNhc2Ugd2hlcmUgdGhlIENOIGlzIHRoZQorCSAqIGxh c3QgZmllbGQsIHdlIGNhbiBzdGlsbCBwcmludCB0aGUgbG9uZ2VzdCBwb3NzaWJsZSBDTiB3 aXRoIGEKKwkgKiA3LWNoYXJhY3RlciBwcmVmaXggKCIuLi4vQ049WzY0IGNoYXJzXSIpLCBm b3IgYSByZWFzb25hYmxlIGxpbWl0IG9mIDcxCisJICogY2hhcmFjdGVycy4KKwkgKi8KKyNk ZWZpbmUgTUFYTEVOIDcxCisKKwlpZiAobmFtZWxlbiA8PSBNQVhMRU4pCisJCXJldHVybiBO VUxMOworCisJLyoKKwkgKiBLZWVwIHRoZSBlbmQgb2YgdGhlIG5hbWUsIG5vdCB0aGUgYmVn aW5uaW5nLCBzaW5jZSB0aGUgbW9zdCBzcGVjaWZpYworCSAqIGZpZWxkIGlzIGxpa2VseSB0 byBnaXZlIHVzZXJzIHRoZSBtb3N0IGluZm9ybWF0aW9uLgorCSAqLworCXRydW5jYXRlZCA9 IG5hbWUgKyBuYW1lbGVuIC0gTUFYTEVOOworCXRydW5jYXRlZFswXSA9IHRydW5jYXRlZFsx XSA9IHRydW5jYXRlZFsyXSA9ICcuJzsKKworI3VuZGVmIE1BWExFTgorCisJcmV0dXJuIHRy dW5jYXRlZDsKK30KKwogLyoKICAqCUNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBjYWxsYmFj awogICoKLSAqCVRoaXMgY2FsbGJhY2sgYWxsb3dzIHVzIHRvIGxvZyBpbnRlcm1lZGlhdGUg cHJvYmxlbXMgZHVyaW5nCi0gKgl2ZXJpZmljYXRpb24sIGJ1dCBmb3Igbm93IHdlJ2xsIHNl ZSBpZiB0aGUgZmluYWwgZXJyb3IgbWVzc2FnZQotICoJY29udGFpbnMgZW5vdWdoIGluZm9y bWF0aW9uLgorICoJVGhpcyBjYWxsYmFjayBhbGxvd3MgdXMgdG8gZXhhbWluZSBpbnRlcm1l ZGlhdGUgcHJvYmxlbXMgZHVyaW5nCisgKgl2ZXJpZmljYXRpb24sIGZvciBsYXRlciBsb2dn aW5nLgogICoKICAqCVRoaXMgY2FsbGJhY2sgYWxzbyBhbGxvd3MgdXMgdG8gb3ZlcnJpZGUg dGhlIGRlZmF1bHQgYWNjZXB0YW5jZQogICoJY3JpdGVyaWEgKGUuZy4sIGFjY2VwdGluZyBz ZWxmLXNpZ25lZCBvciBleHBpcmVkIGNlcnRzKSwgYnV0CkBAIC0xMDkwLDYgKzExNDUsNzcg QEAgZHVtbXlfc3NsX3Bhc3N3ZF9jYihjaGFyICpidWYsIGludCBzaXplLCBpbnQgcndmbGFn LCB2b2lkICp1c2VyZGF0YSkKIHN0YXRpYyBpbnQKIHZlcmlmeV9jYihpbnQgb2ssIFg1MDlf U1RPUkVfQ1RYICpjdHgpCiB7CisJU1NMCQkgICAqc3NsOworCWludAkJCWRlcHRoOworCWlu dAkJCWVycmNvZGU7CisJY29uc3QgY2hhciAqZXJyc3RyaW5nOworCVN0cmluZ0luZm9EYXRh IHN0cjsKKwlzdHJ1Y3QgcGdfZXhfZGF0YSAqZXhkYXRhOworCVg1MDkJICAgKmNlcnQ7CisK KwlpZiAob2spCisJeworCQkvKiBOb3RoaW5nIHRvIGRvIGZvciB0aGUgc3VjY2Vzc2Z1bCBj YXNlLiAqLworCQlyZXR1cm4gb2s7CisJfQorCisJLyogUHVsbCBhbGwgdGhlIGluZm9ybWF0 aW9uIHdlIGhhdmUgb24gdGhlIHZlcmlmaWNhdGlvbiBmYWlsdXJlLiAqLworCXNzbCA9IFg1 MDlfU1RPUkVfQ1RYX2dldF9leF9kYXRhKGN0eCwgU1NMX2dldF9leF9kYXRhX1g1MDlfU1RP UkVfQ1RYX2lkeCgpKTsKKwlkZXB0aCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcl9kZXB0 aChjdHgpOworCWVycmNvZGUgPSBYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3IoY3R4KTsKKwll cnJzdHJpbmcgPSBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhlcnJjb2RlKTsKKwor CWluaXRTdHJpbmdJbmZvKCZzdHIpOworCWFwcGVuZFN0cmluZ0luZm8oJnN0ciwKKwkJCQkJ IF8oIkNsaWVudCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gZmFpbGVkIGF0IGRlcHRoICVk OiAlcy4iKSwKKwkJCQkJIGRlcHRoLCBlcnJzdHJpbmcpOworCisJY2VydCA9IFg1MDlfU1RP UkVfQ1RYX2dldF9jdXJyZW50X2NlcnQoY3R4KTsKKwlpZiAoY2VydCkKKwl7CisJCWNoYXIJ ICAgKnN1YmplY3QsCisJCQkJICAgKmlzc3VlcjsKKwkJY2hhcgkgICAqc3ViX3RydW5jYXRl ZCwKKwkJCQkgICAqaXNzX3RydW5jYXRlZDsKKwkJY2hhcgkgICAqc2VyaWFsbm87CisJCUFT TjFfSU5URUdFUiAqc247CisJCUJJR05VTQkgICAqYjsKKworCQkvKgorCQkgKiBHZXQgdGhl IFN1YmplY3QgYW5kIElzc3VlciBmb3IgbG9nZ2luZywgYnV0IGRvbid0IGxldCBtYWxpY2lv dXNseQorCQkgKiBodWdlIGNlcnRzIGZsb29kIHRoZSBsb2dzLgorCQkgKi8KKwkJc3ViamVj dCA9IFg1MDlfTkFNRV90b19jc3RyaW5nKFg1MDlfZ2V0X3N1YmplY3RfbmFtZShjZXJ0KSk7 CisJCXN1Yl90cnVuY2F0ZWQgPSB0cnVuY2F0ZV9jZXJ0X25hbWUoc3ViamVjdCk7CisKKwkJ aXNzdWVyID0gWDUwOV9OQU1FX3RvX2NzdHJpbmcoWDUwOV9nZXRfaXNzdWVyX25hbWUoY2Vy dCkpOworCQlpc3NfdHJ1bmNhdGVkID0gdHJ1bmNhdGVfY2VydF9uYW1lKGlzc3Vlcik7CisK KwkJLyoKKwkJICogUHVsbCB0aGUgc2VyaWFsIG51bWJlciwgdG9vLCBpbiBjYXNlIGEgU3Vi amVjdCBpcyBzdGlsbCBhbWJpZ3VvdXMuCisJCSAqIFRoaXMgbWlycm9ycyBiZV90bHNfZ2V0 X3BlZXJfc2VyaWFsKCkuCisJCSAqLworCQlzbiA9IFg1MDlfZ2V0X3NlcmlhbE51bWJlcihj ZXJ0KTsKKwkJYiA9IEFTTjFfSU5URUdFUl90b19CTihzbiwgTlVMTCk7CisJCXNlcmlhbG5v ID0gQk5fYm4yZGVjKGIpOworCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZzdHIsICdcbicp OworCQlhcHBlbmRTdHJpbmdJbmZvKCZzdHIsCisJCQkJCQkgXygiRmFpbGVkIGNlcnRpZmlj YXRlIGRhdGEgKHVudmVyaWZpZWQpOiBzdWJqZWN0IFwiJXNcIiwgc2VyaWFsIG51bWJlciAl cywgaXNzdWVyIFwiJXNcIi4iKSwKKwkJCQkJCSBzdWJfdHJ1bmNhdGVkID8gc3ViX3RydW5j YXRlZCA6IHN1YmplY3QsCisJCQkJCQkgc2VyaWFsbm8gPyBzZXJpYWxubyA6IF8oInVua25v d24iKSwKKwkJCQkJCSBpc3NfdHJ1bmNhdGVkID8gaXNzX3RydW5jYXRlZCA6IGlzc3Vlcik7 CisKKwkJQk5fZnJlZShiKTsKKwkJT1BFTlNTTF9mcmVlKHNlcmlhbG5vKTsKKwkJcGZyZWUo aXNzdWVyKTsKKwkJcGZyZWUoc3ViamVjdCk7CisJfQorCisJLyogU3RvcmUgb3VyIGRldGFp bCBtZXNzYWdlIGluIFNTTCBhcHBsaWNhdGlvbiBkYXRhLCB0byBiZSBsb2dnZWQgbGF0ZXIu ICovCisJZXhkYXRhID0gU1NMX2dldF9leF9kYXRhKHNzbCwgc3NsX2V4X2luZGV4KTsKKwll eGRhdGEtPmVycmRldGFpbCA9IHN0ci5kYXRhOworCiAJcmV0dXJuIG9rOwogfQogCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zc2wvY29uZi9jbGllbnQtbG9uZy5jb25maWcgYi9zcmMvdGVz dC9zc2wvY29uZi9jbGllbnQtbG9uZy5jb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uMGU5MmE4ZmJmZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L3NzbC9jb25mL2NsaWVudC1sb25nLmNvbmZpZwpAQCAtMCwwICsxLDE0IEBACisjIEFuIE9w ZW5TU0wgZm9ybWF0IENTUiBjb25maWcgZmlsZSBmb3IgY3JlYXRpbmcgYSBjbGllbnQgY2Vy dGlmaWNhdGUgd2l0aCBhCisjIGxvbmcgU3ViamVjdC4KKworWyByZXEgXQorZGlzdGluZ3Vp c2hlZF9uYW1lICAgICA9IHJlcV9kaXN0aW5ndWlzaGVkX25hbWUKK3Byb21wdCAgICAgICAg ICAgICAgICAgPSBubworCitbIHJlcV9kaXN0aW5ndWlzaGVkX25hbWUgXQorIyBDb21tb24g TmFtZXMgYXJlIDY0IGNoYXJhY3RlcnMgbWF4CitDTiAgICAgICAgICAgICAgICAgICAgID0g c3NsLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw MTIzNDU2Nzg5MAorT1UgICAgICAgICAgICAgICAgICAgICA9IFNvbWUgT3JnYW5pemF0aW9u YWwgVW5pdAorTyAgICAgICAgICAgICAgICAgICAgICA9IFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisKKyMgbm8gZXh0ZW5zaW9ucyBpbiBjbGllbnQgY2VydHMKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3NzbC9zc2wvY2xpZW50LWxvbmcuY3J0IGIvc3JjL3Rlc3Qv c3NsL3NzbC9jbGllbnQtbG9uZy5jcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uYTFkYjU1YjVjMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3NzbC9z c2wvY2xpZW50LWxvbmcuY3J0CkBAIC0wLDAgKzEsMjAgQEAKKy0tLS0tQkVHSU4gQ0VSVElG SUNBVEUtLS0tLQorTUlJRFdqQ0NBa0lDQ0NBaUJSSVVSRVlBTUEwR0NTcUdTSWIzRFFFQkN3 VUFNRUl4UURBK0JnTlZCQU1NTjFSbAorYzNRZ1EwRWdabTl5SUZCdmMzUm5jbVZUVVV3Z1Ux Tk1JSEpsWjNKbGMzTnBiMjRnZEdWemRDQmpiR2xsYm5RZworWTJWeWRITXdIaGNOTWpJd05U RXlNakUwTkRRM1doY05ORGt3T1RJM01qRTBORFEzV2pDQm5ERXNNQ29HQTFVRQorQ2d3alVH OXpkR2R5WlZOUlRDQkhiRzlpWVd3Z1JHVjJaV3h2Y0cxbGJuUWdSM0p2ZFhBeElUQWZCZ05W QkFzTQorR0ZOdmJXVWdUM0puWVc1cGVtRjBhVzl1WVd3Z1ZXNXBkREZKTUVjR0ExVUVBd3hB YzNOc0xURXlNelExTmpjNAorT1RBeE1qTTBOVFkzT0Rrd01USXpORFUyTnpnNU1ERXlNelEx TmpjNE9UQXhNak0wTlRZM09Ea3dNVEl6TkRVMgorTnpnNU1EQ0NBU0l3RFFZSktvWklodmNO QVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5neG1lSGlWUnVCVHdsRworUTFvTTJNMWNrUUNJ L280aFljTzlCWWR4RFlIaUE3ankxV1ZlbnlqOEJ0VWk1QWo5VkRocGZpdWV3RGFyR1E1YQor VGdnRDFwTWprdzBNb3JCS0JyOSsxdTF4R0gvOFEzbGtnVStPUVhyUGdsbzRJclZjcWFvWkZR MG51TWFWYmllWAorMGREeVRmc1RhVlFZWXRxQXR6aEkvVUdTSU9oazIrbEI5ZlA2OGp3OWNM SDBRWXZSK3FRMElQRzEzSTV6bVNZUAorTWowVll3TW45VEY5LzJzQk9TUlZnVFZBY3JZZ09R TGszcy9mR2U2NnRtVkJJV1ljcTY1eWdxRDErd2V1K1BheAoralBud3NlZmtkbmY2SmRZUkcx RjFDbzdnNTJwb1BFWWllQUhmUU9KNjlzRzBMWXgwbEJPREM2OXF2U0o0V2RDUQorMHpLdzI4 OENBd0VBQVRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXJyNXIxVXhnVXpQeWttdTVaZEw2 eThUQQorWmJTUTF5QlkwbmhzUndSa0RkNjZpUEs5VTZUNksyK3BMOFZjNmlvb3Y5V090SFE2 b2hQM2dTYXZkNDBjSFJtRgorYXV3SXNaNFdrMG1qZnRwT3VQRnAxaHlvOGQvUVlyYkVtM3FO ZTVxbG41UzloOGlwb1l2RnRmNXpsSzJLSEpGegorOWVoWk1aMXpHQUVSTkNWTThVVVFLeVV1 WkI1R3lyWmxic2xmNlAvOUJzYzU0WVVXeFAycHI1ci9SSjZEZVhmSQorekFGZlhUOEFGVmxD bEFSQTk0OWdwWDBMVnJYcnlETjYwQ1VKODhRSm1ZQ1EzQXRJZ3pZWWVxY2RZSFRkOGVTMgor OVA1d2hEZFU1TnZST1ArTGpFVGVSZUpGNEJmeWMyZ003enhaRDJCRFNmNWV4dm5OcWl5NDIv bFIxYjRzenc9PQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3NsL3NzbC9jbGllbnQtbG9uZy5rZXkgYi9zcmMvdGVzdC9zc2wvc3NsL2NsaWVu dC1sb25nLmtleQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41YjQ1 NWEwMjFmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3NsL3NzbC9jbGllbnQtbG9u Zy5rZXkKQEAgLTAsMCArMSwyNyBAQAorLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0t LQorTUlJRXBBSUJBQUtDQVFFQTJER1o0ZUpWRzRGUENVWkRXZ3pZelZ5UkFJaitqaUZodzcw RmgzRU5nZUlEdVBMVgorWlY2ZktQd0cxU0xrQ1AxVU9HbCtLNTdBTnFzWkRscE9DQVBXa3lP VERReWlzRW9HdjM3VzdYRVlmL3hEZVdTQgorVDQ1QmVzK0NXamdpdFZ5cHFoa1ZEU2U0eHBW dUo1ZlIwUEpOK3hOcFZCaGkyb0MzT0VqOVFaSWc2R1RiNlVIMQorOC9yeVBEMXdzZlJCaTlI NnBEUWc4Ylhjam5PWkpnOHlQUlZqQXlmMU1YMy9hd0U1SkZXQk5VQnl0aUE1QXVUZQorejk4 WjdycTJaVUVoWmh5cnJuS0NvUFg3QjY3NDlyR00rZkN4NStSMmQvb2wxaEViVVhVS2p1RG5h bWc4UmlKNAorQWQ5QTRucjJ3YlF0akhTVUU0TUxyMnE5SW5oWjBKRFRNckRiendJREFRQUJB b0lCQUR3SnlrcElxSW55NXhnVQorUXpBRzBVNTJubTRmblZHclE1TXdNeERoL0haTlplcyt4 TFJhQ3FrL0ZFYXNZZGQ5UXA1SDdabi9oREdxWWxMeQorRVNsNHAyWkZRdGtrNFNsRDVZdlls YWRxK1ByUis0c0N0a1o1b3dXUUN3c3krN0NTQXl3UnV4N2tJUlJFKzBwVAoraHhrWHNVQkFx OGVHM2kwQUFlSEhvMDFLWDRrcHRsSjVkMXBGS0tBUFRoVFVIQ1Q0VlBIZzhyNTlJZHNOeTZ3 QworKzBFNVpSV3NWVWVQeStFUnVhclgvdW04OTZoZ2JhaURKTEZrMDJPcmxjODcrT0JtUndP OEorS29VT0VjQWlUTworT1pxR0dhREVuNVkybUVkcDJjQ21xNytJemNrbGFoYTZDUHNvVjgr TzJISzhQS3ZCSVFtbGdiRG1hbDQvUk5xcgorSkZxWXowRUNnWUVBKzV6NzRUbWordHpINTds Y2RNcVZwbmRHMzlOOHNwQmU4SmJpRkwxNnFPYjZnUkR5dFhqYworaFk2SVFvNEpTdHBKdWxu UEJaNUpRU2JTQmdDT3pZV0pKVkJubndNSktqTkNkMXRoNHpuanh4TU9lNExpRFR0dworRDNo UXR6QlU5RmxJMnNqV0VVS2YxeEN5aTlONDFBcFFDNWVEV1dkLzBHTjkreEFzeFJqTEwwMENn WUVBMi9hSAorNGtOVnNCSFE3dm12K3NOc1dlSWdLZzdQQzdoUmpjQ1lRRzl5bEJiQm5GdHY1 WEpZaWNYd3FvcnFuZ3pKUG9HdworZ0I3aWFTV0wxVU5BT1NXUlNGWWUrd29QcGtZN242UGJx MjExbnpxVjFhdkFkVnJMeWxKd3lFK0VPUWdUUzMwRAorOEJIdjBJNzE0UE1kL1FMSzVOU1VF cjFJUnRDZkxlTXBjU2c2WVlzQ2dZRUF2M084Nkt4ZVRNVHZ5eTlzM1dWRQorcDR5OHZoVURI aS9pUGJqaFFCekpGM25oaEpHcnpFK3hwR0pHNWpXRGRwUlFZMTV3dXZxdERNa0lLQThHbWZX UQorM0hhbzBnS1NWNnozVnpDT2RFS1pRZUlMTkFuc0RWdDdzaG0vZVJScW9CN0w0OFhMdFFo MzdVSkVTVWJZK3FiNgorTDBmVFp4VHMyVmpMQkYxVFk0bXhHVVVDZ1lFQTFQTEVOS25Ka0E1 L2Zvd2Q4YUEyQ29LZmJ2Z3RQQVJ5ZDlCbgorMWFIUGhFelBuYWJzR203c0JsMnFGQUV2Q0Zv S2prZ1I3c2QzbkNIc1VVZXRLbVlUVTd1RWZMY04xWVNTL29jdAorQ0xhTXM5Mk01M0pDZlpx c1JyQXZYYzJWalgwaTZPY2I0OVFKbnBoNHRCSEtDNE1qbUF1eFdyOEM5UVBOeHlmdgorbkF3 OUVPY0NnWUJZemVqVXpwNnhpdjVZenB3SW5jSUYwQTVFNlZJVGNzVytMT1IvRlpPVVBzbzBY MmhRb0lFcword3g4SGpLQ0dmdlg2NjI4dm5hV0pDMDk5aFRtT3pWd3BFZ2lrNXpPbWVBbVov L2d0Mkk1M1lnL2xvUVV6SDBDRAoraVh4cmcvNFVwN1l4eDg5N3cxMXVrT1p2Mnh3bUFGTzFv NTJROGs3ZDVGaU1mRUl6QWtTM1BnPT0KKy0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0t CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zc2wvc3NsZmlsZXMubWsgYi9zcmMvdGVzdC9zc2wv c3NsZmlsZXMubWsKaW5kZXggY2MwMjM2NjdhZi4uNWY2N2FiYTc5NSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3Qvc3NsL3NzbGZpbGVzLm1rCisrKyBiL3NyYy90ZXN0L3NzbC9zc2xmaWxlcy5t awpAQCAtMzMsNyArMzMsNyBAQCBTRVJWRVJTIDo9IHNlcnZlci1jbi1hbmQtYWx0LW5hbWVz IFwKIAlzZXJ2ZXItbXVsdGlwbGUtYWx0LW5hbWVzIFwKIAlzZXJ2ZXItbm8tbmFtZXMgXAog CXNlcnZlci1yZXZva2VkCi1DTElFTlRTIDo9IGNsaWVudCBjbGllbnQtZG4gY2xpZW50LXJl dm9rZWQgY2xpZW50X2V4dAorQ0xJRU5UUyA6PSBjbGllbnQgY2xpZW50LWRuIGNsaWVudC1y ZXZva2VkIGNsaWVudF9leHQgY2xpZW50LWxvbmcKIAogIwogIyBUbyBhZGQgYSBuZXcgbm9u LXN0YW5kYXJkIGtleSwgYWRkIGl0IHRvIFNQRUNJQUxfS0VZUyBhbmQgdGhlbiBhZGQgYSBy ZWNpcGUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3NzbC90LzAwMV9zc2x0ZXN0cy5wbCBiL3Ny Yy90ZXN0L3NzbC90LzAwMV9zc2x0ZXN0cy5wbAppbmRleCA3MDdmNDAwNWFmLi45MGJhNWE3 NTE1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zc2wvdC8wMDFfc3NsdGVzdHMucGwKKysrIGIv c3JjL3Rlc3Qvc3NsL3QvMDAxX3NzbHRlc3RzLnBsCkBAIC02ODMsNiArNjgzLDEwIEBAIHN1 YiBzd2l0Y2hfc2VydmVyX2NlcnQKIAkgIC4gc3Nsa2V5KCdjbGllbnQtcmV2b2tlZC5rZXkn KSwKIAkiY2VydGlmaWNhdGUgYXV0aG9yaXphdGlvbiBmYWlscyB3aXRoIHJldm9rZWQgY2xp ZW50IGNlcnQiLAogCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9TU0wgZXJyb3I6IHNzbHYzIGFs ZXJ0IGNlcnRpZmljYXRlIHJldm9rZWQvLAorCWxvZ19saWtlID0+IFsKKwkJcXJ7Q2xpZW50 IGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBmYWlsZWQgYXQgZGVwdGggMDogY2VydGlmaWNh dGUgcmV2b2tlZH0sCisJCXFye0ZhaWxlZCBjZXJ0aWZpY2F0ZSBkYXRhIFwodW52ZXJpZmll ZFwpOiBzdWJqZWN0ICIvQ049c3NsdGVzdHVzZXIiLCBzZXJpYWwgbnVtYmVyIDIzMTUxMzQ5 OTUyMDE2NTY1NzcsIGlzc3VlciAiL0NOPVRlc3QgQ0EgZm9yIFBvc3RncmVTUUwgU1NMIHJl Z3Jlc3Npb24gdGVzdCBjbGllbnQgY2VydHMifSwKKwldLAogCSMgcmV2b2tlZCBjZXJ0aWZp Y2F0ZXMgc2hvdWxkIG5vdCBhdXRoZW50aWNhdGUgdGhlIHVzZXIKIAlsb2dfdW5saWtlID0+ IFtxci9jb25uZWN0aW9uIGF1dGhlbnRpY2F0ZWQ6L10sKTsKIApAQCAtNzMwLDcgKzczNCwz NSBAQCBzdWIgc3dpdGNoX3NlcnZlcl9jZXJ0CiAkbm9kZS0+Y29ubmVjdF9mYWlscygKIAkk Y29tbW9uX2Nvbm5zdHIgLiAiICIgLiAic3NsbW9kZT1yZXF1aXJlIHNzbGNlcnQ9c3NsL2Ns aWVudC5jcnQiLAogCSJpbnRlcm1lZGlhdGUgY2xpZW50IGNlcnRpZmljYXRlIGlzIG1pc3Np bmciLAotCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9TU0wgZXJyb3I6IHRsc3YxIGFsZXJ0IHVu a25vd24gY2EvKTsKKwlleHBlY3RlZF9zdGRlcnIgPT4gcXIvU1NMIGVycm9yOiB0bHN2MSBh bGVydCB1bmtub3duIGNhLywKKwlsb2dfbGlrZSA9PiBbCisJCXFye0NsaWVudCBjZXJ0aWZp Y2F0ZSB2ZXJpZmljYXRpb24gZmFpbGVkIGF0IGRlcHRoIDA6IHVuYWJsZSB0byBnZXQgbG9j YWwgaXNzdWVyIGNlcnRpZmljYXRlfSwKKwkJcXJ7RmFpbGVkIGNlcnRpZmljYXRlIGRhdGEg XCh1bnZlcmlmaWVkXCk6IHN1YmplY3QgIi9DTj1zc2x0ZXN0dXNlciIsIHNlcmlhbCBudW1i ZXIgMjMxNTEzNDk5NTIwMTY1NjU3NiwgaXNzdWVyICIvQ049VGVzdCBDQSBmb3IgUG9zdGdy ZVNRTCBTU0wgcmVncmVzc2lvbiB0ZXN0IGNsaWVudCBjZXJ0cyJ9LAorCV0pOworCiskbm9k ZS0+Y29ubmVjdF9mYWlscygKKwkiJGNvbW1vbl9jb25uc3RyIHNzbG1vZGU9cmVxdWlyZSBz c2xjZXJ0PXNzbC9jbGllbnQtbG9uZy5jcnQgIiAuIHNzbGtleSgnY2xpZW50LWxvbmcua2V5 JyksCisJImxvZ2dlZCBjbGllbnQgY2VydGlmaWNhdGUgU3ViamVjdHMgYXJlIHRydW5jYXRl ZCBpZiB0aGV5J3JlIHRvbyBsb25nIiwKKwlleHBlY3RlZF9zdGRlcnIgPT4gcXIvU1NMIGVy cm9yOiB0bHN2MSBhbGVydCB1bmtub3duIGNhLywKKwlsb2dfbGlrZSA9PiBbCisJCXFye0Ns aWVudCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gZmFpbGVkIGF0IGRlcHRoIDA6IHVuYWJs ZSB0byBnZXQgbG9jYWwgaXNzdWVyIGNlcnRpZmljYXRlfSwKKwkJcXJ7RmFpbGVkIGNlcnRp ZmljYXRlIGRhdGEgXCh1bnZlcmlmaWVkXCk6IHN1YmplY3QgIlwuXC5cLi9DTj1zc2wtMTIz NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3 ODkwIiwgc2VyaWFsIG51bWJlciAyMzE1NDE4NzMzNjI5NDI1MTUyLCBpc3N1ZXIgIi9DTj1U ZXN0IENBIGZvciBQb3N0Z3JlU1FMIFNTTCByZWdyZXNzaW9uIHRlc3QgY2xpZW50IGNlcnRz In0sCisJXSk7CisKKyMgVXNlIGFuIGludmFsaWQgY2FmaWxlIGhlcmUgc28gdGhhdCB0aGUg bmV4dCB0ZXN0IHdvbid0IGJlIGFibGUgdG8gdmVyaWZ5IHRoZQorIyBjbGllbnQgQ0EuCitz d2l0Y2hfc2VydmVyX2NlcnQoJG5vZGUsIGNlcnRmaWxlID0+ICdzZXJ2ZXItY24tb25seScs IGNhZmlsZSA9PiAnc2VydmVyLWNuLW9ubHknKTsKKworIyBpbnRlcm1lZGlhdGUgQ0EgaXMg cHJvdmlkZWQgYnV0IGRvZXNuJ3QgaGF2ZSBhIHRydXN0ZWQgcm9vdCAoY2hlY2tzIGVycm9y CisjIGxvZ2dpbmcgZm9yIGNlcnQgY2hhaW4gZGVwdGhzID4gMCkKKyRub2RlLT5jb25uZWN0 X2ZhaWxzKAorCSIkY29tbW9uX2Nvbm5zdHIgc3NsbW9kZT1yZXF1aXJlIHNzbGNlcnQ9c3Ns L2NsaWVudCtjbGllbnRfY2EuY3J0IiwKKwkiaW50ZXJtZWRpYXRlIGNsaWVudCBjZXJ0aWZp Y2F0ZSBpcyB1bnRydXN0ZWQiLAorCWV4cGVjdGVkX3N0ZGVyciA9PiBxci9TU0wgZXJyb3I6 IHRsc3YxIGFsZXJ0IHVua25vd24gY2EvLAorCWxvZ19saWtlID0+IFsKKwkJcXJ7Q2xpZW50 IGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBmYWlsZWQgYXQgZGVwdGggMTogdW5hYmxlIHRv IGdldCBsb2NhbCBpc3N1ZXIgY2VydGlmaWNhdGV9LAorCQlxcntGYWlsZWQgY2VydGlmaWNh dGUgZGF0YSBcKHVudmVyaWZpZWRcKTogc3ViamVjdCAiL0NOPVRlc3QgQ0EgZm9yIFBvc3Rn cmVTUUwgU1NMIHJlZ3Jlc3Npb24gdGVzdCBjbGllbnQgY2VydHMiLCBzZXJpYWwgbnVtYmVy IDIzMTUxMzQ5OTUyMDE2NTY1NzcsIGlzc3VlciAiL0NOPVRlc3Qgcm9vdCBDQSBmb3IgUG9z dGdyZVNRTCBTU0wgcmVncmVzc2lvbiB0ZXN0IHN1aXRlIn0sCisJXSk7CiAKICMgdGVzdCBz ZXJ2ZXItc2lkZSBDUkwgZGlyZWN0b3J5CiBzd2l0Y2hfc2VydmVyX2NlcnQoCkBAIC03NDMs NiArNzc1LDEwIEBAIHN1YiBzd2l0Y2hfc2VydmVyX2NlcnQKIAkiJGNvbW1vbl9jb25uc3Ry IHVzZXI9c3NsdGVzdHVzZXIgc3NsY2VydD1zc2wvY2xpZW50LXJldm9rZWQuY3J0ICIKIAkg IC4gc3Nsa2V5KCdjbGllbnQtcmV2b2tlZC5rZXknKSwKIAkiY2VydGlmaWNhdGUgYXV0aG9y aXphdGlvbiBmYWlscyB3aXRoIHJldm9rZWQgY2xpZW50IGNlcnQgd2l0aCBzZXJ2ZXItc2lk ZSBDUkwgZGlyZWN0b3J5IiwKLQlleHBlY3RlZF9zdGRlcnIgPT4gcXIvU1NMIGVycm9yOiBz c2x2MyBhbGVydCBjZXJ0aWZpY2F0ZSByZXZva2VkLyk7CisJZXhwZWN0ZWRfc3RkZXJyID0+ IHFyL1NTTCBlcnJvcjogc3NsdjMgYWxlcnQgY2VydGlmaWNhdGUgcmV2b2tlZC8sCisJbG9n X2xpa2UgPT4gWworCQlxcntDbGllbnQgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGZhaWxl ZCBhdCBkZXB0aCAwOiBjZXJ0aWZpY2F0ZSByZXZva2VkfSwKKwkJcXJ7RmFpbGVkIGNlcnRp ZmljYXRlIGRhdGEgXCh1bnZlcmlmaWVkXCk6IHN1YmplY3QgIi9DTj1zc2x0ZXN0dXNlciIs IHNlcmlhbCBudW1iZXIgMjMxNTEzNDk5NTIwMTY1NjU3NywgaXNzdWVyICIvQ049VGVzdCBD QSBmb3IgUG9zdGdyZVNRTCBTU0wgcmVncmVzc2lvbiB0ZXN0IGNsaWVudCBjZXJ0cyJ9LAor CV0pOwogCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3NzbC90L1NT TC9CYWNrZW5kL09wZW5TU0wucG0gYi9zcmMvdGVzdC9zc2wvdC9TU0wvQmFja2VuZC9PcGVu U1NMLnBtCmluZGV4IGFlZDYwMDViNDMuLmE0M2U2NGMwNGYgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3NzbC90L1NTTC9CYWNrZW5kL09wZW5TU0wucG0KKysrIGIvc3JjL3Rlc3Qvc3NsL3Qv U1NML0JhY2tlbmQvT3BlblNTTC5wbQpAQCAtODgsNyArODgsNyBAQCBzdWIgaW5pdAogCQki Y2xpZW50LmtleSIsICAgICAgICAgICAgICAgImNsaWVudC1yZXZva2VkLmtleSIsCiAJCSJj bGllbnQtZGVyLmtleSIsICAgICAgICAgICAiY2xpZW50LWVuY3J5cHRlZC1wZW0ua2V5IiwK IAkJImNsaWVudC1lbmNyeXB0ZWQtZGVyLmtleSIsICJjbGllbnQtZG4ua2V5IiwKLQkJImNs aWVudF9leHQua2V5Iik7CisJCSJjbGllbnRfZXh0LmtleSIsICAgICAgICAgICAiY2xpZW50 LWxvbmcua2V5Iik7CiAJZm9yZWFjaCBteSAka2V5ZmlsZSAoQGtleXMpCiAJewogCQljb3B5 KCJzc2wvJGtleWZpbGUiLCAiJGNlcnRfdGVtcGRpci8ka2V5ZmlsZSIpCi0tIAoyLjM3LjAK Cg== --------------aGZ7dnZnUZCBCclIjIbaz3lj--