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 1pCM4L-00022M-CT for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Jan 2023 14:45:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pCM4I-000182-4O for pgsql-hackers@arkaria.postgresql.org; Mon, 02 Jan 2023 14:45:38 +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 1pCM4H-00017t-QP for pgsql-hackers@lists.postgresql.org; Mon, 02 Jan 2023 14:45:37 +0000 Received: from relay6-d.mail.gandi.net ([217.70.183.198]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pCM4B-0007Xz-Pk for pgsql-hackers@lists.postgresql.org; Mon, 02 Jan 2023 14:45:37 +0000 Received: (Authenticated sender: adsend@dunslane.net) by mail.gandi.net (Postfix) with ESMTPSA id 2B922C0008; Mon, 2 Jan 2023 14:45:28 +0000 (UTC) Content-Type: multipart/mixed; boundary="------------0guazxbVs01aWkF3kZIE2uDJ" Message-ID: <739a2ed6-a626-78e1-0358-fcdc02bfaad9@dunslane.net> Date: Mon, 2 Jan 2023 09:45:27 -0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: Add a test to ldapbindpasswd Content-Language: en-US From: Andrew Dunstan To: Thomas Munro Cc: PostgreSQL Hackers References: <06005bfb-0fd7-9d08-e0e5-440f277b73b4@dunslane.net> 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. --------------0guazxbVs01aWkF3kZIE2uDJ Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 2023-01-01 Su 18:31, Andrew Dunstan wrote: > On 2023-01-01 Su 14:02, Thomas Munro wrote: >> On Mon, Jan 2, 2023 at 3:04 AM Andrew Dunstan wrote: >>> On 2022-12-19 Mo 11:16, Andrew Dunstan wrote: >>>> There is currently no test for the use of ldapbindpasswd in the >>>> pg_hba.conf file. This patch, mostly the work of John Naylor, remedies that. >>>> >>>> >>> This currently has failures on the cfbot for meson builds on FBSD13 and >>> Debian Bullseye, but it's not at all clear why. In both cases it fails >>> where the ldap server is started. >> I think it's failing when using meson. I guess it fails to fail on >> macOS only because you need to add a new path for Homebrew/ARM like >> commit 14d63dd2, so it's skipping (it'd be nice if we didn't need >> another copy of all that logic). Trying locally... it looks like >> slapd is failing silently, and with some tracing I can see it's >> sending an error message to my syslog daemon, which logged: >> >> 2023-01-02T07:50:20.853019+13:00 x1 slapd[153599]: main: TLS init def >> ctx failed: -1 >> >> Ah, it looks like this test is relying on "slapd-certs", which doesn't exist: >> >> tmunro@x1:~/projects/postgresql/build$ ls testrun/ldap/001_auth/data/ >> ldap.conf ldappassword openldap-data portlock slapd-certs slapd.conf >> tmunro@x1:~/projects/postgresql/build$ ls testrun/ldap/002_bindpasswd/data/ >> portlock slapd.conf >> >> I didn't look closely, but apparently there is something wrong in the >> part that copies certs from the ssl test? Not sure why it works for >> autoconf... > > > Let's see how we fare with this patch. > > Not so well :-(. This version tries to make the tests totally independent, as they should be. That's an attempt to get the cfbot to go green, but I am intending to refactor this code substantially so the common bits are in a module each test file will load. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------0guazxbVs01aWkF3kZIE2uDJ Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-a-test-for-ldapbindpasswd-v3.patch" Content-Disposition: attachment; filename="0001-Add-a-test-for-ldapbindpasswd-v3.patch" Content-Transfer-Encoding: base64 RnJvbSBjMmJlZGZkOGE1YjMyNmZmYjU2M2RhNDliN2I0YjQwMDZkZGFjMzYxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogTW9uLCAyIEphbiAyMDIzIDA5OjQxOjA2IC0wNTAwClN1YmplY3Q6IFtQ QVRDSF0gQWRkIGEgdGVzdCBmb3IgbGRhcGJpbmRwYXNzd2QKClRoZSBleGlzdGluZyBMREFQ IHRlc3RzIGRvbid0IGNvdmVyIHRoZSB1c2Ugb2YgbGRhcGJpbmRwYXNzd2QgaW4KcGdfaGJh LmNvbmYsIHNvIHJlbWVkeSB0aGF0LgoKQXV0aG9yczogSm9obiBOYXlsb3IgYW5kIEFuZHJl dyBEdW5zdGFuCi0tLQogc3JjL3Rlc3QvbGRhcC9tZXNvbi5idWlsZCAgICAgICAgIHwgICAx ICsKIHNyYy90ZXN0L2xkYXAvdC8wMDJfYmluZHBhc3N3ZC5wbCB8IDIyMyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjI0IGluc2VydGlvbnMo KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9sZGFwL3QvMDAyX2JpbmRwYXNzd2Qu cGwKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9sZGFwL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3Qv bGRhcC9tZXNvbi5idWlsZAppbmRleCA5MGQ4ODEzOGU3Li43NjI4YTljN2M2IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9sZGFwL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L2xkYXAvbWVz b24uYnVpbGQKQEAgLTcsNiArNyw3IEBAIHRlc3RzICs9IHsKICAgJ3RhcCc6IHsKICAgICAn dGVzdHMnOiBbCiAgICAgICAndC8wMDFfYXV0aC5wbCcsCisJICAndC8wMDJfYmluZHBhc3N3 ZC5wbCcsCiAgICAgXSwKICAgICAnZW52JzogewogICAgICAgJ3dpdGhfbGRhcCc6IGxkYXAu Zm91bmQoKSA/ICd5ZXMnIDogJ25vJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2xkYXAvdC8w MDJfYmluZHBhc3N3ZC5wbCBiL3NyYy90ZXN0L2xkYXAvdC8wMDJfYmluZHBhc3N3ZC5wbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zMzBhMmI3ZGFkCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbGRhcC90LzAwMl9iaW5kcGFzc3dkLnBsCkBAIC0w LDAgKzEsMjIzIEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIyLCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNl IEZpbGU6OkNvcHk7Cit1c2UgRmlsZTo6QmFzZW5hbWU7Cit1c2UgUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBUZXN0OjpN b3JlOworCisKK215ICgkc2xhcGQsICRsZGFwX2Jpbl9kaXIsICRsZGFwX3NjaGVtYV9kaXIp OworCiskbGRhcF9iaW5fZGlyID0gdW5kZWY7ICAgICMgdXN1YWxseSBpbiBQQVRICisKK2lm ICgkRU5We3dpdGhfbGRhcH0gbmUgJ3llcycpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnTERB UCBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQnOworfQorZWxzaWYgKCRFTlZ7UEdfVEVT VF9FWFRSQX0gIX4gL1xibGRhcFxiLykKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdQb3RlbnRp YWxseSB1bnNhZmUgdGVzdCBMREFQIG5vdCBlbmFibGVkIGluIFBHX1RFU1RfRVhUUkEnOwor fQorZWxzaWYgKCReTyBlcSAnZGFyd2luJyAmJiAtZCAnL29wdC9ob21lYnJldy9vcHQvb3Bl bmxkYXAnKQoreworCSMgdHlwaWNhbCBwYXRocyBmb3IgSG9tZWJyZXcgb24gQVJNCisJJHNs YXBkICAgICAgICAgICA9ICcvb3B0L2hvbWVicmV3L29wdC9vcGVubGRhcC9saWJleGVjL3Ns YXBkJzsKKwkkbGRhcF9zY2hlbWFfZGlyID0gJy9vcHQvaG9tZWJyZXcvZXRjL29wZW5sZGFw L3NjaGVtYSc7Cit9CitlbHNpZiAoJF5PIGVxICdkYXJ3aW4nICYmIC1kICcvdXNyL2xvY2Fs L29wdC9vcGVubGRhcCcpCit7CisJIyB0eXBpY2FsIHBhdGhzIGZvciBIb21lYnJldyBvbiBJ bnRlbAorCSRzbGFwZCAgICAgICAgICAgPSAnL3Vzci9sb2NhbC9vcHQvb3BlbmxkYXAvbGli ZXhlYy9zbGFwZCc7CisJJGxkYXBfc2NoZW1hX2RpciA9ICcvdXNyL2xvY2FsL2V0Yy9vcGVu bGRhcC9zY2hlbWEnOworfQorZWxzaWYgKCReTyBlcSAnZGFyd2luJyAmJiAtZCAnL29wdC9s b2NhbC9ldGMvb3BlbmxkYXAnKQoreworCSMgdHlwaWNhbCBwYXRocyBmb3IgTWFjUG9ydHMK Kwkkc2xhcGQgICAgICAgICAgID0gJy9vcHQvbG9jYWwvbGliZXhlYy9zbGFwZCc7CisJJGxk YXBfc2NoZW1hX2RpciA9ICcvb3B0L2xvY2FsL2V0Yy9vcGVubGRhcC9zY2hlbWEnOworfQor ZWxzaWYgKCReTyBlcSAnbGludXgnKQoreworCSRzbGFwZCAgICAgICAgICAgPSAnL3Vzci9z YmluL3NsYXBkJzsKKwkkbGRhcF9zY2hlbWFfZGlyID0gJy9ldGMvbGRhcC9zY2hlbWEnIGlm IC1kICcvZXRjL2xkYXAvc2NoZW1hJzsKKwkkbGRhcF9zY2hlbWFfZGlyID0gJy9ldGMvb3Bl bmxkYXAvc2NoZW1hJyBpZiAtZCAnL2V0Yy9vcGVubGRhcC9zY2hlbWEnOworfQorZWxzaWYg KCReTyBlcSAnZnJlZWJzZCcpCit7CisJJHNsYXBkICAgICAgICAgICA9ICcvdXNyL2xvY2Fs L2xpYmV4ZWMvc2xhcGQnOworCSRsZGFwX3NjaGVtYV9kaXIgPSAnL3Vzci9sb2NhbC9ldGMv b3BlbmxkYXAvc2NoZW1hJzsKK30KK2Vsc2lmICgkXk8gZXEgJ29wZW5ic2QnKQoreworCSRz bGFwZCAgICAgICAgICAgPSAnL3Vzci9sb2NhbC9saWJleGVjL3NsYXBkJzsKKwkkbGRhcF9z Y2hlbWFfZGlyID0gJy91c3IvbG9jYWwvc2hhcmUvZXhhbXBsZXMvb3BlbmxkYXAvc2NoZW1h JzsKK30KK2Vsc2UKK3sKKwlwbGFuIHNraXBfYWxsID0+CisJICAibGRhcCB0ZXN0cyBub3Qg c3VwcG9ydGVkIG9uICReTyBvciBkZXBlbmRlbmNpZXMgbm90IGluc3RhbGxlZCI7Cit9CisK KyMgbWFrZSB5b3VyIG93biBlZGl0cyBoZXJlCisjJHNsYXBkID0gJyc7CisjJGxkYXBfYmlu X2RpciA9ICcnOworIyRsZGFwX3NjaGVtYV9kaXIgPSAnJzsKKworJEVOVntQQVRIfSA9ICIk bGRhcF9iaW5fZGlyOiRFTlZ7UEFUSH0iIGlmICRsZGFwX2Jpbl9kaXI7CisKK215ICR0c3Rf bmFtZSA9IGJhc2VuYW1lKF9fRklMRV9fLCcucGwnKTsKK215ICR0ZXN0X3RlbXAgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcigibGRhcC0kdHN0X25hbWUiKTsKKworbXkg JGxkYXBfZGF0YWRpciAgPSAiJHRlc3RfdGVtcC9vcGVubGRhcC1kYXRhIjsKK215ICRzbGFw ZF9jZXJ0cyAgID0gIiR0ZXN0X3RlbXAvc2xhcGQtY2VydHMiOworbXkgJHNsYXBkX2NvbmYg ICAgPSAiJHRlc3RfdGVtcC9zbGFwZC5jb25mIjsKK215ICRzbGFwZF9waWRmaWxlID0gIiR0 ZXN0X3RlbXAvc2xhcGQucGlkIjsKK215ICRzbGFwZF9sb2dmaWxlID0gIiR7UG9zdGdyZVNR TDo6VGVzdDo6VXRpbHM6OmxvZ19wYXRofS9zbGFwZC0yLmxvZyI7CitteSAkbGRhcF9jb25m ICAgICA9ICIkdGVzdF90ZW1wL2xkYXAuY29uZiI7CitteSAkbGRhcF9zZXJ2ZXIgICA9ICds b2NhbGhvc3QnOworbXkgJGxkYXBfcG9ydCAgICAgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOjpnZXRfZnJlZV9wb3J0KCk7CitteSAkbGRhcHNfcG9ydCAgICA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI6OmdldF9mcmVlX3BvcnQoKTsKK215ICRsZGFwX3VybCAgICAgID0g ImxkYXA6Ly8kbGRhcF9zZXJ2ZXI6JGxkYXBfcG9ydCI7CitteSAkbGRhcHNfdXJsICAgICA9 ICJsZGFwczovLyRsZGFwX3NlcnZlcjokbGRhcHNfcG9ydCI7CitteSAkbGRhcF9iYXNlZG4g ICA9ICdkYz1leGFtcGxlLGRjPW5ldCc7CitteSAkbGRhcF9yb290ZG4gICA9ICdjbj1NYW5h Z2VyLGRjPWV4YW1wbGUsZGM9bmV0JzsKK215ICRsZGFwX3Jvb3RwdyAgID0gJ3NlY3JldCc7 CitteSAkbGRhcF9wd2ZpbGUgICA9ICIkdGVzdF90ZW1wL2xkYXBwYXNzd29yZCI7CisKK25v dGUgInNldHRpbmcgdXAgc2xhcGQiOworCisjIG5lZWQgdG8gY3JlYXRlIG5ldyBjb25maWcg d2l0aG91dCBhbm9ueW1vdXMgYXV0aAordW5saW5rICRzbGFwZF9jb25mOworCithcHBlbmRf dG9fZmlsZSgKKwkkc2xhcGRfY29uZiwKKwlxcXtpbmNsdWRlICRsZGFwX3NjaGVtYV9kaXIv Y29yZS5zY2hlbWEKK2luY2x1ZGUgJGxkYXBfc2NoZW1hX2Rpci9jb3NpbmUuc2NoZW1hCitp bmNsdWRlICRsZGFwX3NjaGVtYV9kaXIvbmlzLnNjaGVtYQoraW5jbHVkZSAkbGRhcF9zY2hl bWFfZGlyL2luZXRvcmdwZXJzb24uc2NoZW1hCisKK3BpZGZpbGUgJHNsYXBkX3BpZGZpbGUK K2xvZ2ZpbGUgJHNsYXBkX2xvZ2ZpbGUKKworYWNjZXNzIHRvICoKKyAgICAgICAgYnkgKiBy ZWFkCisgICAgICAgIGJ5IHVzZXJzIGF1dGgKKworZGF0YWJhc2UgbGRpZgorZGlyZWN0b3J5 ICRsZGFwX2RhdGFkaXIKKworVExTQ0FDZXJ0aWZpY2F0ZUZpbGUgJHNsYXBkX2NlcnRzL2Nh LmNydAorVExTQ2VydGlmaWNhdGVGaWxlICRzbGFwZF9jZXJ0cy9zZXJ2ZXIuY3J0CitUTFND ZXJ0aWZpY2F0ZUtleUZpbGUgJHNsYXBkX2NlcnRzL3NlcnZlci5rZXkKKworc3VmZml4ICJk Yz1leGFtcGxlLGRjPW5ldCIKK3Jvb3RkbiAiJGxkYXBfcm9vdGRuIgorcm9vdHB3ICRsZGFw X3Jvb3Rwd30pOworCitta2RpciAkbGRhcF9kYXRhZGlyIG9yIGRpZSAibWFraW5nICRsZGFw X2RhdGFkaXI6ICQhIjsKK21rZGlyICRzbGFwZF9jZXJ0cyAgb3IgZGllICJtYWtpbmcgJHNs YXBkX2NlcnRzOiAkISI7CisKK2NvcHkgIi4uL3NzbC9zc2wvc2VydmVyX2NhLmNydCIsICIk c2xhcGRfY2VydHMvY2EuY3J0IgorICB8fCBkaWUgImNvcHlpbmcgY2EuY3J0OiAkISI7Citj b3B5ICIuLi9zc2wvc3NsL3NlcnZlci1jbi1vbmx5LmNydCIsICIkc2xhcGRfY2VydHMvc2Vy dmVyLmNydCIKKyAgfHwgZGllICJjb3B5aW5nIHNlcnZlci5jcnQ6ICQhIjs7Citjb3B5ICIu Li9zc2wvc3NsL3NlcnZlci1jbi1vbmx5LmtleSIsICIkc2xhcGRfY2VydHMvc2VydmVyLmtl eSIKKyAgfHwgZGllICJjb3B5aW5nIHNlcnZlci5rZXk6ICQhIjs7CisKK3N5c3RlbV9vcl9i YWlsICRzbGFwZCwgJy1mJywgJHNsYXBkX2NvbmYsICctaCcsICIkbGRhcF91cmwgJGxkYXBz X3VybCI7CisKK0VORAoreworCWtpbGwgJ0lOVCcsIGBjYXQgJHNsYXBkX3BpZGZpbGVgIGlm IC1mICRzbGFwZF9waWRmaWxlOworfQorCithcHBlbmRfdG9fZmlsZSgkbGRhcF9wd2ZpbGUs ICRsZGFwX3Jvb3Rwdyk7CitjaG1vZCAwNjAwLCAkbGRhcF9wd2ZpbGUgb3IgZGllOworCisj IHdhaXQgdW50aWwgc2xhcGQgYWNjZXB0cyByZXF1ZXN0cworbXkgJHJldHJpZXMgPSAwOwor d2hpbGUgKDEpCit7CisJbGFzdAorCSAgaWYgKAorCQlzeXN0ZW1fbG9nKAorCQkJImxkYXBz ZWFyY2giLCAiLXNiYXNlIiwKKwkJCSItSCIsICAgICAgICAgJGxkYXBfdXJsLAorCQkJIi1i IiwgICAgICAgICAkbGRhcF9iYXNlZG4sCisJCQkiLUQiLCAgICAgICAgICRsZGFwX3Jvb3Rk biwKKwkJCSIteSIsICAgICAgICAgJGxkYXBfcHdmaWxlLAorCQkJIi1uIiwgICAgICAgICAi J29iamVjdGNsYXNzPSonIikgPT0gMCk7CisJZGllICJjYW5ub3QgY29ubmVjdCB0byBzbGFw ZCIgaWYgKyskcmV0cmllcyA+PSAzMDA7CisJbm90ZSAid2FpdGluZyBmb3Igc2xhcGQgdG8g YWNjZXB0IHJlcXVlc3RzLi4uIjsKKwlUaW1lOjpIaVJlczo6dXNsZWVwKDEwMDAwMDApOwor fQorCiskRU5WeydMREFQVVJJJ30gICAgPSAkbGRhcF91cmw7CiskRU5WeydMREFQQklORERO J30gPSAkbGRhcF9yb290ZG47CiskRU5WeydMREFQQ09ORid9ICAgPSAkbGRhcF9jb25mOwor CisjIHVzZSBzYW1lIGRhdGEgYXMgMDAxIHRlc3QKKworbm90ZSAibG9hZGluZyBMREFQIGRh dGEiOworCitzeXN0ZW1fb3JfYmFpbCAnbGRhcGFkZCcsICAgICcteCcsICcteScsICRsZGFw X3B3ZmlsZSwgJy1mJywgJ2F1dGhkYXRhLmxkaWYnOworc3lzdGVtX29yX2JhaWwgJ2xkYXBw YXNzd2QnLCAnLXgnLCAnLXknLCAkbGRhcF9wd2ZpbGUsICctcycsICdzZWNyZXQxJywKKyAg J3VpZD10ZXN0MSxkYz1leGFtcGxlLGRjPW5ldCc7CitzeXN0ZW1fb3JfYmFpbCAnbGRhcHBh c3N3ZCcsICcteCcsICcteScsICRsZGFwX3B3ZmlsZSwgJy1zJywgJ3NlY3JldDInLAorICAn dWlkPXRlc3QyLGRjPWV4YW1wbGUsZGM9bmV0JzsKKworbm90ZSAic2V0dGluZyB1cCBQb3N0 Z3JlU1FMIGluc3RhbmNlIjsKKworbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ25vZGUnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLCAibG9nX2Nvbm5lY3Rpb25zID0gb25cbiIpOworJG5vZGUtPnN0 YXJ0OworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgVVNFUiB0ZXN0 MDsnKTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBVU0VSIHRlc3Qx OycpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIFVTRVIgInRlc3Qy QGV4YW1wbGUubmV0IjsnKTsKKworbm90ZSAicnVubmluZyB0ZXN0cyI7CisKK3N1YiB0ZXN0 X2FjY2VzcworeworCWxvY2FsICRUZXN0OjpCdWlsZGVyOjpMZXZlbCA9ICRUZXN0OjpCdWls ZGVyOjpMZXZlbCArIDE7CisKKwlteSAoJG5vZGUsICRyb2xlLCAkZXhwZWN0ZWRfcmVzLCAk dGVzdF9uYW1lLCAlcGFyYW1zKSA9IEBfOworCW15ICRjb25uc3RyID0gInVzZXI9JHJvbGUi OworCisJaWYgKCRleHBlY3RlZF9yZXMgZXEgMCkKKwl7CisJCSRub2RlLT5jb25uZWN0X29r KCRjb25uc3RyLCAkdGVzdF9uYW1lLCAlcGFyYW1zKTsKKwl9CisJZWxzZQorCXsKKwkJIyBO byBjaGVja3Mgb2YgdGhlIGVycm9yIG1lc3NhZ2UsIG9ubHkgdGhlIHN0YXR1cyBjb2RlLgor CQkkbm9kZS0+Y29ubmVjdF9mYWlscygkY29ubnN0ciwgJHRlc3RfbmFtZSwgJXBhcmFtcyk7 CisJfQorfQorCitub3RlICJ1c2UgbGRhcGJpbmRwYXNzd2QiOworCit1bmxpbmsoJG5vZGUt PmRhdGFfZGlyIC4gJy9wZ19oYmEuY29uZicpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwZ19o YmEuY29uZicsCisJcXF7bG9jYWwgYWxsIGFsbCBsZGFwIGxkYXBzZXJ2ZXI9JGxkYXBfc2Vy dmVyIGxkYXBwb3J0PSRsZGFwX3BvcnQgbGRhcGJhc2Vkbj0iJGxkYXBfYmFzZWRuIiBsZGFw YmluZGRuPSIkbGRhcF9yb290ZG4iIGxkYXBiaW5kcGFzc3dkPXdyb25nfQorKTsKKyRub2Rl LT5yZXN0YXJ0OworCiskRU5WeyJQR1BBU1NXT1JEIn0gPSAnc2VjcmV0MSc7Cit0ZXN0X2Fj Y2Vzcygkbm9kZSwgJ3Rlc3QxJywgMiwgJ3NlYXJjaCtiaW5kIGF1dGhlbnRpY2F0aW9uIGZh aWxzIHdpdGggd3JvbmcgbGRhcGJpbmRwYXNzd2QnKTsKKwordW5saW5rKCRub2RlLT5kYXRh X2RpciAuICcvcGdfaGJhLmNvbmYnKTsKKyRub2RlLT5hcHBlbmRfY29uZigncGdfaGJhLmNv bmYnLAorCXFxe2xvY2FsIGFsbCBhbGwgbGRhcCBsZGFwc2VydmVyPSRsZGFwX3NlcnZlciBs ZGFwcG9ydD0kbGRhcF9wb3J0IGxkYXBiYXNlZG49IiRsZGFwX2Jhc2VkbiIgbGRhcGJpbmRk bj0iJGxkYXBfcm9vdGRuIiBsZGFwYmluZHBhc3N3ZD0iJGxkYXBfcm9vdHB3In0KKyk7Cisk bm9kZS0+cmVzdGFydDsKKwordGVzdF9hY2Nlc3MoJG5vZGUsICd0ZXN0MScsIDAsICdzZWFy Y2grYmluZCBhdXRoZW50aWNhdGlvbiBzdWNjZWVkcyB3aXRoIGxkYXBiaW5kcGFzc3dkJyk7 CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4zNC4xCgo= --------------0guazxbVs01aWkF3kZIE2uDJ--