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.96) (envelope-from ) id 1vkEy6-00CK6N-2P for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Jan 2026 05:16:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vkEy5-006Meh-1K for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Jan 2026 05:16:53 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vkEy4-006MeZ-2j for pgsql-hackers@lists.postgresql.org; Mon, 26 Jan 2026 05:16:53 +0000 Received: from mail-vs1-xe29.google.com ([2607:f8b0:4864:20::e29]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vkEy2-002KoU-17 for pgsql-hackers@postgresql.org; Mon, 26 Jan 2026 05:16:52 +0000 Received: by mail-vs1-xe29.google.com with SMTP id ada2fe7eead31-5eeff7e8bb3so4025787137.1 for ; Sun, 25 Jan 2026 21:16:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769404610; cv=none; d=google.com; s=arc-20240605; b=LPwosFaVn+dqVDhNiXX6ZRJ/eZ+1w+yjDtgmGbeYJCyePv3llnWPGNa9/5S1gt7IyD gj1VrXQiI/l0IC9KVnqJX+7+teDccsHp1tetR5dpnLShh8eOtTrZnY/NyZvx9zL6iH7k n3k2/Twq1qu0rpT0zkBnm2vxnnYL3zEtMXKxtMdk1bZUorJfKmzv4sbranbF88YpbCAQ 3rdWvGPSLm80OIX3hZCuEdtip/vXWEt4t4FAAxXXe9wjBu4+j9z4NWa9nFg+n406jI9T qyWHcCq8Ai3i1neGiIcawHKS28jKLnYh7vVfbV71i+Pci5tQwDQ+359dxIxActWcn6fw iLug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=GCRzfziSKj32egidra50PG+P8tG6TOjhsgOXItoW5NU=; fh=33OU7BWuulPFH378PdKTnpeW+jw3IP20DTmpLDeQ3pE=; b=kTh9dy5ura5AckOTaCE6mPdcLXQsxw1zRc1XGgK84T3RoRAjDkLvveVaENkhBkzvPA xemEEyAne/E06ivXUUhNrzOB7vtW5AgZTMpARZ9uCkgcu5W1O+r9VAt7zxtpuOxHipTU 3bLujj6mAi0xCw/lwcwsbUO0i1jhxSlaT/uAhAjBCGcAVxcvQxtda6+pjHAwLTQK6CRh 3p26CZBZBiJ88GslVZ8Ot8Z5BnCPq8GJ2EKVWQmhNZQ9wA2SLlcPK9+ImiyisS+hHvaX jVXJbbiUmqO2shWinOicrGKQaNnfQ6REHKpvLoIBDsCn4sKr8uMVr62Oq8jN4Y9u79Tp 2caA==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769404610; x=1770009410; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=GCRzfziSKj32egidra50PG+P8tG6TOjhsgOXItoW5NU=; b=ee0SV9jDz2YwJRYPgOWnKX6+Xp5BuAXuXPvPqtigSbyjOMvOBmblsmnjRDTH/Lzfqs W4DKJgxNxAFI1g+RwdupE294yS9YTXn2VSbOr1OwQTTX+WxRGoBRH4QFLOS25KfvlnFg 5Aa2fis7zsD1yD6WHPNOXNUWmRXJKbUTMEb8pR3cxhADOI8VKW6e//6RFl8u6X8a73Or qn2Dv79ht8PCgN98TudPBpXJqkqbduIz11vSDlkTqxTWsoQOXRmkOexfCLgO6dIAS8fP TNwhjYWWZV8AyzZwhBwWFiRUS6A6cu8YrMl4TTfbDqiw7oDB3dm23gO4cKFBnxZag15l aFxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769404610; x=1770009410; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=GCRzfziSKj32egidra50PG+P8tG6TOjhsgOXItoW5NU=; b=Mgzli6xIGqoRGRsQHMLmkofu0mjauFw+qkzYfHW5+9iBFLzKjALcYc17GRIX9xCbhS p5ydC6pUfEle2T3IR5bKWECYDq73WYQVczETZxT8SoMVaa1l+b8eIaiRkdQ2Qm0ujh5A NMgVKU8MJSHJa/guwvig+ulAXWySOB2qt4xQtEmsbTLXqTrasIuRe5ik4/R73ahn+TLo V2jf4C0RHPLsfzIzKO0eySQ78f/VrjRNWZfDS9qhQbJ2gntkUJd8c1pFlqf+WHszkN2Z QhrGB4MSYSfUNSg/SiH3MHEqOggbiaStEBK4ayJRSAgKBdfboy96YmajWIksUa2cpN24 O7zw== X-Gm-Message-State: AOJu0YwoCQUQ01YscoDcKcfTiCnyYagoUajU4Oth1RoYcqItF/2/lf8i Fyc4yufs41drlIycf2zzP41u9+JRsEZcW0Mw8ySUIEYqLoYWeufxyR9W0EI7DHOc8J/8+SB0AIP iV0AGGCX4rurRyIWOoOO94bHEj0Xcsy+BU50co+0= X-Gm-Gg: AZuq6aKYYyD1kM+QM4VZHfTnJKPeBarLwE4Rs08VVwpYICvqOHg+7gaSKfapE2KUvDf AsLUaCbOhkFQIOYoMe97CDhY6l7HZC6pAqVvE28D4tWIzXAehN3CsAHaS+LKNmUsfwdIfD4zoAh /naM+cCNIVhZw2aBIlfkU6iQgAAOI9InKOXan2pK79Ho9EqUHIFT4LfWXA5YDnwyssLfFOMC7Py SWQ+I/9yr0MuwQrib5g8vRv7CAKPBzolHk9foDUji5c+GwvTTr22TKLRLv3vS5Hwe1oL1NPmQMu JxZV1+TFjphtJoNW9x9FFEFzTqM87A== X-Received: by 2002:a05:6102:953:b0:5f1:c561:8dc7 with SMTP id ada2fe7eead31-5f57650efbamr1166870137.38.1769404610218; Sun, 25 Jan 2026 21:16:50 -0800 (PST) MIME-Version: 1.0 From: vaibhave postgres Date: Mon, 26 Jan 2026 10:46:38 +0530 X-Gm-Features: AZwV_QisdZYEcJuPczVbJoNaPV8bEpRSmRTg3mCRd5z442vz5wV87X0zsFQ_eAA Message-ID: Subject: [BUG#19384] Fix Server crash at textout To: pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="00000000000041a5e20649439d30" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000041a5e20649439d30 Content-Type: multipart/alternative; boundary="00000000000041a5e10649439d2e" --00000000000041a5e10649439d2e Content-Type: text/plain; charset="UTF-8" Hey hackers, I replaced the `tupDesc_identifier` with a 64-bit signature from its structure which was a todo. Stored Datums can detect stale definitions. Thanks. [1] BUG #19384: Server crash at textout - Mailing list pgsql-bugs : Postgres Professional --00000000000041a5e10649439d2e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hey hackers,

I replaced the=C2=A0`tupDe= sc_identifier` with a 64-bit signature from its structure which was a todo.= Stored Datums can detect stale definitions.

Thank= s.

--00000000000041a5e10649439d2e-- --00000000000041a5e20649439d30 Content-Type: application/octet-stream; name="0002-Fix-tests.patch" Content-Disposition: attachment; filename="0002-Fix-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkupd6111 RnJvbSA0YTY1MjEwNTU4NTlhNWRkYjYwMjUwYmUwZDM0MWNlMzBkOWQyNDI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWYWliaGF2ZSBTZWthciA8dnNla2FyQG1pY3Jvc29mdC5jb20+ CkRhdGU6IFN1biwgMjUgSmFuIDIwMjYgMTA6MzQ6NTUgKzAwMDAKU3ViamVjdDogW1BBVENIIDIv Ml0gRml4IHRlc3RzLgoKLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BvcnRhbHMub3V0 ICB8IDE5ICsrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcm93 dHlwZXMub3V0IHwgIDcgKystLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcG9ydGFscy5zcWwg ICAgICAgfCAxNCArKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25z KCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcG9ydGFscy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BvcnRhbHMub3V0Cmlu ZGV4IDA2NzI2ZWQ0YWI3Li5jNDQwOGM4ZDBiZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wb3J0YWxzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bv cnRhbHMub3V0CkBAIC0xNTYxLDMgKzE1NjEsMjIgQEAgZmV0Y2ggYWxsIGluIGhlbGRfcG9ydGFs OwogKDEgcm93KQogCiByZXNldCBkZWZhdWx0X3RvYXN0X2NvbXByZXNzaW9uOworLS0gQ2hhbmdp bmcgYSBjb21wb3NpdGUgdHlwZSBhZnRlciBhIGN1cnNvciBoYXMgZW1pdHRlZCByb3dzIHNob3Vs ZCBlcnJvcgorRFJPUCBUWVBFIElGIEVYSVNUUyBwb3J0YWxfY29tcG9zaXRlIENBU0NBREU7CitO T1RJQ0U6ICB0eXBlICJwb3J0YWxfY29tcG9zaXRlIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmcK K0NSRUFURSBUWVBFIHBvcnRhbF9jb21wb3NpdGUgQVMgKGEgaW50LCBiIGludCk7CitCRUdJTjsK K0RFQ0xBUkUgc3RhbGVfcG9ydGFsIENVUlNPUiBGT1IKKyAgU0VMRUNUIChpLCBwb3dlcigyLCAx MCkpOjpwb3J0YWxfY29tcG9zaXRlIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGk7CitGRVRD SCBGUk9NIHN0YWxlX3BvcnRhbDsKKyAgIHJvdyAgICAKKy0tLS0tLS0tLS0KKyAoMSwxMDI0KQor KDEgcm93KQorCitBTFRFUiBUWVBFIHBvcnRhbF9jb21wb3NpdGUgQUxURVIgQVRUUklCVVRFIGIg VFlQRSB0ZXh0OworRkVUQ0ggRlJPTSBzdGFsZV9wb3J0YWw7IC0tIHNob3VsZCBmYWlsIGluc3Rl YWQgb2YgY3Jhc2hpbmcKK0VSUk9SOiAgdHlwZSBwb3J0YWxfY29tcG9zaXRlIGhhcyBjaGFuZ2Vk CitERVRBSUw6ICBUaGUgY29tcG9zaXRlIHZhbHVlIHdhcyBjcmVhdGVkIHVzaW5nIGEgcHJldmlv dXMgZGVmaW5pdGlvbiBvZiB0eXBlIHBvcnRhbF9jb21wb3NpdGUuCitST0xMQkFDSzsKK0RST1Ag VFlQRSBwb3J0YWxfY29tcG9zaXRlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9yb3d0eXBlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3R5cGVzLm91 dAppbmRleCA5MTY4OTc5YTYyMC4uNGI5MTA0MjE5YjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcm93dHlwZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcm93dHlwZXMub3V0CkBAIC0xMzUsMTEgKzEzNSw4IEBAIEVSUk9SOiAgY2Fubm90IGFsdGVy IHRhYmxlICJmdWxsbmFtZSIgYmVjYXVzZSBjb2x1bW4gInBlb3BsZS5mbiIgdXNlcyBpdHMgcm93 IHR5CiAtLSBidXQgdGhpcyBzaG91bGQgd29yazoKIGFsdGVyIHRhYmxlIGZ1bGxuYW1lIGFkZCBj b2x1bW4gc3VmZml4IHRleHQgZGVmYXVsdCBudWxsOwogc2VsZWN0ICogZnJvbSBwZW9wbGU7Ci0g ICAgIGZuICAgICAgfCAgICAgYmQgICAgIAotLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KLSAo Sm9lLEJsb3csKSB8IDAxLTEwLTE5ODQKLSgxIHJvdykKLQorRVJST1I6ICB0eXBlIGZ1bGxuYW1l IGhhcyBjaGFuZ2VkCitERVRBSUw6ICBUaGUgY29tcG9zaXRlIHZhbHVlIHdhcyBjcmVhdGVkIHVz aW5nIGEgcHJldmlvdXMgZGVmaW5pdGlvbiBvZiB0eXBlIGZ1bGxuYW1lLgogLS0gdGVzdCBpbnNl cnRpb24vdXBkYXRpbmcgb2Ygc3ViZmllbGRzCiB1cGRhdGUgcGVvcGxlIHNldCBmbi5zdWZmaXgg PSAnSnInOwogc2VsZWN0ICogZnJvbSBwZW9wbGU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wb3J0YWxzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BvcnRhbHMuc3FsCmlu ZGV4IGZjNGNjY2I5NmMwLi4xNzExMGVlN2MyZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcG9ydGFscy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcG9ydGFscy5zcWwK QEAgLTYwNSwzICs2MDUsMTcgQEAgZHJvcCB0YWJsZSB0b2FzdGVkX2RhdGE7CiBmZXRjaCBhbGwg aW4gaGVsZF9wb3J0YWw7CiAKIHJlc2V0IGRlZmF1bHRfdG9hc3RfY29tcHJlc3Npb247CisKKy0t IENoYW5naW5nIGEgY29tcG9zaXRlIHR5cGUgYWZ0ZXIgYSBjdXJzb3IgaGFzIGVtaXR0ZWQgcm93 cyBzaG91bGQgZXJyb3IKK0RST1AgVFlQRSBJRiBFWElTVFMgcG9ydGFsX2NvbXBvc2l0ZSBDQVND QURFOworQ1JFQVRFIFRZUEUgcG9ydGFsX2NvbXBvc2l0ZSBBUyAoYSBpbnQsIGIgaW50KTsKKwor QkVHSU47CitERUNMQVJFIHN0YWxlX3BvcnRhbCBDVVJTT1IgRk9SCisgIFNFTEVDVCAoaSwgcG93 ZXIoMiwgMTApKTo6cG9ydGFsX2NvbXBvc2l0ZSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyKSBp OworRkVUQ0ggRlJPTSBzdGFsZV9wb3J0YWw7CitBTFRFUiBUWVBFIHBvcnRhbF9jb21wb3NpdGUg QUxURVIgQVRUUklCVVRFIGIgVFlQRSB0ZXh0OworRkVUQ0ggRlJPTSBzdGFsZV9wb3J0YWw7IC0t IHNob3VsZCBmYWlsIGluc3RlYWQgb2YgY3Jhc2hpbmcKK1JPTExCQUNLOworCitEUk9QIFRZUEUg cG9ydGFsX2NvbXBvc2l0ZTsKLS0gCjIuNDMuMAoK --00000000000041a5e20649439d30 Content-Type: application/octet-stream; name="0001-Stable-tupDesc_identifier.patch" Content-Disposition: attachment; filename="0001-Stable-tupDesc_identifier.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkupd60s0 RnJvbSA4YzRkNDkxYzJjYjAyY2RiNTE4MDVmNTJlYWE4YzBmNWZjMzdhYzRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWYWliaGF2ZSBTZWthciA8dnNla2FyQG1pY3Jvc29mdC5jb20+ CkRhdGU6IFN1biwgMjUgSmFuIDIwMjYgMTA6MzQ6NDYgKzAwMDAKU3ViamVjdDogW1BBVENIIDEv Ml0gU3RhYmxlIHR1cERlc2NfaWRlbnRpZmllci4KCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvdHlwY2FjaGUuYyB8IDExMSArKysrKysrKysrKysrKysrKysrKysrKysrKystLQogMSBmaWxl IGNoYW5nZWQsIDEwNCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS90eXBjYWNoZS5jCmluZGV4IGFhNDcyMGNiNTk4Li42Nzk1YWMyOTRjMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19yYW5nZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNv bW1hbmRzL2RlZnJlbS5oIgorI2luY2x1ZGUgImNvbW1vbi9oYXNoZm4uaCIKICNpbmNsdWRlICJj b21tb24vaW50LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJs aWIvZHNoYXNoLmgiCkBAIC0yODcsMTIgKzI4OCwxNSBAQCBzdGF0aWMgaW50MzIgUmVjb3JkQ2Fj aGVBcnJheUxlbiA9IDA7CS8qIGFsbG9jYXRlZCBsZW5ndGggb2YgYWJvdmUgYXJyYXkgKi8KIHN0 YXRpYyBpbnQzMiBOZXh0UmVjb3JkVHlwbW9kID0gMDsJLyogbnVtYmVyIG9mIGVudHJpZXMgdXNl ZCAqLwogCiAvKgotICogUHJvY2Vzcy13aWRlIGNvdW50ZXIgZm9yIGdlbmVyYXRpbmcgdW5pcXVl IHR1cGxlZGVzYyBpZGVudGlmaWVycy4KKyAqIFByb2Nlc3Mtd2lkZSBjb3VudGVyIGZvciBnZW5l cmF0aW5nIHVuaXF1ZSB0dXBsZWRlc2MgaWRlbnRpZmllcnMgZm9yCisgKiByZWNvcmQgKFJFQ09S RE9JRCkgdHVwZGVzY3MuIE5hbWVkIGNvbXBvc2l0ZSB0eXBlcyBub3cgZGVyaXZlIHRoZWlyCisg KiBpZGVudGlmaWVycyBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBzaWduYXR1cmUgb2YgdGhlIHR1cGxl ZGVzYyBjb250ZW50cy4KICAqIFplcm8gYW5kIG9uZSAoSU5WQUxJRF9UVVBMRURFU0NfSURFTlRJ RklFUikgYXJlbid0IGFsbG93ZWQgdG8gYmUgY2hvc2VuCiAgKiBhcyBpZGVudGlmaWVycywgc28g d2Ugc3RhcnQgdGhlIGNvdW50ZXIgYXQgSU5WQUxJRF9UVVBMRURFU0NfSURFTlRJRklFUi4KICAq Lwogc3RhdGljIHVpbnQ2NCB0dXBsZWRlc2NfaWRfY291bnRlciA9IElOVkFMSURfVFVQTEVERVND X0lERU5USUZJRVI7CiAKK3N0YXRpYyB1aW50NjQgY29tcHV0ZV90dXBkZXNjX2lkZW50aWZpZXIo VHVwbGVEZXNjIHR1cGRlc2MpOwogc3RhdGljIHZvaWQgbG9hZF90eXBjYWNoZV90dXBkZXNjKFR5 cGVDYWNoZUVudHJ5ICp0eXBlbnRyeSk7CiBzdGF0aWMgdm9pZCBsb2FkX3JhbmdldHlwZV9pbmZv KFR5cGVDYWNoZUVudHJ5ICp0eXBlbnRyeSk7CiBzdGF0aWMgdm9pZCBsb2FkX211bHRpcmFuZ2V0 eXBlX2luZm8oVHlwZUNhY2hlRW50cnkgKnR5cGVudHJ5KTsKQEAgLTMzMSw2ICszMzUsNzUgQEAg c3RhdGljIGRzYV9wb2ludGVyIHNoYXJlX3R1cGxlZGVzYyhkc2FfYXJlYSAqYXJlYSwgVHVwbGVE ZXNjIHR1cGRlc2MsCiAJCQkJCQkJCSAgIHVpbnQzMiB0eXBtb2QpOwogCiAKKy8qCisgKiBjb21w dXRlX3R1cGRlc2NfaWRlbnRpZmllcgorICoKKyAqIEJ1aWxkIGEgc3RhYmxlLCBkZXRlcm1pbmlz dGljIDY0LWJpdCBzaWduYXR1cmUgZm9yIGEgdHVwbGUgZGVzY3JpcHRvciBzbworICogdGhhdCB1 bmNoYW5nZWQgY29tcG9zaXRlIHR5cGUgZGVmaW5pdGlvbnMga2VlcCB0aGUgc2FtZSBpZGVudGlm aWVyIGFjcm9zcworICogY2FjaGUgcmVsb2FkcyBhbmQgYmFja2VuZHMuICBXZSBoYXNoIG9ubHkg c3RydWN0dXJhbCBmaWVsZHMgdGhhdCBhZmZlY3QgdGhlCisgKiBsYXlvdXQgb3IgbG9naWNhbCBj b250cmFjdCBvZiB0aGUgcm93dHlwZSwgYXZvaWRpbmcgdm9sYXRpbGUgZmllbGRzIHN1Y2ggYXMK KyAqIGF0dGNhY2hlb2ZmLgorICovCitzdGF0aWMgdWludDY0Citjb21wdXRlX3R1cGRlc2NfaWRl bnRpZmllcihUdXBsZURlc2MgdHVwZGVzYykKK3sKKwl1aW50NjQJCWhhc2g7CisJaW50CQluYXR0 cyA9IHR1cGRlc2MtPm5hdHRzOworCisJaGFzaCA9IGhhc2hfYnl0ZXNfZXh0ZW5kZWQoKGNvbnN0 IHVuc2lnbmVkIGNoYXIgKikgJnR1cGRlc2MtPnRkdHlwZWlkLAorCQkJCQkJCQkgc2l6ZW9mKE9p ZCksIDApOworCWhhc2ggPSBoYXNoX2J5dGVzX2V4dGVuZGVkKChjb25zdCB1bnNpZ25lZCBjaGFy ICopICZ0dXBkZXNjLT50ZHR5cG1vZCwKKwkJCQkJCQkJIHNpemVvZihpbnQzMiksIGhhc2gpOwor CWhhc2ggPSBoYXNoX2J5dGVzX2V4dGVuZGVkKChjb25zdCB1bnNpZ25lZCBjaGFyICopICZuYXR0 cywKKwkJCQkJCQkJIHNpemVvZihpbnQpLCBoYXNoKTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwg bmF0dHM7IGkrKykKKwl7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIo dHVwZGVzYywgaSk7CisKKwkJaGFzaCA9IGhhc2hfYnl0ZXNfZXh0ZW5kZWQoKGNvbnN0IHVuc2ln bmVkIGNoYXIgKikgYXR0LT5hdHRuYW1lLmRhdGEsCisJCQkJCQkJCQkJIE5BTUVEQVRBTEVOLCBo YXNoKTsKKwkJaGFzaCA9IGhhc2hfYnl0ZXNfZXh0ZW5kZWQoKGNvbnN0IHVuc2lnbmVkIGNoYXIg KikgJmF0dC0+YXR0aXNkcm9wcGVkLAorCQkJCQkJCQkJCSBzaXplb2YoYm9vbCksIGhhc2gpOwor CQloYXNoID0gaGFzaF9ieXRlc19leHRlbmRlZCgoY29uc3QgdW5zaWduZWQgY2hhciAqKSAmYXR0 LT5hdHRub3RudWxsLAorCQkJCQkJCQkJCSBzaXplb2YoYm9vbCksIGhhc2gpOworCQloYXNoID0g aGFzaF9ieXRlc19leHRlbmRlZCgoY29uc3QgdW5zaWduZWQgY2hhciAqKSAmYXR0LT5hdHRsZW4s CisJCQkJCQkJCQkJIHNpemVvZihpbnQxNiksIGhhc2gpOworCQloYXNoID0gaGFzaF9ieXRlc19l eHRlbmRlZCgoY29uc3QgdW5zaWduZWQgY2hhciAqKSAmYXR0LT5hdHRieXZhbCwKKwkJCQkJCQkJ CQkgc2l6ZW9mKGJvb2wpLCBoYXNoKTsKKwkJaGFzaCA9IGhhc2hfYnl0ZXNfZXh0ZW5kZWQoKGNv bnN0IHVuc2lnbmVkIGNoYXIgKikgJmF0dC0+YXR0YWxpZ24sCisJCQkJCQkJCQkJIHNpemVvZihj aGFyKSwgaGFzaCk7CisJCWhhc2ggPSBoYXNoX2J5dGVzX2V4dGVuZGVkKChjb25zdCB1bnNpZ25l ZCBjaGFyICopICZhdHQtPmF0dHN0b3JhZ2UsCisJCQkJCQkJCQkJIHNpemVvZihjaGFyKSwgaGFz aCk7CisJCWhhc2ggPSBoYXNoX2J5dGVzX2V4dGVuZGVkKChjb25zdCB1bnNpZ25lZCBjaGFyICop ICZhdHQtPmF0dGNvbXByZXNzaW9uLAorCQkJCQkJCQkJCSBzaXplb2YoY2hhciksIGhhc2gpOwor CQloYXNoID0gaGFzaF9ieXRlc19leHRlbmRlZCgoY29uc3QgdW5zaWduZWQgY2hhciAqKSAmYXR0 LT5hdHR0eXBpZCwKKwkJCQkJCQkJCQkgc2l6ZW9mKE9pZCksIGhhc2gpOworCQloYXNoID0gaGFz aF9ieXRlc19leHRlbmRlZCgoY29uc3QgdW5zaWduZWQgY2hhciAqKSAmYXR0LT5hdHR0eXBtb2Qs CisJCQkJCQkJCQkJIHNpemVvZihpbnQzMiksIGhhc2gpOworCQloYXNoID0gaGFzaF9ieXRlc19l eHRlbmRlZCgoY29uc3QgdW5zaWduZWQgY2hhciAqKSAmYXR0LT5hdHRjb2xsYXRpb24sCisJCQkJ CQkJCQkJIHNpemVvZihPaWQpLCBoYXNoKTsKKwkJaGFzaCA9IGhhc2hfYnl0ZXNfZXh0ZW5kZWQo KGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgJmF0dC0+YXR0bmRpbXMsCisJCQkJCQkJCQkJIHNpemVv ZihpbnQzMiksIGhhc2gpOworCQloYXNoID0gaGFzaF9ieXRlc19leHRlbmRlZCgoY29uc3QgdW5z aWduZWQgY2hhciAqKSAmYXR0LT5hdHRpZGVudGl0eSwKKwkJCQkJCQkJCQkgc2l6ZW9mKGNoYXIp LCBoYXNoKTsKKwkJaGFzaCA9IGhhc2hfYnl0ZXNfZXh0ZW5kZWQoKGNvbnN0IHVuc2lnbmVkIGNo YXIgKikgJmF0dC0+YXR0Z2VuZXJhdGVkLAorCQkJCQkJCQkJCSBzaXplb2YoY2hhciksIGhhc2gp OworCQloYXNoID0gaGFzaF9ieXRlc19leHRlbmRlZCgoY29uc3QgdW5zaWduZWQgY2hhciAqKSAm YXR0LT5hdHRoYXNtaXNzaW5nLAorCQkJCQkJCQkJCSBzaXplb2YoYm9vbCksIGhhc2gpOworCX0K KworCS8qIEF2b2lkIHJlc2VydmVkIGlkZW50aWZpZXJzICgwIGFuZCAxKS4gKi8KKwlpZiAoaGFz aCA8PSBJTlZBTElEX1RVUExFREVTQ19JREVOVElGSUVSKQorCQloYXNoID0gaGFzaF9ieXRlc19l eHRlbmRlZCgoY29uc3QgdW5zaWduZWQgY2hhciAqKSAmbmF0dHMsCisJCQkJCQkJCQkJIHNpemVv ZihpbnQpLCBVSU5UNjRDT05TVCgweEE1QTVBNUE1QTVBNUE1QTUpKTsKKwlpZiAoaGFzaCA8PSBJ TlZBTElEX1RVUExFREVTQ19JREVOVElGSUVSKQorCQloYXNoID0gSU5WQUxJRF9UVVBMRURFU0Nf SURFTlRJRklFUiArIDE7CisKKwlyZXR1cm4gaGFzaDsKK30KKworCiAvKgogICogbG9va3VwX3R5 cGVfY2FjaGUKICAqCkBAIC04OTgsMTEgKzk3MSwxNCBAQCBsb2FkX3R5cGNhY2hlX3R1cGRlc2Mo VHlwZUNhY2hlRW50cnkgKnR5cGVudHJ5KQogCUFzc2VydCh0eXBlbnRyeS0+dHVwRGVzYy0+dGRy ZWZjb3VudCA+IDApOwogCXR5cGVudHJ5LT50dXBEZXNjLT50ZHJlZmNvdW50Kys7CiAKKwl0eXBl bnRyeS0+dHVwRGVzY19pZGVudGlmaWVyID0gY29tcHV0ZV90dXBkZXNjX2lkZW50aWZpZXIodHlw ZW50cnktPnR1cERlc2MpOworCiAJLyoKLQkgKiBJbiBmdXR1cmUsIHdlIGNvdWxkIHRha2Ugc29t ZSBwYWlucyB0byBub3QgY2hhbmdlIHR1cERlc2NfaWRlbnRpZmllciBpZgotCSAqIHRoZSB0dXBk ZXNjIGRpZG4ndCByZWFsbHkgY2hhbmdlOyBidXQgZm9yIG5vdyBpdCdzIG5vdCB3b3J0aCBpdC4K KwkgKiBTdGFzaCBhIHZlcnNpb24gbWFya2VyIGluIHRkdHlwbW9kIHNvIGNvbXBvc2l0ZSBEYXR1 bXMgY2FuIGRldGVjdCBzdGFsZQorCSAqIGRlZmluaXRpb25zIGxhdGVyLiAgS2VlcCBpdCBub24t bmVnYXRpdmUgc28gY2FsbGVycyBjYW4gcmVsaWFibHkgY2hlY2sKKwkgKiBmb3IgaXQuCiAJICov Ci0JdHlwZW50cnktPnR1cERlc2NfaWRlbnRpZmllciA9ICsrdHVwbGVkZXNjX2lkX2NvdW50ZXI7 CisJdHlwZW50cnktPnR1cERlc2MtPnRkdHlwbW9kID0gKGludDMyKSAodHlwZW50cnktPnR1cERl c2NfaWRlbnRpZmllciAmIDB4N0ZGRkZGRkYpOwogCiAJcmVsYXRpb25fY2xvc2UocmVsLCBBY2Nl c3NTaGFyZUxvY2spOwogfQpAQCAtMTc0OCw5ICsxODI0LDMwIEBAIGxvb2t1cF9yb3d0eXBlX3R1 cGRlc2NfaW50ZXJuYWwoT2lkIHR5cGVfaWQsIGludDMyIHR5cG1vZCwgYm9vbCBub0Vycm9yKQog CQl0eXBlbnRyeSA9IGxvb2t1cF90eXBlX2NhY2hlKHR5cGVfaWQsIFRZUEVDQUNIRV9UVVBERVND KTsKIAkJaWYgKHR5cGVudHJ5LT50dXBEZXNjID09IE5VTEwgJiYgIW5vRXJyb3IpCiAJCQllcmVw b3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKLQkJ CQkJIGVycm1zZygidHlwZSAlcyBpcyBub3QgY29tcG9zaXRlIiwKLQkJCQkJCQlmb3JtYXRfdHlw ZV9iZSh0eXBlX2lkKSkpKTsKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBF KSwKKwkJCQkgZXJybXNnKCJ0eXBlICVzIGlzIG5vdCBjb21wb3NpdGUiLAorCQkJCQkgZm9ybWF0 X3R5cGVfYmUodHlwZV9pZCkpKSk7CisJCWVsc2UgaWYgKHR5cGVudHJ5LT50dXBEZXNjID09IE5V TEwpCisJCQlyZXR1cm4gTlVMTDsKKworCQkvKgorCQkgKiBJZiB0aGUgY2FsbGVyIHN1cHBsaWVk IGEgbm9uLW5lZ2F0aXZlIHR5cG1vZCwgdHJlYXQgaXQgYXMgdGhlIHZlcnNpb24KKwkJICogb2Yg dGhlIGNvbXBvc2l0ZSB0eXBlIHRoYXQgd2FzIGN1cnJlbnQgd2hlbiB0aGUgRGF0dW0gd2FzIGZv cm1lZC4gIElmCisJCSAqIGl0IGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgZGVmaW5pdGlvbiwg ZmFpbCBmYXN0IGluc3RlYWQgb2YKKwkJICogaW50ZXJwcmV0aW5nIHRoZSB0dXBsZSB1c2luZyB0 aGUgd3JvbmcgbGF5b3V0LgorCQkgKi8KKwkJaWYgKHR5cG1vZCA+PSAwKQorCQl7CisJCQlpbnQz MgkJZXhwZWN0ZWRfdHlwbW9kID0gdHlwZW50cnktPnR1cERlc2MtPnRkdHlwbW9kOworCisJCQlp ZiAoZXhwZWN0ZWRfdHlwbW9kID49IDAgJiYgdHlwbW9kICE9IGV4cGVjdGVkX3R5cG1vZCkKKwkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENI KSwKKwkJCQkJIGVycm1zZygidHlwZSAlcyBoYXMgY2hhbmdlZCIsCisJCQkJCQkgZm9ybWF0X3R5 cGVfYmUodHlwZV9pZCkpLAorCQkJCQkgZXJyZGV0YWlsKCJUaGUgY29tcG9zaXRlIHZhbHVlIHdh cyBjcmVhdGVkIHVzaW5nIGEgcHJldmlvdXMgZGVmaW5pdGlvbiBvZiB0eXBlICVzLiIsCisJCQkJ CQkgZm9ybWF0X3R5cGVfYmUodHlwZV9pZCkpKSk7CisJCX0KIAkJcmV0dXJuIHR5cGVudHJ5LT50 dXBEZXNjOwogCX0KIAllbHNlCi0tIAoyLjQzLjAKCg== --00000000000041a5e20649439d30--