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 1oeAqj-0004Dr-Mi for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Sep 2022 07:54:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oeAqi-0003qo-93 for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Sep 2022 07:54:20 +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 1oeAqh-0003qd-Ss for pgsql-hackers@lists.postgresql.org; Fri, 30 Sep 2022 07:54:19 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oeAqa-0004rn-CI for pgsql-hackers@lists.postgresql.org; Fri, 30 Sep 2022 07:54:19 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id CF16160F10; Fri, 30 Sep 2022 16:54:06 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.7 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_1c07e1dda58cecf73186f43ed53bb8d8" Content-Transfer-Encoding: 8bit Date: Fri, 30 Sep 2022 16:54:06 +0900 From: bt22nakamorit To: Fujii Masao Cc: Kyotaro Horiguchi , pgsql-hackers@lists.postgresql.org Subject: Re: Make ON_ERROR_STOP stop on shell script failure In-Reply-To: References: <20220916.173035.322733707258561235.horikyota.ntt@gmail.com> <4c61d434cb72b2237b3279797b2a387f@oss.nttdata.com> <8a022f2c8de93ea79116f0b7eb42248a@oss.nttdata.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: X-Sender: bt22nakamorit@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_1c07e1dda58cecf73186f43ed53bb8d8 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed 2022-09-21 11:45 に Fujii Masao wrote: > We can execute the shell commands via psql in various ways > other than \! meta-command. For example, > > * `command` > * \g | command > * \gx | command > * \o | command > * \w | command > * \copy ... program 'command' > > ON_ERROR_STOP should handle not only \! but also all the above in the > same way? > > > One concern about this patch is that some applications already depend > on > the current behavior of ON_ERROR_STOP, i.e., psql doesn't stop even > when > the shell command returns non-zero exit code. If so, we might need to > extend ON_ERROR_STOP so that it accepts the following setting values. > > * off - don't stop even when either sql or shell fails (same as the > current behavior) > * on or sql - stop only whensql fails (same as the current behavior) > * shell - stop only when shell fails > * all - stop when either sql or shell fails > > Thought? > > Regards, I agree that some applications may depend on the behavior of previous ON_ERROR_STOP. I created a patch that implements off, on, shell, and all option for ON_ERROR_STOP. I also edited the code for \g, \o, \w, and \set in addition to \! to return exit status of shell commands for ON_ERROR_STOP. There were discussions regarding the error messages for when shell command fails. I have found that \copy already handles exit status of shell commands when it executes one, so I copied the messages from there. More specifically, I referred to """bool do_copy(const char *args)""" in src/bin/psql/copy.c Any feedback would be very much appreciated. Tatsu --=_1c07e1dda58cecf73186f43ed53bb8d8 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=stop_error2.patch Content-Disposition: attachment; filename=stop_error2.patch; size=9003 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvcHNxbC1yZWYuc2dtbAppbmRleCA5NDk0ZjI4MDYzLi45NDQxYjBiOTMxIDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9wc3FsLXJlZi5zZ21sCkBAIC00MTQzLDcgKzQxNDMsMTIgQEAgYmFyCiAgICAgICAgIDxwYXJh PgogICAgICAgICBCeSBkZWZhdWx0LCBjb21tYW5kIHByb2Nlc3NpbmcgY29udGludWVzIGFmdGVy IGFuIGVycm9yLiAgV2hlbiB0aGlzCiAgICAgICAgIHZhcmlhYmxlIGlzIHNldCB0byA8bGl0ZXJh bD5vbjwvbGl0ZXJhbD4sIHByb2Nlc3Npbmcgd2lsbCBpbnN0ZWFkIHN0b3AKLSAgICAgICAgaW1t ZWRpYXRlbHkuICBJbiBpbnRlcmFjdGl2ZSBtb2RlLAorICAgICAgICBpbW1lZGlhdGVseSB1cG9u IGFuIGVycm9yIGluIFNRTCBxdWVyeS4gV2hlbiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0bworICAg ICAgICA8bGl0ZXJhbD5zaGVsbDwvbGl0ZXJhbD4sIGEgbm9uemVybyBleGl0IHN0YXR1cyBvZiBh IHNoZWxsIGNvbW1hbmQsCisgICAgICAgIHdoaWNoIGluZGljYXRlcyBmYWlsdXJlLCBpcyBpbnRl cnByZXRlZCBhcyBhbiBlcnJvciB0aGF0IHN0b3BzIHRoZSBwcm9jZXNzaW5nLgorICAgICAgICBX aGVuIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvIDxsaXRlcmFsPmFsbDwvbGl0ZXJhbD4sIGVycm9y cyBmcm9tIGJvdGgKKyAgICAgICAgU1FMIHF1ZXJpZXMgYW5kIHNoZWxsIGNvbW1hbmRzIGNhbiBz dG9wIHRoZSBwcm9jZXNzaW5nLgorICAgICAgICBJbiBpbnRlcmFjdGl2ZSBtb2RlLAogICAgICAg ICA8YXBwbGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+IHdpbGwgcmV0dXJuIHRvIHRoZSBjb21t YW5kIHByb21wdDsKICAgICAgICAgb3RoZXJ3aXNlLCA8YXBwbGljYXRpb24+cHNxbDwvYXBwbGlj YXRpb24+IHdpbGwgZXhpdCwgcmV0dXJuaW5nCiAgICAgICAgIGVycm9yIGNvZGUgMyB0byBkaXN0 aW5ndWlzaCB0aGlzIGNhc2UgZnJvbSBmYXRhbCBlcnJvcgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w c3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4vcHNxbC9jb21tYW5kLmMKaW5kZXggYTE0MTE0NmU3MC4u NDBhMTEzNjMwZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYworKysgYi9zcmMv YmluL3BzcWwvY29tbWFuZC5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiZGVzY3JpYmUu aCIKICNpbmNsdWRlICJmZV91dGlscy9jYW5jZWwuaCIKICNpbmNsdWRlICJmZV91dGlscy9wcmlu dC5oIgorI2luY2x1ZGUgImZlX3V0aWxzL3BzcWxzY2FuX2ludC5oIgogI2luY2x1ZGUgImZlX3V0 aWxzL3N0cmluZ191dGlscy5oIgogI2luY2x1ZGUgImhlbHAuaCIKICNpbmNsdWRlICJpbnB1dC5o IgpAQCAtMjM1NSw5ICsyMzU2LDEzIEBAIGV4ZWNfY29tbWFuZF9zZXQoUHNxbFNjYW5TdGF0ZSBz Y2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gpCiAJCQkgKi8KIAkJCWNoYXIJICAgKm5ld3Zh bDsKIAkJCWNoYXIJICAgKm9wdDsKKwkJCVBRRXhwQnVmZmVyIG91dHB1dF9idWYgPSBzY2FuX3N0 YXRlLT5vdXRwdXRfYnVmOwogCiAJCQlvcHQgPSBwc3FsX3NjYW5fc2xhc2hfb3B0aW9uKHNjYW5f c3RhdGUsCiAJCQkJCQkJCQkJIE9UX05PUk1BTCwgTlVMTCwgZmFsc2UpOworCQkJaWYgKG91dHB1 dF9idWYtPmxlbiA+PSBvdXRwdXRfYnVmLT5tYXhsZW4KKwkJCQkmJiAocHNldC5vbl9lcnJvcl9z dG9wID09IFBTUUxfRVJST1JfU1RPUF9TSEVMTCB8fCBwc2V0Lm9uX2Vycm9yX3N0b3AgPT0gUFNR TF9FUlJPUl9TVE9QX0FMTCkpCisJCQkJc3VjY2VzcyA9IGZhbHNlOwogCQkJbmV3dmFsID0gcGdf c3RyZHVwKG9wdCA/IG9wdCA6ICIiKTsKIAkJCWZyZWUob3B0KTsKIApAQCAtMjY5Myw4ICsyNjk4 LDI1IEBAIGV4ZWNfY29tbWFuZF93cml0ZShQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wg YWN0aXZlX2JyYW5jaCwKIAkJCWVsc2UgaWYgKHByZXZpb3VzX2J1ZiAmJiBwcmV2aW91c19idWYt PmxlbiA+IDApCiAJCQkJZnByaW50ZihmZCwgIiVzXG4iLCBwcmV2aW91c19idWYtPmRhdGEpOwog Ci0JCQlpZiAoaXNfcGlwZSkKKwkJCWlmIChpc19waXBlKSB7CiAJCQkJcmVzdWx0ID0gcGNsb3Nl KGZkKTsKKworCQkJCWlmIChyZXN1bHQgIT0gMCkKKwkJCQl7CisJCQkJCWlmIChyZXN1bHQgPCAw KQorCQkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2xvc2UgcGlwZSB0byBleHRlcm5hbCBj b21tYW5kOiAlbSIpOworCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCWNoYXIgKnJlYXNvbiA9IHdh aXRfcmVzdWx0X3RvX3N0cihyZXN1bHQpOworCisJCQkJCQlwZ19sb2dfZXJyb3IoIiVzOiAlcyIs IGZuYW1lICsgMSwKKwkJCQkJCQkJCXJlYXNvbiA/IHJlYXNvbiA6ICIiKTsKKwkJCQkJCWZyZWUo cmVhc29uKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlpZiAocHNldC5vbl9lcnJvcl9zdG9wID09IFBT UUxfRVJST1JfU1RPUF9TSEVMTCB8fCBwc2V0Lm9uX2Vycm9yX3N0b3AgPT0gUFNRTF9FUlJPUl9T VE9QX0FMTCkKKwkJCQkJc3RhdHVzID0gUFNRTF9DTURfRVJST1I7CisJCQl9CiAJCQllbHNlCiAJ CQkJcmVzdWx0ID0gZmNsb3NlKGZkKTsKIApAQCAtNDk4NCwxMCArNTAwNiwxOSBAQCBkb19zaGVs bChjb25zdCBjaGFyICpjb21tYW5kKQogCWVsc2UKIAkJcmVzdWx0ID0gc3lzdGVtKGNvbW1hbmQp OwogCi0JaWYgKHJlc3VsdCA9PSAxMjcgfHwgcmVzdWx0ID09IC0xKQorCWlmIChyZXN1bHQgIT0g MCkKIAl7Ci0JCXBnX2xvZ19lcnJvcigiXFwhOiBmYWlsZWQiKTsKLQkJcmV0dXJuIGZhbHNlOwor CQlpZiAocmVzdWx0IDwgMCkKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNsb3NlIHBpcGUg dG8gZXh0ZXJuYWwgY29tbWFuZDogJW0iKTsKKwkJZWxzZQorCQl7CisJCQljaGFyICpyZWFzb24g PSB3YWl0X3Jlc3VsdF90b19zdHIocmVzdWx0KTsKKworCQkJcGdfbG9nX2Vycm9yKCIlczogJXMi LCBjb21tYW5kLCByZWFzb24gPyByZWFzb24gOiAiIik7CisJCQlmcmVlKHJlYXNvbik7CisJCX0K KwkJaWYgKHBzZXQub25fZXJyb3Jfc3RvcCA9PSBQU1FMX0VSUk9SX1NUT1BfU0hFTEwgfHwgcHNl dC5vbl9lcnJvcl9zdG9wID09IFBTUUxfRVJST1JfU1RPUF9BTEwpCisJCQlyZXR1cm4gZmFsc2U7 CiAJfQogCXJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1vbi5j IGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jCmluZGV4IGU2MTFlMzI2NmQuLjBmNmY3NDQ4ZDEgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9jb21tb24uYworKysgYi9zcmMvYmluL3BzcWwvY29tbW9u LmMKQEAgLTkwLDYgKzkwLDcgQEAgc2V0UUZvdXQoY29uc3QgY2hhciAqZm5hbWUpCiB7CiAJRklM RQkgICAqZm91dDsKIAlib29sCQlpc19waXBlOworCWJvb2wJCXN0YXR1cyA9IHRydWU7CiAKIAkv KiBGaXJzdCBtYWtlIHN1cmUgd2UgY2FuIG9wZW4gdGhlIG5ldyBvdXRwdXQgZmlsZS9waXBlICov CiAJaWYgKCFvcGVuUXVlcnlPdXRwdXRGaWxlKGZuYW1lLCAmZm91dCwgJmlzX3BpcGUpKQpAQCAt OTksNyArMTAwLDI0IEBAIHNldFFGb3V0KGNvbnN0IGNoYXIgKmZuYW1lKQogCWlmIChwc2V0LnF1 ZXJ5Rm91dCAmJiBwc2V0LnF1ZXJ5Rm91dCAhPSBzdGRvdXQgJiYgcHNldC5xdWVyeUZvdXQgIT0g c3RkZXJyKQogCXsKIAkJaWYgKHBzZXQucXVlcnlGb3V0UGlwZSkKLQkJCXBjbG9zZShwc2V0LnF1 ZXJ5Rm91dCk7CisJCXsKKwkJCWludCBwY2xvc2VfcmMgPSBwY2xvc2UocHNldC5xdWVyeUZvdXQp OworCQkJaWYgKHBjbG9zZV9yYyAhPSAwKQorCQkJeworCQkJCWlmIChwY2xvc2VfcmMgPCAwKQor CQkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBwaXBlIHRvIGV4dGVybmFsIGNvbW1h bmQ6ICVtIik7CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJY2hhciAqcmVhc29uID0gd2FpdF9yZXN1 bHRfdG9fc3RyKHBjbG9zZV9yYyk7CisKKwkJCQkJcGdfbG9nX2Vycm9yKCJjb21tYW5kIGZhaWx1 cmU6ICVzIiwKKwkJCQkJCQkJIHJlYXNvbiA/IHJlYXNvbiA6ICIiKTsKKwkJCQkJZnJlZShyZWFz b24pOworCQkJCX0KKwkJCQlpZiAoKHBzZXQub25fZXJyb3Jfc3RvcCA9PSBQU1FMX0VSUk9SX1NU T1BfU0hFTEwgfHwgcHNldC5vbl9lcnJvcl9zdG9wID09IFBTUUxfRVJST1JfU1RPUF9BTEwpKQor CQkJCQlzdGF0dXMgPSBmYWxzZTsKKwkJCX0KKwkJfQogCQllbHNlCiAJCQlmY2xvc2UocHNldC5x dWVyeUZvdXQpOwogCX0KQEAgLTExMSw3ICsxMjksNyBAQCBzZXRRRm91dChjb25zdCBjaGFyICpm bmFtZSkKIAlzZXRfc2lncGlwZV90cmFwX3N0YXRlKGlzX3BpcGUpOwogCXJlc3RvcmVfc2lncGlw ZV90cmFwKCk7CiAKLQlyZXR1cm4gdHJ1ZTsKKwlyZXR1cm4gc3RhdHVzOwogfQogCiAKQEAgLTY4 OSw3ICs3MDcsMjIgQEAgUHJpbnRRdWVyeVR1cGxlcyhjb25zdCBQR3Jlc3VsdCAqcmVzdWx0LCBj b25zdCBwcmludFF1ZXJ5T3B0ICpvcHQsIEZJTEUgKnByaW50UXUKIAogCQlpZiAoaXNfcGlwZSkK IAkJewotCQkJcGNsb3NlKGZvdXQpOworCQkJaW50IHBjbG9zZV9yYyA9IHBjbG9zZShmb3V0KTsK KwkJCWlmIChwY2xvc2VfcmMgIT0gMCkKKwkJCXsKKwkJCQlpZiAocGNsb3NlX3JjIDwgMCkKKwkJ CQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2xvc2UgcGlwZSB0byBleHRlcm5hbCBjb21tYW5k OiAlbSIpOworCQkJCWVsc2UKKwkJCQl7CisJCQkJCWNoYXIgKnJlYXNvbiA9IHdhaXRfcmVzdWx0 X3RvX3N0cihwY2xvc2VfcmMpOworCisJCQkJCXBnX2xvZ19lcnJvcigiJXM6ICVzIiwgcHNldC5n Zm5hbWUgKyAxLAorCQkJCQkJCQkgcmVhc29uID8gcmVhc29uIDogIiIpOworCQkJCQlmcmVlKHJl YXNvbik7CisJCQkJfQorCQkJCWlmIChwc2V0Lm9uX2Vycm9yX3N0b3AgPT0gUFNRTF9FUlJPUl9T VE9QX1NIRUxMIHx8IHBzZXQub25fZXJyb3Jfc3RvcCA9PSBQU1FMX0VSUk9SX1NUT1BfQUxMKQor CQkJCQlvayA9IGZhbHNlOworCQkJfQogCQkJcmVzdG9yZV9zaWdwaXBlX3RyYXAoKTsKIAkJfQog CQllbHNlCkBAIC0xNDI5LDcgKzE0NjIsNyBAQCBEZXNjcmliZVF1ZXJ5KGNvbnN0IGNoYXIgKnF1 ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYykKICAqIEZvciBvdGhlciBjb21tYW5kcywgdGhlIHJl c3VsdHMgYXJlIHByb2Nlc3NlZCBub3JtYWxseSwgZGVwZW5kaW5nIG9uIHRoZWlyCiAgKiBzdGF0 dXMuCiAgKgotICogUmV0dXJucyAxIG9uIGNvbXBsZXRlIHN1Y2Nlc3MsIDAgb24gaW50ZXJydXB0 IGFuZCAtMSBvciBlcnJvcnMuICBQb3NzaWJsZQorICogUmV0dXJucyAxIG9uIGNvbXBsZXRlIHN1 Y2Nlc3MsIDAgb24gaW50ZXJydXB0IGFuZCAtMSBvbiBlcnJvcnMuICBQb3NzaWJsZQogICogZmFp bHVyZSBtb2RlcyBpbmNsdWRlIHB1cmVseSBjbGllbnQtc2lkZSBwcm9ibGVtczsgY2hlY2sgdGhl IHRyYW5zYWN0aW9uCiAgKiBzdGF0dXMgZm9yIHRoZSBzZXJ2ZXItc2lkZSBvcGluaW9uLgogICoK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9wc3Fsc2NhbnNsYXNoLmwgYi9zcmMvYmluL3BzcWwv cHNxbHNjYW5zbGFzaC5sCmluZGV4IGE0NjdiNzIxNDQuLjhlNWY1YjUwMTAgMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcHNxbC9wc3Fsc2NhbnNsYXNoLmwKKysrIGIvc3JjL2Jpbi9wc3FsL3BzcWxzY2Fu c2xhc2gubApAQCAtNTUsNiArNTUsMTAgQEAgc3RhdGljIGludAliYWNrdGlja19zdGFydF9vZmZz ZXQ7CiAjZGVmaW5lIExFWFJFU19PSwkJCTEJLyogT0sgY29tcGxldGlvbiBvZiBiYWNrc2xhc2gg YXJndW1lbnQgKi8KIAogCisvKiBjb21tYW5kIGV4ZWN1dGlvbiBpbiBldmFsdWF0ZV9iYWNrdGlj aygpIHJlc3VsdHMgaW4gZXJyb3IqLworI2RlZmluZSBDTURfRVJSCQkJCS0xCisKKwogc3RhdGlj IHZvaWQgZXZhbHVhdGVfYmFja3RpY2soUHNxbFNjYW5TdGF0ZSBzdGF0ZSk7CiAKICNkZWZpbmUg RUNITyBwc3Fsc2Nhbl9lbWl0KGN1cl9zdGF0ZSwgeXl0ZXh0LCB5eWxlbmcpCkBAIC04MDAsMTAg KzgwNCwyMyBAQCBldmFsdWF0ZV9iYWNrdGljayhQc3FsU2NhblN0YXRlIHN0YXRlKQogCQl9IHdo aWxlICghZmVvZihmZCkpOwogCX0KIAotCWlmIChmZCAmJiBwY2xvc2UoZmQpID09IC0xKQorCWlm IChmZCkKIAl7Ci0JCXBnX2xvZ19lcnJvcigiJXM6ICVtIiwgY21kKTsKLQkJZXJyb3IgPSB0cnVl OworCQlpbnQgcGNsb3NlX3JjID0gcGNsb3NlKGZkKTsKKwkJaWYgKHBjbG9zZV9yYyAhPSAwKQor CQl7CisJCQlpZiAocGNsb3NlX3JjIDwgMCkKKwkJCQlwZ19sb2dfZXJyb3IoIiVzOiAlbSIsIGNt ZCk7CisJCQllbHNlCisJCQl7CisJCQkJY2hhcgkgICAqcmVhc29uID0gd2FpdF9yZXN1bHRfdG9f c3RyKHBjbG9zZV9yYyk7CisKKwkJCQlwZ19sb2dfZXJyb3IoIiVzOiAlcyIsIGNtZCwKKwkJCQkJ CQkJcmVhc29uID8gcmVhc29uIDogIiIpOworCQkJCWZyZWUocmVhc29uKTsKKwkJCX0KKwkJCWVy cm9yID0gdHJ1ZTsKKwkJfQogCX0KIAogCWlmIChQUUV4cEJ1ZmZlckRhdGFCcm9rZW4oY21kX291 dHB1dCkpCkBAIC04MjUsNiArODQyLDEyIEBAIGV2YWx1YXRlX2JhY2t0aWNrKFBzcWxTY2FuU3Rh dGUgc3RhdGUpCiAJCQljbWRfb3V0cHV0Lmxlbi0tOwogCQlhcHBlbmRCaW5hcnlQUUV4cEJ1ZmZl cihvdXRwdXRfYnVmLCBjbWRfb3V0cHV0LmRhdGEsIGNtZF9vdXRwdXQubGVuKTsKIAl9CisJLyog SWYgZXJyb3IsIHNldCBsZW4gdG8gYSB2YWx1ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwKKwkgKiB0 byBtYXhsZW4gdG8gaW5kaWNhdGUgZXJyb3IgaW4gY29tbWFuZCBleGVjdXRpb24uCisJICogVGhp cyBjYW4gaGVscCB3aXRoIE9OX0VSUk9SX1NUT1AuCisJICovCisJZWxzZQorCQlvdXRwdXRfYnVm LT5sZW4gPSBDTURfRVJSOwogCiAJdGVybVBRRXhwQnVmZmVyKCZjbWRfb3V0cHV0KTsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9zZXR0aW5ncy5oIGIvc3JjL2Jpbi9wc3FsL3NldHRpbmdz LmgKaW5kZXggMjM5OWNmZmEzZi4uNTRlN2FlYmRkYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3Fs L3NldHRpbmdzLmgKKysrIGIvc3JjL2Jpbi9wc3FsL3NldHRpbmdzLmgKQEAgLTU0LDYgKzU0LDE0 IEBAIHR5cGVkZWYgZW51bQogCVBTUUxfRVJST1JfUk9MTEJBQ0tfT04KIH0gUFNRTF9FUlJPUl9S T0xMQkFDSzsKIAordHlwZWRlZiBlbnVtCit7CisJUFNRTF9FUlJPUl9TVE9QX09GRiwKKwlQU1FM X0VSUk9SX1NUT1BfT04sCisJUFNRTF9FUlJPUl9TVE9QX1NIRUxMLAorCVBTUUxfRVJST1JfU1RP UF9BTEwKK30gUFNRTF9FUlJPUl9TVE9QOworCiB0eXBlZGVmIGVudW0KIHsKIAlQU1FMX0NPTVBf Q0FTRV9QUkVTRVJWRV9VUFBFUiwKQEAgLTEzMCw3ICsxMzgsNiBAQCB0eXBlZGVmIHN0cnVjdCBf cHNxbFNldHRpbmdzCiAJICogZnVuY3Rpb25zLgogCSAqLwogCWJvb2wJCWF1dG9jb21taXQ7Ci0J Ym9vbAkJb25fZXJyb3Jfc3RvcDsKIAlib29sCQlxdWlldDsKIAlib29sCQlzaW5nbGVsaW5lOwog CWJvb2wJCXNpbmdsZXN0ZXA7CkBAIC0xNDIsNiArMTQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX3Bz cWxTZXR0aW5ncwogCVBTUUxfRUNITwllY2hvOwogCVBTUUxfRUNIT19ISURERU4gZWNob19oaWRk ZW47CiAJUFNRTF9FUlJPUl9ST0xMQkFDSyBvbl9lcnJvcl9yb2xsYmFjazsKKwlQU1FMX0VSUk9S X1NUT1AJCW9uX2Vycm9yX3N0b3A7CiAJUFNRTF9DT01QX0NBU0UgY29tcF9jYXNlOwogCUhpc3RD b250cm9sIGhpc3Rjb250cm9sOwogCWNvbnN0IGNoYXIgKnByb21wdDE7CmRpZmYgLS1naXQgYS9z cmMvYmluL3BzcWwvc3RhcnR1cC5jIGIvc3JjL2Jpbi9wc3FsL3N0YXJ0dXAuYwppbmRleCBmNWI5 ZTI2OGYyLi5jYjNmYTg5NDAwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvc3RhcnR1cC5jCisr KyBiL3NyYy9iaW4vcHNxbC9zdGFydHVwLmMKQEAgLTg3NywxMiArODc3LDYgQEAgYXV0b2NvbW1p dF9ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkKIAlyZXR1cm4gUGFyc2VWYXJpYWJsZUJvb2wobmV3 dmFsLCAiQVVUT0NPTU1JVCIsICZwc2V0LmF1dG9jb21taXQpOwogfQogCi1zdGF0aWMgYm9vbAot b25fZXJyb3Jfc3RvcF9ob29rKGNvbnN0IGNoYXIgKm5ld3ZhbCkKLXsKLQlyZXR1cm4gUGFyc2VW YXJpYWJsZUJvb2wobmV3dmFsLCAiT05fRVJST1JfU1RPUCIsICZwc2V0Lm9uX2Vycm9yX3N0b3Ap OwotfQotCiBzdGF0aWMgYm9vbAogcXVpZXRfaG9vayhjb25zdCBjaGFyICpuZXd2YWwpCiB7CkBA IC0xMDM2LDYgKzEwMzAsMjkgQEAgb25fZXJyb3Jfcm9sbGJhY2tfaG9vayhjb25zdCBjaGFyICpu ZXd2YWwpCiAJcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sCitvbl9lcnJvcl9zdG9wX2hv b2soY29uc3QgY2hhciAqbmV3dmFsKQoreworCUFzc2VydChuZXd2YWwgIT0gTlVMTCk7CQkvKiBl bHNlIHN1YnN0aXR1dGUgaG9vayBtZXNzZWQgdXAgKi8KKwlpZiAocGdfc3RyY2FzZWNtcChuZXd2 YWwsICJzaGVsbCIpID09IDApCisJCXBzZXQub25fZXJyb3Jfc3RvcCA9IFBTUUxfRVJST1JfU1RP UF9TSEVMTDsKKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKG5ld3ZhbCwgImFsbCIpID09IDApCisJ CXBzZXQub25fZXJyb3Jfc3RvcCA9IFBTUUxfRVJST1JfU1RPUF9BTEw7CisJZWxzZQorCXsKKwkJ Ym9vbAkJb25fb2ZmOworCisJCWlmIChQYXJzZVZhcmlhYmxlQm9vbChuZXd2YWwsIE5VTEwsICZv bl9vZmYpKQorCQkJcHNldC5vbl9lcnJvcl9zdG9wID0gb25fb2ZmID8gUFNRTF9FUlJPUl9TVE9Q X09OIDogUFNRTF9FUlJPUl9TVE9QX09GRjsKKwkJZWxzZQorCQl7CisJCQlQc3FsVmFyRW51bUVy cm9yKCJPTl9FUlJPUl9TVE9QIiwgbmV3dmFsLCAib24sIG9mZiwgc2hlbGwsIGFsbCIpOworCQkJ cmV0dXJuIGZhbHNlOworCQl9CisJfQorCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMgY2hhciAq CiBjb21wX2tleXdvcmRfY2FzZV9zdWJzdGl0dXRlX2hvb2soY2hhciAqbmV3dmFsKQogewoK --=_1c07e1dda58cecf73186f43ed53bb8d8--