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 1qijDv-007f18-VJ for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Sep 2023 22:29:40 +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 1qijDs-00CQXf-Oj for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Sep 2023 22:29:36 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qijDs-00CQXL-Bk for pgsql-hackers@lists.postgresql.org; Tue, 19 Sep 2023 22:29:36 +0000 Received: from udcm-wwu1.uni-muenster.de ([128.176.118.7]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qijDm-006C86-Rp for pgsql-hackers@lists.postgresql.org; Tue, 19 Sep 2023 22:29:35 +0000 X-IronPort-AV: E=Sophos;i="6.02,160,1688421600"; d="scan'208,223";a="291237032" Received: from secmail.uni-muenster.de ([128.176.118.4]) by UDCM-RELAY1.UNI-MUENSTER.DE with ESMTP; 20 Sep 2023 00:29:29 +0200 Received: from [192.168.178.27] (dynamic-078-049-008-129.78.49.pool.telefonica.de [78.49.8.129]) by SECMAIL.UNI-MUENSTER.DE (Postfix) with ESMTPSA id 5CA4120EBC4C; Wed, 20 Sep 2023 00:29:28 +0200 (CEST) Content-Type: multipart/mixed; boundary="------------hRFew0j7YmxOe2w3JOIHaNJZ" Message-ID: <51f69957-8420-8858-70fc-566ad20ee080@uni-muenster.de> Date: Wed, 20 Sep 2023 00:29:27 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.0 Subject: Re: [PATCH] Add inline comments to the pg_hba_file_rules view To: Michael Paquier Cc: PostgreSQL Hackers , David Zhang References: <4d623899-36ac-71b5-311d-2a4672d75736@uni-muenster.de> <381eb298-92b3-9599-abe6-f04c9a151248@uni-muenster.de> Content-Language: en-US From: Jim Jones 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. --------------hRFew0j7YmxOe2w3JOIHaNJZ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Michael On 16.09.23 06:18, Michael Paquier wrote: > That was the idea. I forgot about strpos(), but if you do that, do we > actually need a function in core to achieve that? I guess it depends who you ask :) I personally think it would be a good addition to the view, as it would provide a more comprehensive look into the hba file. Yes, the fact that it could possibly be written in SQL sounds silly, but it's IMHO still relevant to have it by default. > There are a few fancy cases with the SQL function you have sent, > actually.. strpos() would grep the first '#' character, ignoring > quoted areas. Yes, you're totally right. I didn't take into account any token surrounded by double quotes containing #. v3 attached addresses this issue. From the following hba:  host db jim 192.168.10.1/32 md5 # foo  host db jim 192.168.10.2/32 md5 #bar  host db jim 192.168.10.3/32 md5 #     #foo#  host "a#db" "a#user" 192.168.10.4/32 md5 # fancy #hba entry We can get these records from the view:  SELECT type, database, user_name, address, comment  FROM pg_hba_file_rules  WHERE address ~~ '192.168.10.%';  type | database | user_name | address    |     comment ------+----------+-----------+--------------+------------------  host | {db}     | {jim}     | 192.168.10.1 | foo  host | {db}     | {jim}     | 192.168.10.2 | bar  host | {db}     | {jim}     | 192.168.10.3 | #foo#  host | {a#db}   | {a#user}  | 192.168.10.4 | fancy #hba entry I am still struggling to find a way to enable this function in separated path without having to read the conf file multiple times, or writing too much redundant code. How many other conf files do you think would profit from this feature? Jim --------------hRFew0j7YmxOe2w3JOIHaNJZ Content-Type: text/x-patch; charset=UTF-8; name="v3-0001-Add-inline-comments-to-the-pg_hba_file_rules-view.patch" Content-Disposition: attachment; filename*0="v3-0001-Add-inline-comments-to-the-pg_hba_file_rules-view.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0N2Y1NWJhYjBhOGU4YWYyODZlNmJlMmY0MGQyMThmMjVhNTA2NmM5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gSm9uZXMgPGppbS5qb25lc0B1bmktbXVlbnN0 ZXIuZGU+CkRhdGU6IFdlZCwgMjAgU2VwIDIwMjMgMDA6MDQ6MDUgKzAyMDAKU3ViamVjdDog W1BBVENIIHYzXSBBZGQgaW5saW5lIGNvbW1lbnRzIHRvIHRoZSBwZ19oYmFfZmlsZV9ydWxl cyB2aWV3CgpUaGlzIHBhdGNoIHByb3Bvc2VzIHRoZSBjb2x1bW4gImNvbW1lbnQiIHRvIHRo ZSBwZ19oYmFfZmlsZV9ydWxlcyB2aWV3LgpJdCBiYXNpY2FsbHkgcGFyc2VzIHRoZSBpbmxp bmUgY29tbWVudCAoaWYgYW55KSBvZiBhIHZhbGlkIHBnX2hiYS5jb25mCmVudHJ5IGFuZCBk aXNwbGF5cyBpdCBpbiB0aGUgbmV3IGNvbHVtbi4gVGhlIHBhdGNoIHNsaWdodGx5IGNoYW5n ZXMgdGhlCnRlc3QgMDA0X2ZpbGVfaW5jbHVzaW9uLnBsIHRvIGFjY29tb2RhdGUgdGhlIG5l dyBjb2x1bW4gYW5kIHRoZSBoYmEgY29tbWVudHMuClRoZSB2aWV3J3MgZG9jdW1lbnRhdGlv biBhdCBzeXN0ZW0tdmlld3Muc2dtbCBpcyBleHRlbmRlZCBhY2NvcmRpbmdseS4KClRoZSBm dW5jdGlvbiBHZXRJbmxpbmVDb21tZW50KCkgd2FzIGFkZGVkIHRvIGNvbmZmaWxlcy5jIHRv IGF2b2lkIGFkZGluZyBtb3JlCmNvbXBsZXhpdHkgZGlyZWN0bHkgdG8gaGJhLmMuIEl0IGFs c28gZW5hYmxlcyB0aGlzIGZlYXR1cmUgdG8gYmUgdXNlZCBieSBvdGhlcgpjb25maWd1cmF0 aW9uIGZpbGVzLCBpZiBuZWNlc3NhcnkuCi0tLQogZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3 cy5zZ21sICAgICAgICAgICAgICAgIHwgIDkgKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQv aGJhZnVuY3MuYyAgICAgICAgICAgICAgfCAxMSArKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21p c2MvY29uZmZpbGVzLmMgICAgICAgICAgICB8IDQxICsrKysrKysrKysKIHNyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICA2ICstCiBzcmMvaW5jbHVk ZS9saWJwcS9oYmEuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVk ZS91dGlscy9jb25mZmlsZXMuaCAgICAgICAgICAgICAgICAgfCAgMSArCiAuLi4vYXV0aGVu dGljYXRpb24vdC8wMDRfZmlsZV9pbmNsdXNpb24ucGwgICAgfCA3NCArKysrKysrKysrKysr KysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAgICAg fCAgMyArLQogOCBmaWxlcyBjaGFuZ2VkLCAxMzUgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sIGIv ZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCmluZGV4IDJiMzVjMmY5MWIuLjY4Zjk4 NTdkZTAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKQEAgLTEwOTAsNiArMTA5MCwxNSBA QAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbW1lbnQ8L3N0cnVjdGZp ZWxkPiA8dHlwZT50ZXh0PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgVGV4dCBhZnRlciB0aGUgZmlyc3QgPGxpdGVyYWw+IzwvbGl0ZXJhbD4gY29tbWVu dCBjaGFyYWN0ZXIgaW4gdGhlIGVuZCBvZiBhIHZhbGlkIDxsaXRlcmFsPnBnX2hiYS5jb25m PC9saXRlcmFsPiBlbnRyeSwgaWYgYW55CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVj dGZpZWxkPmVycm9yPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9oYmFmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2hiYWZ1bmNzLmMKaW5kZXggNzNkM2FkMWRhZC4uOTI5Njc4ZTk3ZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2hiYWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2hiYWZ1bmNzLmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJ1 dGlscy9hcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAi dXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAidXRpbHMvY29uZmZpbGVzLmgiCiAKIAogc3RhdGlj IEFycmF5VHlwZSAqZ2V0X2hiYV9vcHRpb25zKEhiYUxpbmUgKmhiYSk7CkBAIC0xNTksNyAr MTYwLDcgQEAgZ2V0X2hiYV9vcHRpb25zKEhiYUxpbmUgKmhiYSkKIH0KIAogLyogTnVtYmVy IG9mIGNvbHVtbnMgaW4gcGdfaGJhX2ZpbGVfcnVsZXMgdmlldyAqLwotI2RlZmluZSBOVU1f UEdfSEJBX0ZJTEVfUlVMRVNfQVRUUwkgMTEKKyNkZWZpbmUgTlVNX1BHX0hCQV9GSUxFX1JV TEVTX0FUVFMJIDEyCiAKIC8qCiAgKiBmaWxsX2hiYV9saW5lCkBAIC0xOTEsNiArMTkyLDcg QEAgZmlsbF9oYmFfbGluZShUdXBsZXN0b3Jlc3RhdGUgKnR1cGxlX3N0b3JlLCBUdXBsZURl c2MgdHVwZGVzYywKIAljb25zdCBjaGFyICphZGRyc3RyOwogCWNvbnN0IGNoYXIgKm1hc2tz dHI7CiAJQXJyYXlUeXBlICAqb3B0aW9uczsKKwljaGFyICAgICAgICpjb21tZW50OwogCiAJ QXNzZXJ0KHR1cGRlc2MtPm5hdHRzID09IE5VTV9QR19IQkFfRklMRV9SVUxFU19BVFRTKTsK IApAQCAtMzQ2LDYgKzM0OCwxMyBAQCBmaWxsX2hiYV9saW5lKFR1cGxlc3RvcmVzdGF0ZSAq dHVwbGVfc3RvcmUsIFR1cGxlRGVzYyB0dXBkZXNjLAogCQkJdmFsdWVzW2luZGV4KytdID0g UG9pbnRlckdldERhdHVtKG9wdGlvbnMpOwogCQllbHNlCiAJCQludWxsc1tpbmRleCsrXSA9 IHRydWU7CisKKwkJLyogY29tbWVudHMgKi8KKwkJY29tbWVudCA9IEdldElubGluZUNvbW1l bnQoaGJhLT5yYXdsaW5lKTsKKwkJaWYoY29tbWVudCkKKwkJCXZhbHVlc1tpbmRleCsrXSA9 IENTdHJpbmdHZXRUZXh0RGF0dW0oY29tbWVudCk7CisJCWVsc2UKKwkJCW51bGxzW2luZGV4 KytdID0gdHJ1ZTsKIAl9CiAJZWxzZQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvY29uZmZpbGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2NvbmZmaWxl cy5jCmluZGV4IDM3NmE1Yzg4NWIuLmZlZGE0OWJmMzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvY29uZmZpbGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9jb25mZmlsZXMuYwpAQCAtMjUsNiArMjUsNDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2Zk LmgiCiAjaW5jbHVkZSAidXRpbHMvY29uZmZpbGVzLmgiCiAKKy8qCisgKiBHZXRJbmxpbmVD b21tZW50CisgKgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGNvbW1lbnRzIG9mIGEgZ2l2 ZW4gY29uZmlnIGZpbGUgbGluZSwKKyAqIGlmIHRoZXJlIGlzIGFueS4gQSBjb21tZW50IGlz IGFueSB0ZXh0IGFmdGVyIHRoZSAjIGNoYXJhY3RlciwKKyAqIGFzIGxvbmcgYXMgaXQgaXMg bm90IGxvY2F0ZWQgYWZ0ZXIgYSBvcGVpbmluZyAnIicuCisgKi8KK2NoYXIgKgorR2V0SW5s aW5lQ29tbWVudChjaGFyICpsaW5lKQoreworCisJc2l6ZV90IG5xID0gMDsKKwljaGFyICpj b21tZW50OworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBzdHJsZW4obGluZSk7IGkrKykgewor CisJCWlmIChsaW5lW2ldID09ICciJykKKwkJCW5xKys7CisJCWVsc2UgaWYgKGxpbmVbaV0g PT0gJyMnICYmIG5xICUgMiA9PSAwKQorCQl7CisJCQlzaXplX3QgbGVuID0gc3RybGVuKGxp bmUpOworCQkJY29tbWVudCA9IChjaGFyICopIHBhbGxvYyhsZW4gKiBzaXplb2YoY2hhciAq KSk7CisJCQltZW1jcHkoY29tbWVudCwmbGluZVtpKzFdLGxlbi1pKTsKKworCQkJLyogdHJp bSBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlcyAqLworCQkJd2hpbGUgKCpjb21t ZW50ICYmIGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpICpjb21tZW50KSkKKwkJCQljb21tZW50 Kys7CisJCQlsZW4gPSBzdHJsZW4oY29tbWVudCk7CisJCQl3aGlsZSAobGVuID4gMCAmJiBp c3NwYWNlKCh1bnNpZ25lZCBjaGFyKSBjb21tZW50W2xlbiAtIDFdKSkKKwkJCQlsZW4tLTsK KwkJCWNvbW1lbnRbbGVuXSA9ICdcMCc7CisKKwkJCXJldHVybiBjb21tZW50OworCQl9CisK Kwl9CisKKwlyZXR1cm4gTlVMTDsKKworIH0KKwogLyoKICAqIEFic29sdXRlQ29uZmlnTG9j YXRpb24KICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA5ODA1YmM2MTE4Li4z NjBmNzFlOGVmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTYyNDQsOSArNjI0 NCw5IEBACiB7IG9pZCA9PiAnMzQwMScsIGRlc2NyID0+ICdzaG93IHBnX2hiYS5jb25mIHJ1 bGVzJywKICAgcHJvbmFtZSA9PiAncGdfaGJhX2ZpbGVfcnVsZXMnLCBwcm9yb3dzID0+ICcx MDAwJywgcHJvcmV0c2V0ID0+ICd0JywKICAgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0 eXBlID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAnJywKLSAgcHJvYWxsYXJndHlwZXMg PT4gJ3tpbnQ0LHRleHQsaW50NCx0ZXh0LF90ZXh0LF90ZXh0LHRleHQsdGV4dCx0ZXh0LF90 ZXh0LHRleHR9JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tvLG8sbyxvLG8sbyxvLG8sbyxvLG99 JywKLSAgcHJvYXJnbmFtZXMgPT4gJ3tydWxlX251bWJlcixmaWxlX25hbWUsbGluZV9udW1i ZXIsdHlwZSxkYXRhYmFzZSx1c2VyX25hbWUsYWRkcmVzcyxuZXRtYXNrLGF1dGhfbWV0aG9k LG9wdGlvbnMsZXJyb3J9JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tpbnQ0LHRleHQsaW50 NCx0ZXh0LF90ZXh0LF90ZXh0LHRleHQsdGV4dCx0ZXh0LF90ZXh0LHRleHQsdGV4dH0nLAor ICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxvLG8sbyxvLG8sbyxvfScsCisgIHByb2Fy Z25hbWVzID0+ICd7cnVsZV9udW1iZXIsZmlsZV9uYW1lLGxpbmVfbnVtYmVyLHR5cGUsZGF0 YWJhc2UsdXNlcl9uYW1lLGFkZHJlc3MsbmV0bWFzayxhdXRoX21ldGhvZCxvcHRpb25zLGNv bW1lbnQsZXJyb3J9JywKICAgcHJvc3JjID0+ICdwZ19oYmFfZmlsZV9ydWxlcycgfSwKIHsg b2lkID0+ICc2MjUwJywgZGVzY3IgPT4gJ3Nob3cgcGdfaWRlbnQuY29uZiBtYXBwaW5ncycs CiAgIHByb25hbWUgPT4gJ3BnX2lkZW50X2ZpbGVfbWFwcGluZ3MnLCBwcm9yb3dzID0+ICcx MDAwJywgcHJvcmV0c2V0ID0+ICd0JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBx L2hiYS5oIGIvc3JjL2luY2x1ZGUvbGlicHEvaGJhLmgKaW5kZXggMTg5ZjZkMGRmMi4uNWNi NzIyNDcxMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbGlicHEvaGJhLmgKKysrIGIvc3Jj L2luY2x1ZGUvbGlicHEvaGJhLmgKQEAgLTEzNSw2ICsxMzUsNyBAQCB0eXBlZGVmIHN0cnVj dCBIYmFMaW5lCiAJY2hhcgkgICAqcmFkaXVzaWRlbnRpZmllcnNfczsKIAlMaXN0CSAgICpy YWRpdXNwb3J0czsKIAljaGFyCSAgICpyYWRpdXNwb3J0c19zOworCWNoYXIJICAgKmNvbW1l bnRzOwogfSBIYmFMaW5lOwogCiB0eXBlZGVmIHN0cnVjdCBJZGVudExpbmUKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL2NvbmZmaWxlcy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv Y29uZmZpbGVzLmgKaW5kZXggZTM4NjhmYmMyMy4uYjYwYWRhZTVmYSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvdXRpbHMvY29uZmZpbGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv Y29uZmZpbGVzLmgKQEAgLTIzLDUgKzIzLDYgQEAgZXh0ZXJuIGNoYXIgKipHZXRDb25mRmls ZXNJbkRpcihjb25zdCBjaGFyICppbmNsdWRlZGlyLAogCQkJCQkJCQljb25zdCBjaGFyICpj YWxsaW5nX2ZpbGUsCiAJCQkJCQkJCWludCBlbGV2ZWwsIGludCAqbnVtX2ZpbGVuYW1lcywK IAkJCQkJCQkJY2hhciAqKmVycl9tc2cpOworZXh0ZXJuIGNoYXIgKkdldElubGluZUNvbW1l bnQoY2hhciAqbGluZSk7CiAKICNlbmRpZgkJCQkJCQkvKiBDT05GRklMRVNfSCAqLwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvYXV0aGVudGljYXRpb24vdC8wMDRfZmlsZV9pbmNsdXNpb24u cGwgYi9zcmMvdGVzdC9hdXRoZW50aWNhdGlvbi90LzAwNF9maWxlX2luY2x1c2lvbi5wbApp bmRleCA1NWQyOGFkNTg2Li4xOTljODI0ZTMzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9hdXRo ZW50aWNhdGlvbi90LzAwNF9maWxlX2luY2x1c2lvbi5wbAorKysgYi9zcmMvdGVzdC9hdXRo ZW50aWNhdGlvbi90LzAwNF9maWxlX2luY2x1c2lvbi5wbApAQCAtNjMsOCArNjMsNTYgQEAg c3ViIGFkZF9oYmFfbGluZQogCSMgSW5jcmVtZW50IHBnX2hiYV9maWxlX3J1bGVzLnJ1bGVf bnVtYmVyIGFuZCBzYXZlIGl0LgogCSRnbG9ibGluZSA9ICsrJGxpbmVfY291bnRlcnN7J2hi YV9ydWxlJ307CiAKKwkjIEl0IGlzIHBvc3NpYmxlIHRvIGhhdmUgdGhlIGNoYXJhY3RlciAn IycgaW4gc2V2ZXJhbCBlbGVtZW50cyBvZgorCSMgYSBoYmEgZW50cnkgaWYgdGhleSdyZSB3 cmFwcGVkIHdpdGggZG91YmxlIHF1b3Rlcy4gU28gd2UgZmlyc3QgY2hlY2sKKwkjIGlmIGEg JyMnIGNvbWVzIGFmdGVyIGFuIG9wZW5pbmcgJyInLCBhbmQgaWYgc28gd2UgaWdub3JlIGl0 LiBJZiBhICcjJworCSMgaXMgbG9jYXRlZCBhZnRlciBhIGNsb3NpbmcgJyInIG9yIGlmIHRo ZXJlIGlzIG5vIHByZXZpb3VzICciJyBpbiB0aGUKKwkjIHN0cmluZywgd2UgY29uc2lkZXIg aXQgYXMgdGhlIGJlZ2lubmluZyBvZiBhbiBpbmxpbmUgY29tbWVudC4KKworCW15ICRjb21t ZW50X3Bvc2l0aW9uID0gLTE7CisJbXkgJG5xID0gMDsKKworCWZvciBteSAkaSAoMC4ubGVu Z3RoKCRlbnRyeSktMSl7CisKKwkJbXkgJGNoYXIgPSBzdWJzdHIoJGVudHJ5LCAkaSwgMSk7 CisKKwkJaWYoJGNoYXIgZXEgJyInKQorCQl7CisJCQkkbnEgPSAkbnEgKyAxOworCQl9IGVs c2lmICgkY2hhciBlcSAnIycgJiYgJG5xICUgMiA9PSAwKQorCQl7CisJCQkkY29tbWVudF9w b3NpdGlvbiA9ICRpOworCQkJbGFzdDsKKwkJfQorCisJfQorCisJIyBJbiBjYXNlIHRoZSBw Z19oYmEgZW50cnkgaGFzIGEgY29tbWVudCwgd2Ugc3RvcmUgaXQgaW4gJGNvbW1lbnQKKwkj IGFuZCByZW1vdmUgaXQgZnJvbSAkZW50cnkuIFRoZSBjb250ZW50IG9mICRjb21tZW50IHdp bGwgYmUgcHVzaGVkCisJIyBpbnRvIEB0b2tlbnMgc2VwYXJhdGFlbHkuIFRoaXMgYXZvaWRz IGhhdmluZyB3aGl0ZXNwYWNlcyBpbiAkY29tbWVudAorCSMgYmVpbmcgaW50ZXJwcmV0ZWQg YXMgZWxlbWVudCBzZXBhcmF0b3IgYnkgc3BsaXQoKS4gVGhlIGxlYWRpbmcKKwkjIGFuZCB0 cmFpbGluZyB3aGl0ZXNwYWNlcyBpbiAkY29tbWVudCBhcmUgcmVtb3ZlZCB0byByZXByb2R1 Y2UgdGhlCisJIyBiZWhhdmlvdXIgb2YgR2V0SW5saW5lQ29tbWVudChjaGFyICpsaW5lKS4K KworCW15ICRjb21tZW50OworCisJaWYoJGNvbW1lbnRfcG9zaXRpb24gIT0gLTEpCisJewor CQkkY29tbWVudCA9IHN1YnN0cigkZW50cnksICRjb21tZW50X3Bvc2l0aW9uKzEpOworCQkk Y29tbWVudCA9fiBzL15ccyt8XHMrJC8vZzsKKwkJJGVudHJ5ID0gc3Vic3RyKCRlbnRyeSwg MCwgJGNvbW1lbnRfcG9zaXRpb24pOworCX0KKwogCSMgR2VuZXJhdGUgdGhlIGV4cGVjdGVk IHBnX2hiYV9maWxlX3J1bGVzIGxpbmUKIAlAdG9rZW5zID0gc3BsaXQoLyAvLCAkZW50cnkp OworCisJIyBSZW1vdmUgc3Vycm91bmRpbmcgZG91YmxlIHF1b3Rlcy4KKwlmb3JlYWNoIChA dG9rZW5zKQorCXsKKwkJJF8gPX4gcy9eInwiJC8vZzsKKwl9CisKKwkjIFdyYXBwaW5nIGRh dGFiYXNlIGFuZCB1c2VyIG5hbWUgd2l0aCB7fQogCSR0b2tlbnNbMV0gPSAneycgLiAkdG9r ZW5zWzFdIC4gJ30nOyAgICAjIGRhdGFiYXNlCiAJJHRva2Vuc1syXSA9ICd7JyAuICR0b2tl bnNbMl0gLiAnfSc7ICAgICMgdXNlcl9uYW1lCiAKQEAgLTcyLDYgKzEyMCwxNiBAQCBzdWIg YWRkX2hiYV9saW5lCiAJcHVzaCBAdG9rZW5zLCAnJzsKIAlwdXNoIEB0b2tlbnMsICcnOwog CisJIyBBcHBlbmQgY29tbWVudCwgaWYgYW55LiBPdGhlcndpc2UgYXBwZW5kIGVtcHR5IHN0 cmluZworCWlmKG5vdCBkZWZpbmVkICRjb21tZW50KQorCXsKKwkJcHVzaCBAdG9rZW5zLCAn JzsKKwl9CisJZWxzZQorCXsKKwkJcHVzaCBAdG9rZW5zLCAkY29tbWVudDsKKwl9CisKIAkj IEZpbmFsIGxpbmUgZXhwZWN0ZWQsIG91dHB1dCBvZiB0aGUgU1FMIHF1ZXJ5LgogCSRsaW5l ID0gIiI7CiAJJGxpbmUgLj0gIlxuIiBpZiAoJGdsb2JsaW5lID4gMSk7CkBAIC0xNjcsMTUg KzIyNSwxOCBAQCBta2RpcigiJGRhdGFfZGlyL2hiYV9pbmNfaWYiKTsKIG1rZGlyKCIkZGF0 YV9kaXIvaGJhX3BvcyIpOwogCiAjIEZpcnN0LCBtYWtlIHN1cmUgdGhhdCB3ZSB3aWxsIGFs d2F5cyBiZSBhYmxlIHRvIGNvbm5lY3QuCi0kaGJhX2V4cGVjdGVkIC49IGFkZF9oYmFfbGlu ZSgkbm9kZSwgIiRoYmFfZmlsZSIsICdsb2NhbCBhbGwgYWxsIHRydXN0Jyk7CiskaGJhX2V4 cGVjdGVkIC49IGFkZF9oYmFfbGluZSgkbm9kZSwgIiRoYmFfZmlsZSIsICdsb2NhbCBhbGwg YWxsIHRydXN0ICAgICMgICAjIEZpcnN0LCBtYWtlIHN1cmUgdGhhdCB3ZSB3aWxsIGFsd2F5 cyBiZSBhYmxlIHRvIGNvbm5lY3QuICAgJyk7CisKKyMgQWRkIGRhdGFiYXNlIGFuZCB1c2Vy IG5hbWVzIGNvbnRhaW5pbmcgIyBieSB3cmFwcGluZyB0aGVtIHdpdGggZG91YmxlIHF1b3Rl cy4KKyRoYmFfZXhwZWN0ZWQgLj0gYWRkX2hiYV9saW5lKCRub2RlLCAiJGhiYV9maWxlIiwg J2xvY2FsICJmYW5jeSNkYm5hbWUiICJmYW5jeSN1c2VybmFtZSIgdHJ1c3QjIEFkZCBkYXRh YmFzZSBhbmQgdXNlciBuYW1lcyBjb250YWluaW5nICMgYnkgd3JhcHBpbmcgdGhlbSB3aXRo IGRvdWJsZSBxdW90ZXMuJyk7CiAKICMgImluY2x1ZGUiLiAgTm90ZSB0aGF0IGFzICRoYmFf ZmlsZSBpcyBsb2NhdGVkIGluICRkYXRhX2Rpci9zdWJkaXIxLAogIyBwZ19oYmFfcHJlLmNv bmYgaXMgbG9jYXRlZCBhdCB0aGUgcm9vdCBvZiB0aGUgZGF0YSBkaXJlY3RvcnkuCiAkaGJh X2V4cGVjdGVkIC49Ci0gIGFkZF9oYmFfbGluZSgkbm9kZSwgIiRoYmFfZmlsZSIsICJpbmNs dWRlIC4uL3BnX2hiYV9wcmUuY29uZiIpOworICBhZGRfaGJhX2xpbmUoJG5vZGUsICIkaGJh X2ZpbGUiLCAiaW5jbHVkZSAuLi9wZ19oYmFfcHJlLmNvbmYjZm9vIik7CiAkaGJhX2V4cGVj dGVkIC49CiAgIGFkZF9oYmFfbGluZSgkbm9kZSwgJ3BnX2hiYV9wcmUuY29uZicsICJsb2Nh bCBwcmUgYWxsIHJlamVjdCIpOwotJGhiYV9leHBlY3RlZCAuPSBhZGRfaGJhX2xpbmUoJG5v ZGUsICIkaGJhX2ZpbGUiLCAibG9jYWwgYWxsIGFsbCByZWplY3QiKTsKKyRoYmFfZXhwZWN0 ZWQgLj0gYWRkX2hiYV9saW5lKCRub2RlLCAiJGhiYV9maWxlIiwgJ2xvY2FsIGFsbCAiYWxs IiByZWplY3QgI2JhcicpOwogYWRkX2hiYV9saW5lKCRub2RlLCAiJGhiYV9maWxlIiwgImlu Y2x1ZGUgLi4vaGJhX3Bvcy9wZ19oYmFfcG9zLmNvbmYiKTsKICRoYmFfZXhwZWN0ZWQgLj0K ICAgYWRkX2hiYV9saW5lKCRub2RlLCAnaGJhX3Bvcy9wZ19oYmFfcG9zLmNvbmYnLCAibG9j YWwgcG9zIGFsbCByZWplY3QiKTsKQEAgLTE4NCw3ICsyNDUsNyBAQCAkaGJhX2V4cGVjdGVk IC49CiAkaGJhX2V4cGVjdGVkIC49CiAgIGFkZF9oYmFfbGluZSgkbm9kZSwgJ2hiYV9wb3Mv cGdfaGJhX3Bvcy5jb25mJywgImluY2x1ZGUgcGdfaGJhX3BvczIuY29uZiIpOwogJGhiYV9l eHBlY3RlZCAuPQotICBhZGRfaGJhX2xpbmUoJG5vZGUsICdoYmFfcG9zL3BnX2hiYV9wb3My LmNvbmYnLCAibG9jYWwgcG9zMiBhbGwgcmVqZWN0Iik7CisgIGFkZF9oYmFfbGluZSgkbm9k ZSwgJ2hiYV9wb3MvcGdfaGJhX3BvczIuY29uZicsICJsb2NhbCBwb3MyIGFsbCByZWplY3Qg I2JhciEjIik7CiAkaGJhX2V4cGVjdGVkIC49CiAgIGFkZF9oYmFfbGluZSgkbm9kZSwgJ2hi YV9wb3MvcGdfaGJhX3BvczIuY29uZicsICJsb2NhbCBwb3MzIGFsbCByZWplY3QiKTsKIApA QCAtMjE2LDcgKzI3Nyw3IEBAICRoYmFfZXhwZWN0ZWQgLj0gIlxuIgogICAuICRsaW5lX2Nv dW50ZXJzeydoYmFfcnVsZSd9IC4gInwiCiAgIC4gYmFzZW5hbWUoJGhiYV9maWxlKSAuICJ8 IgogICAuICRsaW5lX2NvdW50ZXJzeyRoYmFfZmlsZX0KLSAgLiAnfGxvY2FsfHtkYjEsZGIz fXx7YWxsfXxyZWplY3R8fCc7CisgIC4gJ3xsb2NhbHx7ZGIxLGRiM318e2FsbH18cmVqZWN0 fHx8JzsKIAogbm90ZSAiR2VuZXJhdGluZyBpZGVudCBzdHJ1Y3R1cmUgd2l0aCBpbmNsdWRl IGRpcmVjdGl2ZXMiOwogCkBAIC0yNzksNyArMzQwLDggQEAgbXkgJGNvbnRlbnRzID0gJG5v ZGUtPnNhZmVfcHNxbCgKICAgdXNlcl9uYW1lLAogICBhdXRoX21ldGhvZCwKICAgb3B0aW9u cywKLSAgZXJyb3IKKyAgZXJyb3IsCisgIGNvbW1lbnQKICBGUk9NIHBnX2hiYV9maWxlX3J1 bGVzIE9SREVSIEJZIHJ1bGVfbnVtYmVyOykpOwogaXMoJGNvbnRlbnRzLCAkaGJhX2V4cGVj dGVkLCAnY2hlY2sgY29udGVudHMgb2YgcGdfaGJhX2ZpbGVfcnVsZXMnKTsKIApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCA1MDU4YmU1NDExLi42YTZjNmY5ZWRk IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTM0OCw4ICsxMzQ4 LDkgQEAgcGdfaGJhX2ZpbGVfcnVsZXN8IFNFTEVDVCBydWxlX251bWJlciwKICAgICBuZXRt YXNrLAogICAgIGF1dGhfbWV0aG9kLAogICAgIG9wdGlvbnMsCisgICAgY29tbWVudCwKICAg ICBlcnJvcgotICAgRlJPTSBwZ19oYmFfZmlsZV9ydWxlcygpIGEocnVsZV9udW1iZXIsIGZp bGVfbmFtZSwgbGluZV9udW1iZXIsIHR5cGUsIGRhdGFiYXNlLCB1c2VyX25hbWUsIGFkZHJl c3MsIG5ldG1hc2ssIGF1dGhfbWV0aG9kLCBvcHRpb25zLCBlcnJvcik7CisgICBGUk9NIHBn X2hiYV9maWxlX3J1bGVzKCkgYShydWxlX251bWJlciwgZmlsZV9uYW1lLCBsaW5lX251bWJl ciwgdHlwZSwgZGF0YWJhc2UsIHVzZXJfbmFtZSwgYWRkcmVzcywgbmV0bWFzaywgYXV0aF9t ZXRob2QsIG9wdGlvbnMsIGNvbW1lbnQsIGVycm9yKTsKIHBnX2lkZW50X2ZpbGVfbWFwcGlu Z3N8IFNFTEVDVCBtYXBfbnVtYmVyLAogICAgIGZpbGVfbmFtZSwKICAgICBsaW5lX251bWJl ciwKLS0gCjIuMzQuMQoK --------------hRFew0j7YmxOe2w3JOIHaNJZ--