Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c9WVH-0003EP-Eh for pgsql-hackers@arkaria.postgresql.org; Wed, 23 Nov 2016 12:18:19 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1c9WVG-0007Ib-Rp for pgsql-hackers@arkaria.postgresql.org; Wed, 23 Nov 2016 12:18:18 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1c9WVF-0007IV-Tp for pgsql-hackers@postgresql.org; Wed, 23 Nov 2016 12:18:18 +0000 Received: from verite.pro ([195.154.189.246] helo=genius-map.net) by makus.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c9WV3-00074J-IU for pgsql-hackers@postgresql.org; Wed, 23 Nov 2016 12:18:16 +0000 Received: by genius-map.net (Postfix, from userid 1001) id 89F9D38A2BDF; Wed, 23 Nov 2016 13:17:33 +0100 (CET) MIME-Version: 1.0 Subject: Re: Improvements in psql hooks for variables From: "Daniel Verite" To: "Daniel Verite" Cc: "Stephen Frost" ,"Tom Lane" ,"Rahila Syed" ,"Ashutosh Bapat" ,"pgsql-hackers" In-Reply-To: <1bc0c06e-42a8-43fb-b3f6-8f90933ff67d@mm> Date: Wed, 23 Nov 2016 13:17:31 +0100 Message-Id: X-Mailer: Manitou v1.6.0 Content-type: multipart/mixed; boundary="----------=_1479903453-44826-1" X-Pg-Spam-Score: -1.9 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format... ------------=_1479903453-44826-1 Content-Type: text/plain; charset="iso-8859-15" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable I wrote: > So I went through the psql commands which don't fail on parse errors > for booleans > [...] Here's a v5 patch implementing the suggestions mentioned upthread: all meta-commands calling ParseVariableBool() now fail when the boolean argument can't be parsed successfully. Also includes a minor change to SetVariableAssignHook() that now returns the result of the hook it calls after installing it. It doesn't make any difference in psql behavior since callers of SetVariableAssignHook() ignore its return value, but it's more consistent with SetVariable(). Best regards, --=20 Daniel V=E9rit=E9 PostgreSQL-powered mailer: http://www.manitou-mail.org Twitter: @DanielVerite ------------=_1479903453-44826-1 Content-Type: text-x-patch; name="psql-var-hooks-v5.patch" Content-Disposition: attachment; filename="psql-var-hooks-v5.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMgYi9zcmMvYmlu L3BzcWwvY29tbWFuZC5jCmluZGV4IGE5YTJmZGIuLjM1NjQ2N2IgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKKysrIGIvc3JjL2Jpbi9w c3FsL2NvbW1hbmQuYwpAQCAtMjU0LDI1ICsyNTQsMzAgQEAgZXhlY19jb21t YW5kKGNvbnN0IGNoYXIgKmNtZCwKIAkJaWYgKG9wdDEgIT0gTlVMTCAmJiBz dHJuY21wKG9wdDEsIHByZWZpeCwgc2l6ZW9mKHByZWZpeCkgLSAxKSA9PSAw KQogCQl7CiAJCQlyZXVzZV9wcmV2aW91cyA9Ci0JCQkJUGFyc2VWYXJpYWJs ZUJvb2wob3B0MSArIHNpemVvZihwcmVmaXgpIC0gMSwgcHJlZml4KSA/CisJ CQkJUGFyc2VWYXJpYWJsZUJvb2wob3B0MSArIHNpemVvZihwcmVmaXgpIC0g MSwgcHJlZml4LCAmc3VjY2VzcykgPwogCQkJCVRSSV9ZRVMgOiBUUklfTk87 Ci0KLQkJCWZyZWUob3B0MSk7Ci0JCQlvcHQxID0gcmVhZF9jb25uZWN0X2Fy ZyhzY2FuX3N0YXRlKTsKKwkJCWlmIChzdWNjZXNzKQorCQkJeworCQkJCWZy ZWUob3B0MSk7CisJCQkJb3B0MSA9IHJlYWRfY29ubmVjdF9hcmcoc2Nhbl9z dGF0ZSk7CisJCQl9CiAJCX0KIAkJZWxzZQogCQkJcmV1c2VfcHJldmlvdXMg PSBUUklfREVGQVVMVDsKIAotCQlvcHQyID0gcmVhZF9jb25uZWN0X2FyZyhz Y2FuX3N0YXRlKTsKLQkJb3B0MyA9IHJlYWRfY29ubmVjdF9hcmcoc2Nhbl9z dGF0ZSk7Ci0JCW9wdDQgPSByZWFkX2Nvbm5lY3RfYXJnKHNjYW5fc3RhdGUp OworCQlpZiAoc3VjY2VzcykJCQkvKiBkbyBub3QgYXR0ZW1wdCB0byBjb25u ZWN0IGlmIHJldXNlX3ByZXZpb3VzIGFyZ3VtZW50IHdhcyBpbnZhbGlkICov CisJCXsKKwkJCW9wdDIgPSByZWFkX2Nvbm5lY3RfYXJnKHNjYW5fc3RhdGUp OworCQkJb3B0MyA9IHJlYWRfY29ubmVjdF9hcmcoc2Nhbl9zdGF0ZSk7CisJ CQlvcHQ0ID0gcmVhZF9jb25uZWN0X2FyZyhzY2FuX3N0YXRlKTsKIAotCQlz dWNjZXNzID0gZG9fY29ubmVjdChyZXVzZV9wcmV2aW91cywgb3B0MSwgb3B0 Miwgb3B0Mywgb3B0NCk7CisJCQlzdWNjZXNzID0gZG9fY29ubmVjdChyZXVz ZV9wcmV2aW91cywgb3B0MSwgb3B0Miwgb3B0Mywgb3B0NCk7CiAKKwkJCWZy ZWUob3B0Mik7CisJCQlmcmVlKG9wdDMpOworCQkJZnJlZShvcHQ0KTsKKwkJ fQogCQlmcmVlKG9wdDEpOwotCQlmcmVlKG9wdDIpOwotCQlmcmVlKG9wdDMp OwotCQlmcmVlKG9wdDQpOwogCX0KIAogCS8qIFxjZCAqLwpAQCAtMTU0OCw3 ICsxNTUzLDExIEBAIGV4ZWNfY29tbWFuZChjb25zdCBjaGFyICpjbWQsCiAJ CQkJCQkJCQkJCQkgT1RfTk9STUFMLCBOVUxMLCBmYWxzZSk7CiAKIAkJaWYg KG9wdCkKLQkJCXBzZXQudGltaW5nID0gUGFyc2VWYXJpYWJsZUJvb2wob3B0 LCAiXFx0aW1pbmciKTsKKwkJeworCQkJYm9vbAluZXd2YWwgPSBQYXJzZVZh cmlhYmxlQm9vbChvcHQsICJcXHRpbWluZyIsICZzdWNjZXNzKTsKKwkJCWlm IChzdWNjZXNzKQorCQkJCXBzZXQudGltaW5nID0gbmV3dmFsOworCQl9CiAJ CWVsc2UKIAkJCXBzZXQudGltaW5nID0gIXBzZXQudGltaW5nOwogCQlpZiAo IXBzZXQucXVpZXQpCkBAIC0yNjYwLDcgKzI2NjksMTQgQEAgZG9fcHNldChj b25zdCBjaGFyICpwYXJhbSwgY29uc3QgY2hhciAqdmFsdWUsIHByaW50UXVl cnlPcHQgKnBvcHQsIGJvb2wgcXVpZXQpCiAJCWlmICh2YWx1ZSAmJiBwZ19z dHJjYXNlY21wKHZhbHVlLCAiYXV0byIpID09IDApCiAJCQlwb3B0LT50b3B0 LmV4cGFuZGVkID0gMjsKIAkJZWxzZSBpZiAodmFsdWUpCi0JCQlwb3B0LT50 b3B0LmV4cGFuZGVkID0gUGFyc2VWYXJpYWJsZUJvb2wodmFsdWUsIHBhcmFt KTsKKwkJeworCQkJYm9vbAl2YWxpZDsKKwkJCWJvb2wJbmV3dmFsID0gUGFy c2VWYXJpYWJsZUJvb2wodmFsdWUsIHBhcmFtLCAmdmFsaWQpOworCQkJaWYg KHZhbGlkKQorCQkJCXBvcHQtPnRvcHQuZXhwYW5kZWQgPSBuZXd2YWw7CisJ CQllbHNlCisJCQkJcmV0dXJuIGZhbHNlOworCQl9CiAJCWVsc2UKIAkJCXBv cHQtPnRvcHQuZXhwYW5kZWQgPSAhcG9wdC0+dG9wdC5leHBhbmRlZDsKIAl9 CkBAIC0yNjY4LDggKzI2ODQsMTYgQEAgZG9fcHNldChjb25zdCBjaGFyICpw YXJhbSwgY29uc3QgY2hhciAqdmFsdWUsIHByaW50UXVlcnlPcHQgKnBvcHQs IGJvb2wgcXVpZXQpCiAJLyogbG9jYWxlLWF3YXJlIG51bWVyaWMgb3V0cHV0 ICovCiAJZWxzZSBpZiAoc3RyY21wKHBhcmFtLCAibnVtZXJpY2xvY2FsZSIp ID09IDApCiAJeworCiAJCWlmICh2YWx1ZSkKLQkJCXBvcHQtPnRvcHQubnVt ZXJpY0xvY2FsZSA9IFBhcnNlVmFyaWFibGVCb29sKHZhbHVlLCBwYXJhbSk7 CisJCXsKKwkJCWJvb2wJdmFsaWQ7CisJCQlib29sCW5ld3ZhbCA9IFBhcnNl VmFyaWFibGVCb29sKHZhbHVlLCBwYXJhbSwgJnZhbGlkKTsKKwkJCWlmICh2 YWxpZCkKKwkJCQlwb3B0LT50b3B0Lm51bWVyaWNMb2NhbGUgPSBuZXd2YWw7 CisJCQllbHNlCisJCQkJcmV0dXJuIGZhbHNlOworCQl9CiAJCWVsc2UKIAkJ CXBvcHQtPnRvcHQubnVtZXJpY0xvY2FsZSA9ICFwb3B0LT50b3B0Lm51bWVy aWNMb2NhbGU7CiAJfQpAQCAtMjcyNCw3ICsyNzQ4LDE0IEBAIGRvX3BzZXQo Y29uc3QgY2hhciAqcGFyYW0sIGNvbnN0IGNoYXIgKnZhbHVlLCBwcmludFF1 ZXJ5T3B0ICpwb3B0LCBib29sIHF1aWV0KQogCWVsc2UgaWYgKHN0cmNtcChw YXJhbSwgInQiKSA9PSAwIHx8IHN0cmNtcChwYXJhbSwgInR1cGxlc19vbmx5 IikgPT0gMCkKIAl7CiAJCWlmICh2YWx1ZSkKLQkJCXBvcHQtPnRvcHQudHVw bGVzX29ubHkgPSBQYXJzZVZhcmlhYmxlQm9vbCh2YWx1ZSwgcGFyYW0pOwor CQl7CisJCQlib29sCXZhbGlkOworCQkJYm9vbAluZXd2YWwgPSBQYXJzZVZh cmlhYmxlQm9vbCh2YWx1ZSwgcGFyYW0sICZ2YWxpZCk7CisJCQlpZiAodmFs aWQpCisJCQkJcG9wdC0+dG9wdC50dXBsZXNfb25seSA9IG5ld3ZhbDsKKwkJ CWVsc2UKKwkJCQlyZXR1cm4gZmFsc2U7CisJCX0KIAkJZWxzZQogCQkJcG9w dC0+dG9wdC50dXBsZXNfb25seSA9ICFwb3B0LT50b3B0LnR1cGxlc19vbmx5 OwogCX0KQEAgLTI3NTYsMTAgKzI3ODcsMTEgQEAgZG9fcHNldChjb25zdCBj aGFyICpwYXJhbSwgY29uc3QgY2hhciAqdmFsdWUsIHByaW50UXVlcnlPcHQg KnBvcHQsIGJvb2wgcXVpZXQpCiAJCQlwb3B0LT50b3B0LnBhZ2VyID0gMjsK IAkJZWxzZSBpZiAodmFsdWUpCiAJCXsKLQkJCWlmIChQYXJzZVZhcmlhYmxl Qm9vbCh2YWx1ZSwgcGFyYW0pKQotCQkJCXBvcHQtPnRvcHQucGFnZXIgPSAx OwotCQkJZWxzZQotCQkJCXBvcHQtPnRvcHQucGFnZXIgPSAwOworCQkJYm9v bAl2YWxpZDsKKwkJCWJvb2wJb24gPSBQYXJzZVZhcmlhYmxlQm9vbCh2YWx1 ZSwgcGFyYW0sICZ2YWxpZCk7CisJCQlpZiAoIXZhbGlkKQorCQkJCXJldHVy biBmYWxzZTsKKwkJCXBvcHQtPnRvcHQucGFnZXIgPSBvbiA/IDEgOiAwOwog CQl9CiAJCWVsc2UgaWYgKHBvcHQtPnRvcHQucGFnZXIgPT0gMSkKIAkJCXBv cHQtPnRvcHQucGFnZXIgPSAwOwpAQCAtMjc3OCw3ICsyODEwLDE0IEBAIGRv X3BzZXQoY29uc3QgY2hhciAqcGFyYW0sIGNvbnN0IGNoYXIgKnZhbHVlLCBw cmludFF1ZXJ5T3B0ICpwb3B0LCBib29sIHF1aWV0KQogCWVsc2UgaWYgKHN0 cmNtcChwYXJhbSwgImZvb3RlciIpID09IDApCiAJewogCQlpZiAodmFsdWUp Ci0JCQlwb3B0LT50b3B0LmRlZmF1bHRfZm9vdGVyID0gUGFyc2VWYXJpYWJs ZUJvb2wodmFsdWUsIHBhcmFtKTsKKwkJeworCQkJYm9vbAl2YWxpZDsKKwkJ CWJvb2wJbmV3dmFsID0gUGFyc2VWYXJpYWJsZUJvb2wodmFsdWUsIHBhcmFt LCAmdmFsaWQpOworCQkJaWYgKHZhbGlkKQorCQkJCXBvcHQtPnRvcHQuZGVm YXVsdF9mb290ZXIgPSBuZXd2YWw7CisJCQllbHNlCisJCQkJcmV0dXJuIGZh bHNlOworCQl9CiAJCWVsc2UKIAkJCXBvcHQtPnRvcHQuZGVmYXVsdF9mb290 ZXIgPSAhcG9wdC0+dG9wdC5kZWZhdWx0X2Zvb3RlcjsKIAl9CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BzcWwvc3RhcnR1cC5jIGIvc3JjL2Jpbi9wc3FsL3N0 YXJ0dXAuYwppbmRleCA3Y2UwNWZiLi5iYTA5NGYwIDEwMDY0NAotLS0gYS9z cmMvYmluL3BzcWwvc3RhcnR1cC5jCisrKyBiL3NyYy9iaW4vcHNxbC9zdGFy dHVwLmMKQEAgLTc4Niw0MyArNzg2LDY4IEBAIHNob3dWZXJzaW9uKHZvaWQp CiAgKiBUaGlzIGlzbid0IGFuIGFtYXppbmdseSBnb29kIHBsYWNlIGZvciB0 aGVtLCBidXQgbmVpdGhlciBpcyBhbnl3aGVyZSBlbHNlLgogICovCiAKLXN0 YXRpYyB2b2lkCisvKgorICogSG9vayB0byBzZXQgYW4gaW50ZXJuYWwgZmxh ZyBmcm9tIGEgdXNlci1zdXBwbGllZCBzdHJpbmcgdmFsdWUuCisgKiBJZiB0 aGUgc3ludGF4IGlzIGNvcnJlY3QsIGFmZmVjdCAqZmxhZyBhbmQgcmV0dXJu IHRydWUuCisgKiBPdGhlcndpc2UsIGtlZXAgKmZsYWcgdW50b3VjaGVkIGFu ZCByZXR1cm4gZmFsc2UuCisgKi8KK3N0YXRpYyBib29sCitnZW5lcmljX2Jv b2xlYW5faG9vayhjb25zdCBjaGFyICpuZXd2YWwsIGNvbnN0IGNoYXIqIHZh cm5hbWUsIGJvb2wgKmZsYWcpCit7CisJYm9vbCBpc3ZhbGlkOworCWJvb2wg dmFsID0gUGFyc2VWYXJpYWJsZUJvb2wobmV3dmFsLCB2YXJuYW1lLCAmaXN2 YWxpZCk7CisJaWYgKGlzdmFsaWQpCisJCSpmbGFnID0gdmFsOworCXJldHVy biBpc3ZhbGlkOworfQorCitzdGF0aWMgYm9vbAogYXV0b2NvbW1pdF9ob29r KGNvbnN0IGNoYXIgKm5ld3ZhbCkKIHsKLQlwc2V0LmF1dG9jb21taXQgPSBQ YXJzZVZhcmlhYmxlQm9vbChuZXd2YWwsICJBVVRPQ09NTUlUIik7CisJcmV0 dXJuIGdlbmVyaWNfYm9vbGVhbl9ob29rKG5ld3ZhbCwgIkFVVE9DT01NSVQi LCAmcHNldC5hdXRvY29tbWl0KTsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRp YyBib29sCiBvbl9lcnJvcl9zdG9wX2hvb2soY29uc3QgY2hhciAqbmV3dmFs KQogewotCXBzZXQub25fZXJyb3Jfc3RvcCA9IFBhcnNlVmFyaWFibGVCb29s KG5ld3ZhbCwgIk9OX0VSUk9SX1NUT1AiKTsKKwlyZXR1cm4gZ2VuZXJpY19i b29sZWFuX2hvb2sobmV3dmFsLCAiT05fRVJST1JfU1RPUCIsICZwc2V0Lm9u X2Vycm9yX3N0b3ApOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wK IHF1aWV0X2hvb2soY29uc3QgY2hhciAqbmV3dmFsKQogewotCXBzZXQucXVp ZXQgPSBQYXJzZVZhcmlhYmxlQm9vbChuZXd2YWwsICJRVUlFVCIpOworCXJl dHVybiBnZW5lcmljX2Jvb2xlYW5faG9vayhuZXd2YWwsICJRVUlFVCIsICZw c2V0LnF1aWV0KTsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBz aW5nbGVsaW5lX2hvb2soY29uc3QgY2hhciAqbmV3dmFsKQogewotCXBzZXQu c2luZ2xlbGluZSA9IFBhcnNlVmFyaWFibGVCb29sKG5ld3ZhbCwgIlNJTkdM RUxJTkUiKTsKKwlyZXR1cm4gZ2VuZXJpY19ib29sZWFuX2hvb2sobmV3dmFs LCAiU0lOR0xFTElORSIsICZwc2V0LnNpbmdsZWxpbmUpOwogfQogCi1zdGF0 aWMgdm9pZAorc3RhdGljIGJvb2wKIHNpbmdsZXN0ZXBfaG9vayhjb25zdCBj aGFyICpuZXd2YWwpCiB7Ci0JcHNldC5zaW5nbGVzdGVwID0gUGFyc2VWYXJp YWJsZUJvb2wobmV3dmFsLCAiU0lOR0xFU1RFUCIpOworCXJldHVybiBnZW5l cmljX2Jvb2xlYW5faG9vayhuZXd2YWwsICJTSU5HTEVTVEVQIiwgJnBzZXQu c2luZ2xlc3RlcCk7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAog ZmV0Y2hfY291bnRfaG9vayhjb25zdCBjaGFyICpuZXd2YWwpCiB7Ci0JcHNl dC5mZXRjaF9jb3VudCA9IFBhcnNlVmFyaWFibGVOdW0obmV3dmFsLCAtMSwg LTEsIGZhbHNlKTsKKwlib29sIHZhbGlkOworCWludCB2YWx1ZSA9IFBhcnNl Q2hlY2tWYXJpYWJsZU51bShuZXd2YWwsIC0xLCAmdmFsaWQpOworCWlmICh2 YWxpZCkKKwkJcHNldC5mZXRjaF9jb3VudCA9IHZhbHVlOworCWVsc2UKKwl7 CisJCXBzcWxfZXJyb3IoImludmFsaWQgdmFsdWUgXCIlc1wiIGZvciBcIiVz XCJcbiIsCisJCQkJICAgbmV3dmFsLCAiRkVUQ0hfQ09VTlQiKTsKKwkJcmV0 dXJuIGZhbHNlOworCX0KKwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZv aWQKK3N0YXRpYyBib29sCiBlY2hvX2hvb2soY29uc3QgY2hhciAqbmV3dmFs KQogewogCWlmIChuZXd2YWwgPT0gTlVMTCkKQEAgLTgzNywzOSArODYyLDUy IEBAIGVjaG9faG9vayhjb25zdCBjaGFyICpuZXd2YWwpCiAJCXBzZXQuZWNo byA9IFBTUUxfRUNIT19OT05FOwogCWVsc2UKIAl7Ci0JCXBzcWxfZXJyb3Io InVucmVjb2duaXplZCB2YWx1ZSBcIiVzXCIgZm9yIFwiJXNcIjsgYXNzdW1p bmcgXCIlc1wiXG4iLAotCQkJCSAgIG5ld3ZhbCwgIkVDSE8iLCAibm9uZSIp OwotCQlwc2V0LmVjaG8gPSBQU1FMX0VDSE9fTk9ORTsKKwkJcHNxbF9lcnJv cigidW5yZWNvZ25pemVkIHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wiXG4iLAor CQkJCSAgIG5ld3ZhbCwgIkVDSE8iKTsKKwkJcmV0dXJuIGZhbHNlOwogCX0K KwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBib29s CiBlY2hvX2hpZGRlbl9ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkKIHsKIAlp ZiAobmV3dmFsID09IE5VTEwpCiAJCXBzZXQuZWNob19oaWRkZW4gPSBQU1FM X0VDSE9fSElEREVOX09GRjsKIAllbHNlIGlmIChwZ19zdHJjYXNlY21wKG5l d3ZhbCwgIm5vZXhlYyIpID09IDApCiAJCXBzZXQuZWNob19oaWRkZW4gPSBQ U1FMX0VDSE9fSElEREVOX05PRVhFQzsKLQllbHNlIGlmIChQYXJzZVZhcmlh YmxlQm9vbChuZXd2YWwsICJFQ0hPX0hJRERFTiIpKQotCQlwc2V0LmVjaG9f aGlkZGVuID0gUFNRTF9FQ0hPX0hJRERFTl9PTjsKLQllbHNlCS8qIFBhcnNl VmFyaWFibGVCb29sIHByaW50ZWQgbXNnIGlmIG5lZWRlZCAqLwotCQlwc2V0 LmVjaG9faGlkZGVuID0gUFNRTF9FQ0hPX0hJRERFTl9PRkY7CisJZWxzZQor CXsKKwkJYm9vbCBpc3ZhbGlkOworCQlib29sIHZhbCA9IFBhcnNlVmFyaWFi bGVCb29sKG5ld3ZhbCwgIkVDSE9fSElEREVOIiwgJmlzdmFsaWQpOworCQlp ZiAoIWlzdmFsaWQpCisJCQlyZXR1cm4gZmFsc2U7IC8qIFBhcnNlVmFyaWFi bGVCb29sIHByaW50ZWQgbXNnICovCisJCXBzZXQuZWNob19oaWRkZW4gPSB2 YWwgPyBQU1FMX0VDSE9fSElEREVOX09OIDogUFNRTF9FQ0hPX0hJRERFTl9P RkY7CisJfQorCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZAorc3Rh dGljIGJvb2wKIG9uX2Vycm9yX3JvbGxiYWNrX2hvb2soY29uc3QgY2hhciAq bmV3dmFsKQogewogCWlmIChuZXd2YWwgPT0gTlVMTCkKIAkJcHNldC5vbl9l cnJvcl9yb2xsYmFjayA9IFBTUUxfRVJST1JfUk9MTEJBQ0tfT0ZGOwogCWVs c2UgaWYgKHBnX3N0cmNhc2VjbXAobmV3dmFsLCAiaW50ZXJhY3RpdmUiKSA9 PSAwKQogCQlwc2V0Lm9uX2Vycm9yX3JvbGxiYWNrID0gUFNRTF9FUlJPUl9S T0xMQkFDS19JTlRFUkFDVElWRTsKLQllbHNlIGlmIChQYXJzZVZhcmlhYmxl Qm9vbChuZXd2YWwsICJPTl9FUlJPUl9ST0xMQkFDSyIpKQotCQlwc2V0Lm9u X2Vycm9yX3JvbGxiYWNrID0gUFNRTF9FUlJPUl9ST0xMQkFDS19PTjsKLQll bHNlCS8qIFBhcnNlVmFyaWFibGVCb29sIHByaW50ZWQgbXNnIGlmIG5lZWRl ZCAqLwotCQlwc2V0Lm9uX2Vycm9yX3JvbGxiYWNrID0gUFNRTF9FUlJPUl9S T0xMQkFDS19PRkY7CisJZWxzZQorCXsKKwkJYm9vbCBpc3ZhbGlkOworCQli b29sIHZhbCA9IFBhcnNlVmFyaWFibGVCb29sKG5ld3ZhbCwgIk9OX0VSUk9S X1JPTExCQUNLIiwgJmlzdmFsaWQpOworCQlpZiAoaXN2YWxpZCkKKwkJCXBz ZXQub25fZXJyb3Jfcm9sbGJhY2sgPSB2YWwgPyBQU1FMX0VSUk9SX1JPTExC QUNLX09OIDogUFNRTF9FUlJPUl9ST0xMQkFDS19PRkY7CisJCWVsc2UKKwkJ CS8qIFBhcnNlVmFyaWFibGVCb29sIHByaW50ZWQgbXNnIGlmIG5lZWRlZCAq LworCQkJcmV0dXJuIGZhbHNlOworCX0KKwlyZXR1cm4gdHJ1ZTsKIH0KIAot c3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBjb21wX2tleXdvcmRfY2FzZV9o b29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkKIHsKIAlpZiAobmV3dmFsID09IE5V TEwpCkBAIC04ODQsMTMgKzkyMiwxNCBAQCBjb21wX2tleXdvcmRfY2FzZV9o b29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkKIAkJcHNldC5jb21wX2Nhc2UgPSBQ U1FMX0NPTVBfQ0FTRV9MT1dFUjsKIAllbHNlCiAJewotCQlwc3FsX2Vycm9y KCJ1bnJlY29nbml6ZWQgdmFsdWUgXCIlc1wiIGZvciBcIiVzXCI7IGFzc3Vt aW5nIFwiJXNcIlxuIiwKLQkJCQkgICBuZXd2YWwsICJDT01QX0tFWVdPUkRf Q0FTRSIsICJwcmVzZXJ2ZS11cHBlciIpOwotCQlwc2V0LmNvbXBfY2FzZSA9 IFBTUUxfQ09NUF9DQVNFX1BSRVNFUlZFX1VQUEVSOworCQlwc3FsX2Vycm9y KCJ1bnJlY29nbml6ZWQgdmFsdWUgXCIlc1wiIGZvciBcIiVzXCJcbiIsCisJ CQkJICAgbmV3dmFsLCAiQ09NUF9LRVlXT1JEX0NBU0UiKTsKKwkJcmV0dXJu IGZhbHNlOwogCX0KKwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQK K3N0YXRpYyBib29sCiBoaXN0Y29udHJvbF9ob29rKGNvbnN0IGNoYXIgKm5l d3ZhbCkKIHsKIAlpZiAobmV3dmFsID09IE5VTEwpCkBAIC05MDUsMzEgKzk0 NCwzNSBAQCBoaXN0Y29udHJvbF9ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkK IAkJcHNldC5oaXN0Y29udHJvbCA9IGhjdGxfbm9uZTsKIAllbHNlCiAJewot CQlwc3FsX2Vycm9yKCJ1bnJlY29nbml6ZWQgdmFsdWUgXCIlc1wiIGZvciBc IiVzXCI7IGFzc3VtaW5nIFwiJXNcIlxuIiwKLQkJCQkgICBuZXd2YWwsICJI SVNUQ09OVFJPTCIsICJub25lIik7Ci0JCXBzZXQuaGlzdGNvbnRyb2wgPSBo Y3RsX25vbmU7CisJCXBzcWxfZXJyb3IoInVucmVjb2duaXplZCB2YWx1ZSBc IiVzXCIgZm9yIFwiJXNcIlxuIiwKKwkJCQkgICBuZXd2YWwsICJISVNUQ09O VFJPTCIpOworCQlyZXR1cm4gZmFsc2U7CiAJfQorCXJldHVybiB0cnVlOwog fQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIHByb21wdDFfaG9vayhj b25zdCBjaGFyICpuZXd2YWwpCiB7CiAJcHNldC5wcm9tcHQxID0gbmV3dmFs ID8gbmV3dmFsIDogIiI7CisJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2 b2lkCitzdGF0aWMgYm9vbAogcHJvbXB0Ml9ob29rKGNvbnN0IGNoYXIgKm5l d3ZhbCkKIHsKIAlwc2V0LnByb21wdDIgPSBuZXd2YWwgPyBuZXd2YWwgOiAi IjsKKwlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBi b29sCiBwcm9tcHQzX2hvb2soY29uc3QgY2hhciAqbmV3dmFsKQogewogCXBz ZXQucHJvbXB0MyA9IG5ld3ZhbCA/IG5ld3ZhbCA6ICIiOworCXJldHVybiB0 cnVlOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIHZlcmJvc2l0 eV9ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkKIHsKIAlpZiAobmV3dmFsID09 IE5VTEwpCkBAIC05NDIsMTYgKzk4NSwxNyBAQCB2ZXJib3NpdHlfaG9vayhj b25zdCBjaGFyICpuZXd2YWwpCiAJCXBzZXQudmVyYm9zaXR5ID0gUFFFUlJP UlNfVkVSQk9TRTsKIAllbHNlCiAJewotCQlwc3FsX2Vycm9yKCJ1bnJlY29n bml6ZWQgdmFsdWUgXCIlc1wiIGZvciBcIiVzXCI7IGFzc3VtaW5nIFwiJXNc IlxuIiwKLQkJCQkgICBuZXd2YWwsICJWRVJCT1NJVFkiLCAiZGVmYXVsdCIp OwotCQlwc2V0LnZlcmJvc2l0eSA9IFBRRVJST1JTX0RFRkFVTFQ7CisJCXBz cWxfZXJyb3IoInVucmVjb2duaXplZCB2YWx1ZSBcIiVzXCIgZm9yIFwiJXNc IlxuIiwKKwkJCQkgICBuZXd2YWwsICJWRVJCT1NJVFkiKTsKKwkJcmV0dXJu IGZhbHNlOwogCX0KIAogCWlmIChwc2V0LmRiKQogCQlQUXNldEVycm9yVmVy Ym9zaXR5KHBzZXQuZGIsIHBzZXQudmVyYm9zaXR5KTsKKwlyZXR1cm4gdHJ1 ZTsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBzaG93X2NvbnRl eHRfaG9vayhjb25zdCBjaGFyICpuZXd2YWwpCiB7CiAJaWYgKG5ld3ZhbCA9 PSBOVUxMKQpAQCAtOTY0LDEzICsxMDA4LDE0IEBAIHNob3dfY29udGV4dF9o b29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkKIAkJcHNldC5zaG93X2NvbnRleHQg PSBQUVNIT1dfQ09OVEVYVF9BTFdBWVM7CiAJZWxzZQogCXsKLQkJcHNxbF9l cnJvcigidW5yZWNvZ25pemVkIHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wiOyBh c3N1bWluZyBcIiVzXCJcbiIsCi0JCQkJICAgbmV3dmFsLCAiU0hPV19DT05U RVhUIiwgImVycm9ycyIpOwotCQlwc2V0LnNob3dfY29udGV4dCA9IFBRU0hP V19DT05URVhUX0VSUk9SUzsKKwkJcHNxbF9lcnJvcigidW5yZWNvZ25pemVk IHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wiXG4iLAorCQkJCSAgIG5ld3ZhbCwg IlNIT1dfQ09OVEVYVCIpOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJaWYg KHBzZXQuZGIpCiAJCVBRc2V0RXJyb3JDb250ZXh0VmlzaWJpbGl0eShwc2V0 LmRiLCBwc2V0LnNob3dfY29udGV4dCk7CisJcmV0dXJuIHRydWU7CiB9CiAK IApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3ZhcmlhYmxlcy5jIGIvc3Jj L2Jpbi9wc3FsL3ZhcmlhYmxlcy5jCmluZGV4IGY0M2Y0MTguLjEzMDJhMzIg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC92YXJpYWJsZXMuYworKysgYi9z cmMvYmluL3BzcWwvdmFyaWFibGVzLmMKQEAgLTg2LDI0ICs4NiwyOCBAQCBH ZXRWYXJpYWJsZShWYXJpYWJsZVNwYWNlIHNwYWNlLCBjb25zdCBjaGFyICpu YW1lKQogICoKICAqICJuYW1lIiBpcyB0aGUgbmFtZSBvZiB0aGUgdmFyaWFi bGUgd2UncmUgYXNzaWduaW5nIHRvLCB0byB1c2UgaW4gZXJyb3IKICAqIHJl cG9ydCBpZiBhbnkuICBQYXNzIG5hbWUgPT0gTlVMTCB0byBzdXBwcmVzcyB0 aGUgZXJyb3IgcmVwb3J0LgorICoKKyAqICIqdmFsaWQiIHJlcG9ydHMgd2hl dGhlciAidmFsdWUiIHdhcyBzeW50YWN0aWNhbGx5IHZhbGlkLCB1bmxlc3Mg dmFsaWQgPT0gTlVMTAogICovCiBib29sCi1QYXJzZVZhcmlhYmxlQm9vbChj b25zdCBjaGFyICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSkKK1BhcnNlVmFy aWFibGVCb29sKGNvbnN0IGNoYXIgKnZhbHVlLCBjb25zdCBjaGFyICpuYW1l LCBib29sICp2YWxpZCkKIHsKIAlzaXplX3QJCWxlbjsKIAorCWlmICh2YWxp ZCkKKwkJKnZhbGlkID0gdHJ1ZTsKIAlpZiAodmFsdWUgPT0gTlVMTCkKIAkJ cmV0dXJuIGZhbHNlOwkJCS8qIG5vdCBzZXQgLT4gYXNzdW1lICJvZmYiICov CiAKIAlsZW4gPSBzdHJsZW4odmFsdWUpOwogCi0JaWYgKHBnX3N0cm5jYXNl Y21wKHZhbHVlLCAidHJ1ZSIsIGxlbikgPT0gMCkKKwlpZiAobGVuID4gMCAm JiBwZ19zdHJuY2FzZWNtcCh2YWx1ZSwgInRydWUiLCBsZW4pID09IDApCiAJ CXJldHVybiB0cnVlOwotCWVsc2UgaWYgKHBnX3N0cm5jYXNlY21wKHZhbHVl LCAiZmFsc2UiLCBsZW4pID09IDApCisJZWxzZSBpZiAobGVuID4gMCAmJiBw Z19zdHJuY2FzZWNtcCh2YWx1ZSwgImZhbHNlIiwgbGVuKSA9PSAwKQogCQly ZXR1cm4gZmFsc2U7Ci0JZWxzZSBpZiAocGdfc3RybmNhc2VjbXAodmFsdWUs ICJ5ZXMiLCBsZW4pID09IDApCisJZWxzZSBpZiAobGVuID4gMCAmJiBwZ19z dHJuY2FzZWNtcCh2YWx1ZSwgInllcyIsIGxlbikgPT0gMCkKIAkJcmV0dXJu IHRydWU7Ci0JZWxzZSBpZiAocGdfc3RybmNhc2VjbXAodmFsdWUsICJubyIs IGxlbikgPT0gMCkKKwllbHNlIGlmIChsZW4gPiAwICYmIHBnX3N0cm5jYXNl Y21wKHZhbHVlLCAibm8iLCBsZW4pID09IDApCiAJCXJldHVybiBmYWxzZTsK IAkvKiAnbycgaXMgbm90IHVuaXF1ZSBlbm91Z2ggKi8KIAllbHNlIGlmIChw Z19zdHJuY2FzZWNtcCh2YWx1ZSwgIm9uIiwgKGxlbiA+IDIgPyBsZW4gOiAy KSkgPT0gMCkKQEAgLTExNiwxMCArMTIwLDE2IEBAIFBhcnNlVmFyaWFibGVC b29sKGNvbnN0IGNoYXIgKnZhbHVlLCBjb25zdCBjaGFyICpuYW1lKQogCQly ZXR1cm4gZmFsc2U7CiAJZWxzZQogCXsKLQkJLyogTlVMTCBpcyB0cmVhdGVk IGFzIGZhbHNlLCBzbyBhIG5vbi1tYXRjaGluZyB2YWx1ZSBpcyAndHJ1ZScg Ki8KKwkJLyoKKwkJICogTlVMTCBpcyB0cmVhdGVkIGFzIGZhbHNlLCBzbyBh IG5vbi1tYXRjaGluZyB2YWx1ZSBpcyAndHJ1ZScuCisJCSAqIEEgY2FsbGVy IHRoYXQgY2FyZXMgYWJvdXQgc3ludGFjdGljIGNvbmZvcm1hbmNlIHNob3Vs ZAorCQkgKiBjaGVjayAqdmFsaWQgdG8ga25vdyB3aGV0aGVyIHRoZSB2YWx1 ZSB3YXMgcmVjb2duaXplZC4KKwkJICovCiAJCWlmIChuYW1lKQotCQkJcHNx bF9lcnJvcigidW5yZWNvZ25pemVkIHZhbHVlIFwiJXNcIiBmb3IgXCIlc1wi OyBhc3N1bWluZyBcIiVzXCJcbiIsCi0JCQkJCSAgIHZhbHVlLCBuYW1lLCAi b24iKTsKKwkJCXBzcWxfZXJyb3IoInVucmVjb2duaXplZCB2YWx1ZSBcIiVz XCIgZm9yIFwiJXNcIjogYm9vbGVhbiBleHBlY3RlZFxuIiwKKwkJCQkJICAg dmFsdWUsIG5hbWUpOworCQlpZiAodmFsaWQpCisJCQkqdmFsaWQgPSBmYWxz ZTsKIAkJcmV0dXJuIHRydWU7CiAJfQogfQpAQCAtMTU0LDYgKzE2NCwzNSBA QCBQYXJzZVZhcmlhYmxlTnVtKGNvbnN0IGNoYXIgKnZhbCwKIAlyZXR1cm4g cmVzdWx0OwogfQogCisvKgorICogUmVhZCBudW1lcmljIHZhcmlhYmxlLCBv ciBkZWZhdWx0dmFsIGlmIGl0IGlzIG5vdCBzZXQuCisgKiBUcmFpbGluZyBj b250ZW50cyBhcmUgbm90IGFsbG93ZWQuCisgKiAidmFsaWQiIHBvaW50cyB0 byBhIGJvb2wgcmVwb3J0aW5nIHdoZXRoZXIgdGhlIHZhbHVlIHdhcyB2YWxp ZC4KKyAqLworaW50CitQYXJzZUNoZWNrVmFyaWFibGVOdW0oY29uc3QgY2hh ciAqdmFsLAorCQkJCQkgIGludCBkZWZhdWx0dmFsLAorCQkJCQkgIGJvb2wg KnZhbGlkKQoreworCWludAkJcmVzdWx0OworCisJaWYgKCF2YWwpCisJewor CQkqdmFsaWQgPSB0cnVlOworCQlyZXN1bHQgPSBkZWZhdWx0dmFsOworCX0K KwllbHNlCisJeworCQljaGFyCSAgICplbmQ7CisKKwkJZXJybm8gPSAwOwor CQlyZXN1bHQgPSBzdHJ0b2wodmFsLCAmZW5kLCAwKTsKKwkJKnZhbGlkID0g KHZhbFswXSAhPSAnXDAnICYmIGVycm5vID09IDAgJiYgKmVuZCA9PSAnXDAn KTsKKwl9CisKKwlyZXR1cm4gcmVzdWx0OworfQorCiBpbnQKIEdldFZhcmlh YmxlTnVtKFZhcmlhYmxlU3BhY2Ugc3BhY2UsCiAJCQkgICBjb25zdCBjaGFy ICpuYW1lLApAQCAtMjA1LDEzICsyNDQsMjYgQEAgU2V0VmFyaWFibGUoVmFy aWFibGVTcGFjZSBzcGFjZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hh ciAqdmFsdWUpCiAJewogCQlpZiAoc3RyY21wKGN1cnJlbnQtPm5hbWUsIG5h bWUpID09IDApCiAJCXsKLQkJCS8qIGZvdW5kIGVudHJ5LCBzbyB1cGRhdGUg Ki8KLQkJCWlmIChjdXJyZW50LT52YWx1ZSkKLQkJCQlmcmVlKGN1cnJlbnQt PnZhbHVlKTsKLQkJCWN1cnJlbnQtPnZhbHVlID0gcGdfc3RyZHVwKHZhbHVl KTsKLQkJCWlmIChjdXJyZW50LT5hc3NpZ25faG9vaykKLQkJCQkoKmN1cnJl bnQtPmFzc2lnbl9ob29rKSAoY3VycmVudC0+dmFsdWUpOwotCQkJcmV0dXJu IHRydWU7CisJCQkvKgorCQkJICogRm91bmQgZW50cnksIHNvIHVwZGF0ZSwg dW5sZXNzIGEgaG9vayByZXR1cm5zIGZhbHNlLgorCQkJICogVGhlIGhvb2sg bmVlZHMgdGhlIHZhbHVlIGluIGEgYnVmZmVyIHdpdGggdGhlIHNhbWUgbGlm ZXNwYW4KKwkJCSAqIGFzIHRoZSB2YXJpYWJsZSwgc28gYWxsb2NhdGUgaXQg cmlnaHQgYXdheSwgZXZlbiBpZiBpdCBuZWVkcworCQkJICogdG8gYmUgZnJl ZWQganVzdCBhZnRlciB3aGVuIHRoZSBob29rIHJldHVybnMgZmFsc2UuCisJ CQkgKi8KKwkJCWNoYXIgKm5ld192YWx1ZSA9IHBnX3N0cmR1cCh2YWx1ZSk7 CisKKwkJCWJvb2wgY29uZmlybWVkID0gY3VycmVudC0+YXNzaWduX2hvb2sg PworCQkJCQkJCSgqY3VycmVudC0+YXNzaWduX2hvb2spIChuZXdfdmFsdWUp IDogdHJ1ZTsKKworCQkJaWYgKGNvbmZpcm1lZCkKKwkJCXsKKwkJCQlwZ19m cmVlKGN1cnJlbnQtPnZhbHVlKTsKKwkJCQljdXJyZW50LT52YWx1ZSA9IG5l d192YWx1ZTsKKwkJCX0KKwkJCWVsc2UKKwkJCQlwZ19mcmVlKG5ld192YWx1 ZSk7IC8qIGFuZCBjdXJyZW50LT52YWx1ZSBpcyBsZWZ0IHVuY2hhbmdlZCAq LworCisJCQlyZXR1cm4gY29uZmlybWVkOwogCQl9CiAJfQogCkBAIC0yNDgs OCArMzAwLDcgQEAgU2V0VmFyaWFibGVBc3NpZ25Ib29rKFZhcmlhYmxlU3Bh Y2Ugc3BhY2UsIGNvbnN0IGNoYXIgKm5hbWUsIFZhcmlhYmxlQXNzaWduSG9v awogCQl7CiAJCQkvKiBmb3VuZCBlbnRyeSwgc28gdXBkYXRlICovCiAJCQlj dXJyZW50LT5hc3NpZ25faG9vayA9IGhvb2s7Ci0JCQkoKmhvb2spIChjdXJy ZW50LT52YWx1ZSk7Ci0JCQlyZXR1cm4gdHJ1ZTsKKwkJCXJldHVybiAoKmhv b2spIChjdXJyZW50LT52YWx1ZSk7CiAJCX0KIAl9CiAKQEAgLTI2MCw4ICsz MTEsNyBAQCBTZXRWYXJpYWJsZUFzc2lnbkhvb2soVmFyaWFibGVTcGFjZSBz cGFjZSwgY29uc3QgY2hhciAqbmFtZSwgVmFyaWFibGVBc3NpZ25Ib29rCiAJ Y3VycmVudC0+YXNzaWduX2hvb2sgPSBob29rOwogCWN1cnJlbnQtPm5leHQg PSBOVUxMOwogCXByZXZpb3VzLT5uZXh0ID0gY3VycmVudDsKLQkoKmhvb2sp IChOVUxMKTsKLQlyZXR1cm4gdHJ1ZTsKKwlyZXR1cm4gKCpob29rKSAoTlVM TCk7CiB9CiAKIGJvb2wKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC92YXJp YWJsZXMuaCBiL3NyYy9iaW4vcHNxbC92YXJpYWJsZXMuaAppbmRleCBkN2Ew NWExLi4zODM5NmJhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdmFyaWFi bGVzLmgKKysrIGIvc3JjL2Jpbi9wc3FsL3ZhcmlhYmxlcy5oCkBAIC0yMCw3 ICsyMCw3IEBACiAgKiBOb3RlOiBpZiB2YWx1ZSA9PSBOVUxMIHRoZW4gdGhl IHZhcmlhYmxlIGlzIGxvZ2ljYWxseSB1bnNldCwgYnV0IHdlIGFyZQogICog a2VlcGluZyB0aGUgc3RydWN0IGFyb3VuZCBzbyBhcyBub3QgdG8gZm9yZ2V0 IGFib3V0IGl0cyBob29rIGZ1bmN0aW9uLgogICovCi10eXBlZGVmIHZvaWQg KCpWYXJpYWJsZUFzc2lnbkhvb2spIChjb25zdCBjaGFyICpuZXd2YWwpOwor dHlwZWRlZiBib29sICgqVmFyaWFibGVBc3NpZ25Ib29rKSAoY29uc3QgY2hh ciAqbmV3dmFsKTsKIAogc3RydWN0IF92YXJpYWJsZQogewpAQCAtMzUsMTEg KzM1LDE0IEBAIHR5cGVkZWYgc3RydWN0IF92YXJpYWJsZSAqVmFyaWFibGVT cGFjZTsKIFZhcmlhYmxlU3BhY2UgQ3JlYXRlVmFyaWFibGVTcGFjZSh2b2lk KTsKIGNvbnN0IGNoYXIgKkdldFZhcmlhYmxlKFZhcmlhYmxlU3BhY2Ugc3Bh Y2UsIGNvbnN0IGNoYXIgKm5hbWUpOwogCi1ib29sCQlQYXJzZVZhcmlhYmxl Qm9vbChjb25zdCBjaGFyICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSk7Citi b29sCQlQYXJzZVZhcmlhYmxlQm9vbChjb25zdCBjaGFyICp2YWx1ZSwgY29u c3QgY2hhciAqbmFtZSwgYm9vbCAqdmFsaWQpOwogaW50IFBhcnNlVmFyaWFi bGVOdW0oY29uc3QgY2hhciAqdmFsLAogCQkJCSBpbnQgZGVmYXVsdHZhbCwK IAkJCQkgaW50IGZhdWx0dmFsLAogCQkJCSBib29sIGFsbG93dHJhaWwpOwor aW50IFBhcnNlQ2hlY2tWYXJpYWJsZU51bShjb25zdCBjaGFyICp2YWwsCisJ CQkJCQkgIGludCBkZWZhdWx0dmFsLAorCQkJCQkJICBib29sICp2YWxpZCk7 CiBpbnQgR2V0VmFyaWFibGVOdW0oVmFyaWFibGVTcGFjZSBzcGFjZSwKIAkJ CSAgIGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkgICBpbnQgZGVmYXVsdHZhbCwK ------------=_1479903453-44826-1 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers ------------=_1479903453-44826-1--