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 1mzwv2-0002d2-7o for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Dec 2021 08:24:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mzwv1-0007Xc-45 for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Dec 2021 08:24:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mzwv0-0007XS-Hw for pgsql-hackers@lists.postgresql.org; Wed, 22 Dec 2021 08:24:14 +0000 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mzwux-0005jI-90 for pgsql-hackers@postgresql.org; Wed, 22 Dec 2021 08:24:13 +0000 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id 9485932005C1 for ; Wed, 22 Dec 2021 03:24:09 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Wed, 22 Dec 2021 03:24:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=IY1OvFlENNuWT8jqq57hSbBTq52om Gm0uvvmqt1VT3c=; b=kNmYGRKC5U/pFRm9iBboKhH1c1iIbZAAtCX145hmWdDrQ vl4PoPEryG5FLZfOQ4jk253rkftuQ1ar2/H+vN8cppth87XHn07UUAueTMli31rm IIusMuNDmBwgWDYsD2ePbI2N6yGE1nqlq18554CdFjJ53IU8/pyUm0uIRSbAzyU+ HgjXS2EqBSHcwaSI7twUQrOkHqIvwdACVehQmi+rNZsxIG5ppB+rS9xQ0RLSBtEH z/jfPEWwwJ8GxNnrDDkAY1DVVdZJbOeqDB8wUHF1+bqx8emzuLUITHzJWkPMpoOs 2XSIy9E4aCLaX+1025JlQl15621+Zy5b/VE5k01/w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvuddruddthedguddvtdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurheptgfkffggfgfhuffvsehmtderre dtfeejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgv ihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhmqeenucggtffrrghtth gvrhhnpeetveeuvdeikeeigefhveffhffhvdejveelleefieekieekvdffgeetkedutdef leenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvg htvghrrdgvihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 22 Dec 2021 03:24:07 -0500 (EST) Content-Type: multipart/mixed; boundary="------------riggRl0fRP5rRbxq6D8i3lr0" Message-ID: <3375ffd8-d71c-2565-e348-a597d6e739e3@enterprisedb.com> Date: Wed, 22 Dec 2021 09:24:06 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.4.0 Content-Language: en-US From: Peter Eisentraut Subject: fix crash with Python 3.11 To: pgsql-hackers 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. --------------riggRl0fRP5rRbxq6D8i3lr0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This patch needs another close pass and possibly some refactoring to avoid copy-and-paste, but I'm putting this out here, since people are already testing with Python 3.11 and will surely run into this problem. The way plpy.commit() and plpy.rollback() handle errors is not ideal. They end up just longjmping back to the main loop, without telling the Python interpreter about it. This hasn't been a problem so far, apparently, but with Python 3.11-to-be, this appears to cause corruption in the state of the Python interpreter. This is readily reproducible and will cause crashes in the plpython_transaction test. The fix is that we need to catch the PostgreSQL error and turn it into a Python exception, like we do for other places where plpy.* methods call into PostgreSQL internals. --------------riggRl0fRP5rRbxq6D8i3lr0 Content-Type: text/plain; charset=UTF-8; name="v1-0001-Set-Python-exception-after-failed-commit-or-rollb.patch" Content-Disposition: attachment; filename*0="v1-0001-Set-Python-exception-after-failed-commit-or-rollb.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzMWJiZDYyZjQzY2ViMDU0MmUwYTMxMWRjMjg3MDRmZDcwMmNhZWIzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCAyMiBEZWMgMjAyMSAwOTowMToyNCArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjFdIFNldCBQeXRob24gZXhjZXB0aW9uIGFmdGVyIGZhaWxlZCBjb21taXQg b3Igcm9sbGJhY2sKCldoZW4gcGxweS5jb21taXQoKSBvciBwbHB5LnJvbGxiYWNrKCkgZmFp bGVkLCB0aGUgU1BJIGNvZGUgd291bGQKZXJlcG9ydChFUlJPUikgYW5kIGp1bXAgYWxsIHRo ZSB3YXkgYmFjayB0byB0aGUgbWFpbiBsb29wLCBieXBhc3NpbmcKUEwvUHl0aG9uLiAgQnkg Y29udHJhc3QsIGluIHBscHkuZXhlY3V0ZSgpLCB3ZSBjYXRjaCB0aGUgZXJlcG9ydCgpIGFu ZApnZW5lcmF0ZSBhIFB5dGhvbiBleGNlcHRpb24uICBUaGlzIGhhcyB0aGUgYWR2YW50YWdl IHRoYXQgeW91IGNhbgpjYXRjaCB0aGUgZXhjZXB0aW9uIGFuZCB5b3UgZ2V0IGJldHRlciBi YWNrdHJhY2VzLgoKQW4gYWRkaXRpb25hbCBwcm9ibGVtIGlzIGFwcGFyZW50bHkgdGhhdCBi ZWdpbm5pbmcgaW4gUHl0aG9uCjMuMTEtdG8tYmUsIGxvbmdqbXBpbmcgb3V0IG9mIHRoZSBQ eXRob24gaW50ZXJwcmV0ZXIgbGVhdmVzIGl0cwppbnRlcm5hbCBzdGF0ZSBpbmNvbnNpc3Rl bnQsIGFuZCBzdWJzZXF1ZW50IGludm9jYXRpb25zIG9mIFBML1B5dGhvbgpjb2RlIHdpbGwg Y3Jhc2guICBXaXRoIHByZXZpb3VzIFB5dGhvbiB2ZXJzaW9ucywgdGhpcyBoYXMgYXBwYXJl bnRseQpub3QgYmVlbiBhIHByb2JsZW0uCgpUbyBmaXgsIGFkYXB0IHRoZSBsb2dpYyBpbiBQ THlfc3BpX3N1YnRyYW5zYWN0aW9uX2Fib3J0KCkgKHdoaWNoIGlzCnVzZWQgYnkgcGxweS5l eGVjdXRlKCkgYW5kIG90aGVycykgdG8gY2F0Y2ggdGhlIFBvc3RncmVTUUwgZXJyb3IgYW5k CnR1cm4gaXQgaW50byBhIFB5dGhvbiBleGNlcHRpb24uICBNb3ZlIHNvbWUgY29kZSBhcm91 bmQgdG8gYXZvaWQKYWRkaXRpb25hbCBjcm9zcy1maWxlIHppZ3phZyBmcm9tIHRoaXMuCi0t LQogLi4uL2V4cGVjdGVkL3BscHl0aG9uX3RyYW5zYWN0aW9uLm91dCAgICAgICAgIHwgIDE4 ICsrLQogc3JjL3BsL3BscHl0aG9uL3BscHlfcGxweW1vZHVsZS5jICAgICAgICAgICAgIHwg IDMwIC0tLS0tCiBzcmMvcGwvcGxweXRob24vcGxweV9zcGkuYyAgICAgICAgICAgICAgICAg ICAgfCAxMDYgKysrKysrKysrKysrKysrKysrCiBzcmMvcGwvcGxweXRob24vcGxweV9zcGku aCAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogNCBmaWxlcyBjaGFuZ2VkLCAxMjEgaW5z ZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscHl0 aG9uL2V4cGVjdGVkL3BscHl0aG9uX3RyYW5zYWN0aW9uLm91dCBiL3NyYy9wbC9wbHB5dGhv bi9leHBlY3RlZC9wbHB5dGhvbl90cmFuc2FjdGlvbi5vdXQKaW5kZXggMTQxNTI5OTNjNy4u OWZkOWVmNTAwZSAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscHl0aG9uL2V4cGVjdGVkL3BscHl0 aG9uX3RyYW5zYWN0aW9uLm91dAorKysgYi9zcmMvcGwvcGxweXRob24vZXhwZWN0ZWQvcGxw eXRob25fdHJhbnNhY3Rpb24ub3V0CkBAIC01NSw4ICs1NSwxMSBAQCBmb3IgaSBpbiByYW5n ZSgwLCAxMCk6CiByZXR1cm4gMQogJCQ7CiBTRUxFQ1QgdHJhbnNhY3Rpb25fdGVzdDIoKTsK LUVSUk9SOiAgaW52YWxpZCB0cmFuc2FjdGlvbiB0ZXJtaW5hdGlvbgotQ09OVEVYVDogIFBM L1B5dGhvbiBmdW5jdGlvbiAidHJhbnNhY3Rpb25fdGVzdDIiCitFUlJPUjogIHNwaWV4Y2Vw dGlvbnMuSW52YWxpZFRyYW5zYWN0aW9uVGVybWluYXRpb246IGludmFsaWQgdHJhbnNhY3Rp b24gdGVybWluYXRpb24KK0NPTlRFWFQ6ICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CisgIFBML1B5dGhvbiBmdW5jdGlvbiAidHJhbnNhY3Rpb25fdGVzdDIiLCBsaW5l IDUsIGluIDxtb2R1bGU+CisgICAgcGxweS5jb21taXQoKQorUEwvUHl0aG9uIGZ1bmN0aW9u ICJ0cmFuc2FjdGlvbl90ZXN0MiIKIFNFTEVDVCAqIEZST00gdGVzdDE7CiAgYSB8IGIgCiAt LS0rLS0tCkBAIC03MCw3ICs3Myw3IEBAIHBscHkuZXhlY3V0ZSgiQ0FMTCB0cmFuc2FjdGlv bl90ZXN0MSgpIikKIHJldHVybiAxCiAkJDsKIFNFTEVDVCB0cmFuc2FjdGlvbl90ZXN0Mygp OwotRVJST1I6ICBzcGlleGNlcHRpb25zLkludmFsaWRUcmFuc2FjdGlvblRlcm1pbmF0aW9u OiBpbnZhbGlkIHRyYW5zYWN0aW9uIHRlcm1pbmF0aW9uCitFUlJPUjogIHNwaWV4Y2VwdGlv bnMuSW52YWxpZFRyYW5zYWN0aW9uVGVybWluYXRpb246IHNwaWV4Y2VwdGlvbnMuSW52YWxp ZFRyYW5zYWN0aW9uVGVybWluYXRpb246IGludmFsaWQgdHJhbnNhY3Rpb24gdGVybWluYXRp b24KIENPTlRFWFQ6ICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgIFBM L1B5dGhvbiBmdW5jdGlvbiAidHJhbnNhY3Rpb25fdGVzdDMiLCBsaW5lIDIsIGluIDxtb2R1 bGU+CiAgICAgcGxweS5leGVjdXRlKCJDQUxMIHRyYW5zYWN0aW9uX3Rlc3QxKCkiKQpAQCAt ODgsNyArOTEsNyBAQCBwbHB5LmV4ZWN1dGUoIkRPIExBTkdVQUdFIHBscHl0aG9udSAkeCQg cGxweS5jb21taXQoKSAkeCQiKQogcmV0dXJuIDEKICQkOwogU0VMRUNUIHRyYW5zYWN0aW9u X3Rlc3Q0KCk7Ci1FUlJPUjogIHNwaWV4Y2VwdGlvbnMuSW52YWxpZFRyYW5zYWN0aW9uVGVy bWluYXRpb246IGludmFsaWQgdHJhbnNhY3Rpb24gdGVybWluYXRpb24KK0VSUk9SOiAgc3Bp ZXhjZXB0aW9ucy5JbnZhbGlkVHJhbnNhY3Rpb25UZXJtaW5hdGlvbjogc3BpZXhjZXB0aW9u cy5JbnZhbGlkVHJhbnNhY3Rpb25UZXJtaW5hdGlvbjogaW52YWxpZCB0cmFuc2FjdGlvbiB0 ZXJtaW5hdGlvbgogQ09OVEVYVDogIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICAgUEwvUHl0aG9uIGZ1bmN0aW9uICJ0cmFuc2FjdGlvbl90ZXN0NCIsIGxpbmUgMiwg aW4gPG1vZHVsZT4KICAgICBwbHB5LmV4ZWN1dGUoIkRPIExBTkdVQUdFIHBscHl0aG9udSAk eCQgcGxweS5jb21taXQoKSAkeCQiKQpAQCAtMTAwLDggKzEwMywxMSBAQCBzLmVudGVyKCkK IHBscHkuY29tbWl0KCkKICQkOwogV0FSTklORzogIGZvcmNpYmx5IGFib3J0aW5nIGEgc3Vi dHJhbnNhY3Rpb24gdGhhdCBoYXMgbm90IGJlZW4gZXhpdGVkCi1FUlJPUjogIGNhbm5vdCBj b21taXQgd2hpbGUgYSBzdWJ0cmFuc2FjdGlvbiBpcyBhY3RpdmUKLUNPTlRFWFQ6ICBQTC9Q eXRob24gYW5vbnltb3VzIGNvZGUgYmxvY2sKK0VSUk9SOiAgc3BpZXhjZXB0aW9ucy5JbnZh bGlkVHJhbnNhY3Rpb25UZXJtaW5hdGlvbjogY2Fubm90IGNvbW1pdCB3aGlsZSBhIHN1YnRy YW5zYWN0aW9uIGlzIGFjdGl2ZQorQ09OVEVYVDogIFRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKKyAgUEwvUHl0aG9uIGFub255bW91cyBjb2RlIGJsb2NrLCBsaW5lIDQs IGluIDxtb2R1bGU+CisgICAgcGxweS5jb21taXQoKQorUEwvUHl0aG9uIGFub255bW91cyBj b2RlIGJsb2NrCiAtLSBjb21taXQgaW5zaWRlIGN1cnNvciBsb29wCiBDUkVBVEUgVEFCTEUg dGVzdDIgKHggaW50KTsKIElOU0VSVCBJTlRPIHRlc3QyIFZBTFVFUyAoMCksICgxKSwgKDIp LCAoMyksICg0KTsKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1 bGUuYyBiL3NyYy9wbC9wbHB5dGhvbi9wbHB5X3BscHltb2R1bGUuYwppbmRleCAwMzY1YWNj OTViLi45MDdmODlkMTUzIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxweXRob24vcGxweV9wbHB5 bW9kdWxlLmMKKysrIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfcGxweW1vZHVsZS5jCkBAIC00 MCw4ICs0MCw2IEBAIHN0YXRpYyBQeU9iamVjdCAqUEx5X2ZhdGFsKFB5T2JqZWN0ICpzZWxm LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KTsKIHN0YXRpYyBQeU9iamVjdCAqUEx5 X3F1b3RlX2xpdGVyYWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKTsKIHN0YXRp YyBQeU9iamVjdCAqUEx5X3F1b3RlX251bGxhYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVj dCAqYXJncyk7CiBzdGF0aWMgUHlPYmplY3QgKlBMeV9xdW90ZV9pZGVudChQeU9iamVjdCAq c2VsZiwgUHlPYmplY3QgKmFyZ3MpOwotc3RhdGljIFB5T2JqZWN0ICpQTHlfY29tbWl0KFB5 T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7Ci1zdGF0aWMgUHlPYmplY3QgKlBMeV9y b2xsYmFjayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpOwogCiAKIC8qIEEgbGlz dCBvZiBhbGwga25vd24gZXhjZXB0aW9ucywgZ2VuZXJhdGVkIGZyb20gYmFja2VuZC91dGls cy9lcnJjb2Rlcy50eHQgKi8KQEAgLTU3NywzMSArNTc1LDMgQEAgUEx5X291dHB1dCh2b2xh dGlsZSBpbnQgbGV2ZWwsIFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmpl Y3QgKmt3KQogCSAqLwogCVB5X1JFVFVSTl9OT05FOwogfQotCi1zdGF0aWMgUHlPYmplY3Qg KgotUEx5X2NvbW1pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0JUEx5 RXhlY3V0aW9uQ29udGV4dCAqZXhlY19jdHggPSBQTHlfY3VycmVudF9leGVjdXRpb25fY29u dGV4dCgpOwotCi0JU1BJX2NvbW1pdCgpOwotCVNQSV9zdGFydF90cmFuc2FjdGlvbigpOwot Ci0JLyogd2FzIGNsZWFyZWQgYXQgdHJhbnNhY3Rpb24gZW5kLCByZXNldCBwb2ludGVyICov Ci0JZXhlY19jdHgtPnNjcmF0Y2hfY3R4ID0gTlVMTDsKLQotCVB5X1JFVFVSTl9OT05FOwot fQotCi1zdGF0aWMgUHlPYmplY3QgKgotUEx5X3JvbGxiYWNrKFB5T2JqZWN0ICpzZWxmLCBQ eU9iamVjdCAqYXJncykKLXsKLQlQTHlFeGVjdXRpb25Db250ZXh0ICpleGVjX2N0eCA9IFBM eV9jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0KCk7Ci0KLQlTUElfcm9sbGJhY2soKTsKLQlT UElfc3RhcnRfdHJhbnNhY3Rpb24oKTsKLQotCS8qIHdhcyBjbGVhcmVkIGF0IHRyYW5zYWN0 aW9uIGVuZCwgcmVzZXQgcG9pbnRlciAqLwotCWV4ZWNfY3R4LT5zY3JhdGNoX2N0eCA9IE5V TEw7Ci0KLQlQeV9SRVRVUk5fTk9ORTsKLX0KZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5dGhv bi9wbHB5X3NwaS5jIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfc3BpLmMKaW5kZXggOTljMWI0 ZjI4Zi4uNDY5YTliMTRhYyAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscHl0aG9uL3BscHlfc3Bp LmMKKysrIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfc3BpLmMKQEAgLTQ1Niw2ICs0NTYsMTEy IEBAIFBMeV9zcGlfZXhlY3V0ZV9mZXRjaF9yZXN1bHQoU1BJVHVwbGVUYWJsZSAqdHVwdGFi bGUsIHVpbnQ2NCByb3dzLCBpbnQgc3RhdHVzKQogCXJldHVybiAoUHlPYmplY3QgKikgcmVz dWx0OwogfQogCitQeU9iamVjdCAqCitQTHlfY29tbWl0KFB5T2JqZWN0ICpzZWxmLCBQeU9i amVjdCAqYXJncykKK3sKKwl2b2xhdGlsZSBNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJ dm9sYXRpbGUgUmVzb3VyY2VPd25lciBvbGRvd25lcjsKKworCW9sZGNvbnRleHQgPSBDdXJy ZW50TWVtb3J5Q29udGV4dDsKKwlvbGRvd25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOwor CisJUEdfVFJZKCk7CisJeworCQlQTHlFeGVjdXRpb25Db250ZXh0ICpleGVjX2N0eCA9IFBM eV9jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0KCk7CisKKwkJU1BJX2NvbW1pdCgpOworCQlT UElfc3RhcnRfdHJhbnNhY3Rpb24oKTsKKworCQkvKiB3YXMgY2xlYXJlZCBhdCB0cmFuc2Fj dGlvbiBlbmQsIHJlc2V0IHBvaW50ZXIgKi8KKwkJZXhlY19jdHgtPnNjcmF0Y2hfY3R4ID0g TlVMTDsKKwl9CisJUEdfQ0FUQ0goKTsKKwl7CisJCUVycm9yRGF0YSAgKmVkYXRhOworCQlQ THlFeGNlcHRpb25FbnRyeSAqZW50cnk7CisJCVB5T2JqZWN0ICAgKmV4YzsKKworCQkvKiBT YXZlIGVycm9yIGluZm8gKi8KKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQp OworCQllZGF0YSA9IENvcHlFcnJvckRhdGEoKTsKKwkJRmx1c2hFcnJvclN0YXRlKCk7CisK KwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQlDdXJyZW50UmVzb3Vy Y2VPd25lciA9IG9sZG93bmVyOworCisJCS8qIExvb2sgdXAgdGhlIGNvcnJlY3QgZXhjZXB0 aW9uICovCisJCWVudHJ5ID0gaGFzaF9zZWFyY2goUEx5X3NwaV9leGNlcHRpb25zLCAmKGVk YXRhLT5zcWxlcnJjb2RlKSwKKwkJCQkJCQlIQVNIX0ZJTkQsIE5VTEwpOworCisJCS8qCisJ CSAqIFRoaXMgY291bGQgYmUgYSBjdXN0b20gZXJyb3IgY29kZSwgaWYgdGhhdCdzIHRoZSBj YXNlIGZhbGxiYWNrIHRvCisJCSAqIFNQSUVycm9yCisJCSAqLworCQlleGMgPSBlbnRyeSA/ IGVudHJ5LT5leGMgOiBQTHlfZXhjX3NwaV9lcnJvcjsKKwkJLyogTWFrZSBQeXRob24gcmFp c2UgdGhlIGV4Y2VwdGlvbiAqLworCQlQTHlfc3BpX2V4Y2VwdGlvbl9zZXQoZXhjLCBlZGF0 YSk7CisJCUZyZWVFcnJvckRhdGEoZWRhdGEpOworCisJCXJldHVybiBOVUxMOworCX0KKwlQ R19FTkRfVFJZKCk7CisKKwlQeV9SRVRVUk5fTk9ORTsKK30KKworUHlPYmplY3QgKgorUEx5 X3JvbGxiYWNrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKwl2b2xhdGls ZSBNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJdm9sYXRpbGUgUmVzb3VyY2VPd25lciBv bGRvd25lcjsKKworCW9sZGNvbnRleHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKwlvbGRv d25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOworCisJUEdfVFJZKCk7CisJeworCQlQTHlF eGVjdXRpb25Db250ZXh0ICpleGVjX2N0eCA9IFBMeV9jdXJyZW50X2V4ZWN1dGlvbl9jb250 ZXh0KCk7CisKKwkJU1BJX3JvbGxiYWNrKCk7CisJCVNQSV9zdGFydF90cmFuc2FjdGlvbigp OworCisJCS8qIHdhcyBjbGVhcmVkIGF0IHRyYW5zYWN0aW9uIGVuZCwgcmVzZXQgcG9pbnRl ciAqLworCQlleGVjX2N0eC0+c2NyYXRjaF9jdHggPSBOVUxMOworCX0KKwlQR19DQVRDSCgp OworCXsKKwkJRXJyb3JEYXRhICAqZWRhdGE7CisJCVBMeUV4Y2VwdGlvbkVudHJ5ICplbnRy eTsKKwkJUHlPYmplY3QgICAqZXhjOworCisJCS8qIFNhdmUgZXJyb3IgaW5mbyAqLworCQlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJCWVkYXRhID0gQ29weUVycm9y RGF0YSgpOworCQlGbHVzaEVycm9yU3RhdGUoKTsKKworCQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY29udGV4dCk7CisJCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gb2xkb3duZXI7CisK KwkJLyogTG9vayB1cCB0aGUgY29ycmVjdCBleGNlcHRpb24gKi8KKwkJZW50cnkgPSBoYXNo X3NlYXJjaChQTHlfc3BpX2V4Y2VwdGlvbnMsICYoZWRhdGEtPnNxbGVycmNvZGUpLAorCQkJ CQkJCUhBU0hfRklORCwgTlVMTCk7CisKKwkJLyoKKwkJICogVGhpcyBjb3VsZCBiZSBhIGN1 c3RvbSBlcnJvciBjb2RlLCBpZiB0aGF0J3MgdGhlIGNhc2UgZmFsbGJhY2sgdG8KKwkJICog U1BJRXJyb3IKKwkJICovCisJCWV4YyA9IGVudHJ5ID8gZW50cnktPmV4YyA6IFBMeV9leGNf c3BpX2Vycm9yOworCQkvKiBNYWtlIFB5dGhvbiByYWlzZSB0aGUgZXhjZXB0aW9uICovCisJ CVBMeV9zcGlfZXhjZXB0aW9uX3NldChleGMsIGVkYXRhKTsKKwkJRnJlZUVycm9yRGF0YShl ZGF0YSk7CisKKwkJcmV0dXJuIE5VTEw7CisJfQorCVBHX0VORF9UUlkoKTsKKworCVB5X1JF VFVSTl9OT05FOworfQorCiAvKgogICogVXRpbGl0aWVzIGZvciBydW5uaW5nIFNQSSBmdW5j dGlvbnMgaW4gc3VidHJhbnNhY3Rpb25zLgogICoKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHB5 dGhvbi9wbHB5X3NwaS5oIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfc3BpLmgKaW5kZXggYTVl MmU2MGRhNy4uOThjY2QyMTA5MyAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscHl0aG9uL3BscHlf c3BpLmgKKysrIGIvc3JjL3BsL3BscHl0aG9uL3BscHlfc3BpLmgKQEAgLTEyLDYgKzEyLDkg QEAgZXh0ZXJuIFB5T2JqZWN0ICpQTHlfc3BpX3ByZXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5 T2JqZWN0ICphcmdzKTsKIGV4dGVybiBQeU9iamVjdCAqUEx5X3NwaV9leGVjdXRlKFB5T2Jq ZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7CiBleHRlcm4gUHlPYmplY3QgKlBMeV9zcGlf ZXhlY3V0ZV9wbGFuKFB5T2JqZWN0ICpvYiwgUHlPYmplY3QgKmxpc3QsIGxvbmcgbGltaXQp OwogCitleHRlcm4gUHlPYmplY3QgKlBMeV9jb21taXQoUHlPYmplY3QgKnNlbGYsIFB5T2Jq ZWN0ICphcmdzKTsKK2V4dGVybiBQeU9iamVjdCAqUEx5X3JvbGxiYWNrKFB5T2JqZWN0ICpz ZWxmLCBQeU9iamVjdCAqYXJncyk7CisKIHR5cGVkZWYgc3RydWN0IFBMeUV4Y2VwdGlvbkVu dHJ5CiB7CiAJaW50CQkJc3Fsc3RhdGU7CQkvKiBoYXNoIGtleSwgbXVzdCBiZSBmaXJzdCAq LwotLSAKMi4zNC4xCgo= --------------riggRl0fRP5rRbxq6D8i3lr0--