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 1wAgwJ-000EKr-2D for pgsql-bugs@arkaria.postgresql.org; Thu, 09 Apr 2026 04:24:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wAgwI-003ac1-0J for pgsql-bugs@arkaria.postgresql.org; Thu, 09 Apr 2026 04:24:23 +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.96) (envelope-from ) id 1wAgwH-003abk-2C for pgsql-bugs@lists.postgresql.org; Thu, 09 Apr 2026 04:24:22 +0000 Received: from mail-oa1-x2e.google.com ([2001:4860:4864:20::2e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wAgwG-000000007TK-1tWy for pgsql-bugs@lists.postgresql.org; Thu, 09 Apr 2026 04:24:22 +0000 Received: by mail-oa1-x2e.google.com with SMTP id 586e51a60fabf-40ef10ec84cso369734fac.2 for ; Wed, 08 Apr 2026 21:24:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775708658; cv=none; d=google.com; s=arc-20240605; b=eLASn/0bM2zPcqMK31Ig1Na8A/ULBJQ6tVHb9O2JSZfv4F/VcLD/QXnTaIpW+9Zyc3 29V4tcW1vp3yINRv2GmcCory5g8TdK2n8JY3iCoQmAxEnp8cZ54wJVSviirTKj69WCZm eb3oZ/jzZ3rWN82qiJ5ZSWAqLpfopTjPBTXaeMuNYyamYOHApYQaI57MDhrMZevjBcT2 75fmkKmV21OHIrLyqwDjmjgkhj3KYa542Su7lne6JM4qyhxIq4WVaagEtVPAufwPA9Vz Tuar+INaTe8YryX8CbOREqGnNvqJUZtN3ulsUG3ofVRQIcp1/562ZBjzkMieWkditFLn O+yg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=v4puwRHoSp414yTeE7ZGXdyr2t8ShNq4nfnz+MiXA8A=; fh=VoMmb+LHLXO2DtB7KTeZPDnZ/qXgnNC8Nacm39/0yr0=; b=c0dZGXbHFoRO906optV2gkyaN9qyfooB4CbKHa6mtAZxUM5VyHndEMT4DXyNQkqIg2 jpNRITzDGBny1uBVlsyC3gb/ae0hkO/i/VI7wM70H8JBZaWvAnOOIWvOPjJE6Ar0qOyW fo/emlw4PWJmC39SsO0Bu9BOX0E0vUdVE6eCCZL09FrizgHASZEG92i3Klm81BVe3iIA PpdClTPak1R7Df5qGG3wxr/fDZ3hkHlcB6e9g2E1/t2KK/pvrY+Rz/FKn/7jmevD6qQp DRGNlhp2R8AXSkoQXGogynfR2sdJMoGVthM/72hTSbSgGsdai8J3HWEOahz4HYz2fHK+ boQA==; darn=lists.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=20251104; t=1775708658; x=1776313458; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=v4puwRHoSp414yTeE7ZGXdyr2t8ShNq4nfnz+MiXA8A=; b=SNdF0iVq0vUVc4RWGkGJSjeVxGOlDoRCwNS5KSuGGVLl7+soZLGsWRyxDzq4jDESlN fQ9FPOjUZTRL6N36ZmvS1HRJkBURSCEYEsWRHm4v7Qx7y5IbY48cpabL28zpnsnI2ui9 yxNo0HxHoxnSlo9xBTgOS0KwYypHAuJNXRIHTRAido9dI7p2kv3aXFmEM/W4kcOLJ+2U HGEclreA6xzpNQeiw4HsnZddnTaKKsVfAJqsNbLVR12eyydg43IMFqpB4ZGOdZpaSg5l wcM62ItLtIY+Uw8A4vFeb+8x+lZ9bB8OPAFa5kSH6Kdd1txSOaCz+vF3zBSHoZN482pf 5DOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775708658; x=1776313458; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=v4puwRHoSp414yTeE7ZGXdyr2t8ShNq4nfnz+MiXA8A=; b=n9FgDe6mzGsq9Cww+6HiULsO70eNr92a9dZfaqDPfeR6e9S2/xtVMVUP/N/gzU9tYp 98bfc1ZAw3RyDl6CU3qtJkAj6FIaw1/P4Y+8qorDNKXpB/9R6SHhdwQO3MHYo6EUlCtN lu3j4mApEc+1/y4rOWdFtxz5nINStxI2awmqb60LpWoTwyVEAwxhr90jShbzAbWAEE2S a07q8TXe8dwqIiur1bl0nWJ1XMWo5EqQd9QXqy/eXb4iKc1iUubSzc0Ma0Q/dHPlN/KQ nwQLWfjBVO7FOR1o4bORQ9nZTWsIB+vDgKSvA5E3rpr0QfylFm+WscZLZfhYDAYp+o6v rGbA== X-Forwarded-Encrypted: i=1; AJvYcCWZFNDeqxUenTQRM/syVrzEdeCBXzmyxz+6tZs+cOmhb3fv91cjTRwWwouder7bi30ivOQTtaL4+v3R@lists.postgresql.org X-Gm-Message-State: AOJu0YxUyjh7tTrIgTRCaVGZkJwPIifbHwImsIR7G++iB88a3yXjJueY Ln0n/7a7YIf++o9GzFUG6TMPvGc2Cg7tOec7W8n1evT8roYXzZrHI8lakPvG77x9qv+ZneYITGo XBU7h3XAEgV3Z10iaygaTTZ2R7B5drY0= X-Gm-Gg: AeBDiesv7EHX3Z81ZY+tSlmBd4SCAzP1oI/qaBIXxQksgD66IB/vhKfSlX3pnjJHhyx 46grn8mBkdl6N5wYtZ2/IhN8NoarwZmGicNr5KBkmwdkTspYuEY4r90NonJOVubgQq0sBJT4u8d pQT/4SEQtTKBJe94TxQ4AqIhrH5I0AmPtbtLUi6YWkO5/NjqDcFS17PDo7zEOcp7g4mtjVUoFL1 9aWAluk3V4yfB97UslVwkFS7Guby9VJjv/0n9HZ4SLnLVVGyNfxXF8k3cVgb1iHTXxxhxNosgYZ gLNx0PjsEroriA== X-Received: by 2002:a05:6871:7288:b0:423:b2de:3b45 with SMTP id 586e51a60fabf-423b2de5f8dmr2166280fac.28.1775708658324; Wed, 08 Apr 2026 21:24:18 -0700 (PDT) MIME-Version: 1.0 References: <19382-4c2060ffee72759b@postgresql.org> In-Reply-To: From: surya poondla Date: Wed, 8 Apr 2026 21:24:06 -0700 X-Gm-Features: AQROBzCRQZr_5FRqRdCUkpeG1LiGqAM4UJMwxxjPewDZSsYYhIR6JRU4w7xhhMA Message-ID: Subject: Re: BUG #19382: Server crash at __nss_database_lookup To: Andrey Borodin Cc: songjinzhou , dllggyx , pgsql-bugs Content-Type: multipart/mixed; boundary="000000000000cdef2c064eff637f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000cdef2c064eff637f Content-Type: multipart/alternative; boundary="000000000000cdef2b064eff637d" --000000000000cdef2b064eff637d Content-Type: text/plain; charset="UTF-8" Hi Andrey, Thank you for the comments. > The server still crashes when only an inner type is altered: > > CREATE TYPE inner_t AS (x INT, y INT); > CREATE TYPE outer_t AS (a INT, b inner_t); > > CREATE OR REPLACE FUNCTION test_nested() RETURNS record LANGUAGE plpgsql > AS $$ > DECLARE r1 outer_t; r2 outer_t; > BEGIN > r1 := ROW(1, ROW(10, power(2,30)::int4)::inner_t)::outer_t; > ALTER TYPE inner_t ALTER ATTRIBUTE y TYPE TEXT; > r2 := r1; > RETURN r2; > END; $$; > > SELECT test_nested(); -- server crash > > Thank you for the nested composite testcase and the fix in cursor code, the changes look good.. I fixed the PL/pgsql to fix the nested components. Here is the patch for the pl/pgsql fix Regards, Surya Poondla --000000000000cdef2b064eff637d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Andrey,

Thank you for the comme= nts.


The server still crashes when only an inner type is altered:

CREATE TYPE inner_t AS (x INT, y INT);
CREATE TYPE outer_t AS (a INT, b inner_t);

CREATE OR REPLACE FUNCTION test_nested() RETURNS record LANGUAGE plpgsql AS= $$
DECLARE r1 outer_t; r2 outer_t;
BEGIN
=C2=A0 =C2=A0 r1 :=3D ROW(1, ROW(10, power(2,30)::int4)::inner_t)::outer_t;=
=C2=A0 =C2=A0 ALTER TYPE inner_t ALTER ATTRIBUTE y TYPE TEXT;
=C2=A0 =C2=A0 r2 :=3D r1;
=C2=A0 =C2=A0 RETURN r2;
END; $$;

SELECT test_nested();=C2=A0 =C2=A0-- server crash

Thank you for the nested composite testcase and the f= ix in cursor code,=C2=A0the changes look good.. I fixed the PL/pgsql to fix= the nested components.
=C2=A0
Here is the patch for the pl/pg= sql fix

Regards,
Surya Poondla
--000000000000cdef2b064eff637d-- --000000000000cdef2c064eff637f Content-Type: application/octet-stream; name="0005-Fix-bug-19382-server-crash-when-ALTER-TYPE-is-used-m.patch" Content-Disposition: attachment; filename="0005-Fix-bug-19382-server-crash-when-ALTER-TYPE-is-used-m.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnqz2tk70 RnJvbSAyZDgzZGRlMzJhM2E5NGI3Mjk4Mzk5YzNmNDdjMzhmNzAyY2M5NmU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzcG9vbmRsYSA8c19wb29uZGxhQGFwcGxlLmNvbT4KRGF0ZTog RnJpLCAyMyBKYW4gMjAyNiAxNzoyODo1NCAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjVdIEZpeCAo YnVnICMxOTM4Mikgc2VydmVyIGNyYXNoIHdoZW4gQUxURVIgVFlQRSBpcyB1c2VkCiBtaWQtdHJh bnNhY3Rpb24gaW4gUEwvcGdTUUwKCldoZW4gQUxURVIgVFlQRSBjaGFuZ2VzIGEgY29tcG9zaXRl IHR5cGUncyBjb2x1bW4gdHlwZXMgd2l0aGluIGEKdHJhbnNhY3Rpb24sIFBML3BnU1FMIHJlY29y ZCB2YXJpYWJsZXMgdGhhdCB3ZXJlIHBvcHVsYXRlZCBiZWZvcmUKdGhlIEFMVEVSIHN0aWxsIGhv bGQgZGF0YSBpbiB0aGUgb2xkIGZvcm1hdC4gUmV0dXJuaW5nIHN1Y2ggcmVjb3JkcwpjYXVzZXMg YSBjcmFzaCBiZWNhdXNlIHRoZSBvdXRwdXQgZnVuY3Rpb25zIGV4cGVjdCBkYXRhIG1hdGNoaW5n IHRoZQpuZXcgdHlwZSBkZWZpbml0aW9uLCBub3QgdGhlIG9sZCBvbmUuCgpUaGUgY3Jhc2ggbWFu aWZlc3RlZCBhcyBhIHNlZ21lbnRhdGlvbiBmYXVsdCBpbiByZWNvcmRfb3V0KCkgd2hlbiBpdAph dHRlbXB0ZWQgdG8gaW50ZXJwcmV0IGludGVnZXIgZGF0YSBhcyBhIHRleHQgcG9pbnRlciwgZHVl IHRvIHRoZQptaXNtYXRjaCBiZXR3ZWVuIHRoZSBzdG9yZWQgZGF0YSBhbmQgdGhlIGN1cnJlbnQg dHlwZSBkZWZpbml0aW9uLgoKVGhlIGZpeCBzbmFwc2hvdHMgdHVwRGVzY19pZGVudGlmaWVyIHZh bHVlcyBmb3IgYWxsIGNvbXBvc2l0ZSB0eXBlcwpyZWFjaGFibGUgZnJvbSBhIHJlY29yZCB2YXJp YWJsZSdzIHR5cGUgKGluY2x1ZGluZyBuZXN0ZWQgY29tcG9zaXRlCnR5cGVzKSBhdCBhc3NpZ25t ZW50IHRpbWUuIEF0IFJFVFVSTi9SRVRVUk4gTkVYVCB0aW1lLCB0aGVzZQppZGVudGlmaWVycyBh cmUgY29tcGFyZWQgYWdhaW5zdCBjdXJyZW50IHZhbHVlcyBmcm9tIHRoZSB0eXBlIGNhY2hlLgpJ ZiBhbnkgaGF2ZSBjaGFuZ2VkLCBhbiBlcnJvciBpcyByYWlzZWQgaW5zdGVhZCBvZiByaXNraW5n IGEgY3Jhc2guCi0tLQogLi4uL3BscGdzcWwvc3JjL2V4cGVjdGVkL3BscGdzcWxfcmVjb3JkLm91 dCAgIHwgIDY3ICsrKysrKwogc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYyAgICAgICAgICAg ICAgICAgIHwgMjA5ICsrKysrKysrKysrKysrKysrLQogc3JjL3BsL3BscGdzcWwvc3JjL3BscGdz cWwuaCAgICAgICAgICAgICAgICAgIHwgICA5ICsKIHNyYy9wbC9wbHBnc3FsL3NyYy9zcWwvcGxw Z3NxbF9yZWNvcmQuc3FsICAgICB8ICA1OCArKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAzNDIgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3Ny Yy9leHBlY3RlZC9wbHBnc3FsX3JlY29yZC5vdXQgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvZXhwZWN0 ZWQvcGxwZ3NxbF9yZWNvcmQub3V0CmluZGV4IDUxMWY5ZTAzYzg1Li5hZDIxZjhiYmYzZiAxMDA2 NDQKLS0tIGEvc3JjL3BsL3BscGdzcWwvc3JjL2V4cGVjdGVkL3BscGdzcWxfcmVjb3JkLm91dAor KysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvZXhwZWN0ZWQvcGxwZ3NxbF9yZWNvcmQub3V0CkBAIC04 ODUsMyArODg1LDcwIEBAIHRhYmxlIHR3b19pbnQ4c190YWI7CiAgKDQyLDQyKQogKDEgcm93KQog CistLSBUZXN0cyBmb3IgYnVnICMxOTM4Mjogc2VydmVyIGNyYXNoIHdoZW4gQUxURVIgVFlQRSBp cyB1c2VkIG1pZC10cmFuc2FjdGlvbgorLS0gaW4gUEwvcGdTUUwuIFJlY29yZCB2YXJpYWJsZXMg cG9wdWxhdGVkIGJlZm9yZSBBTFRFUiBUWVBFIG11c3Qgbm90IGJlCistLSByZXR1cm5lZCwgYXMg dGhlIHN0b3JlZCBkYXRhIG5vIGxvbmdlciBtYXRjaGVzIHRoZSBjdXJyZW50IHR5cGUgZGVmaW5p dGlvbi4KKy0tIENhc2UgMTogRGlyZWN0IGNvbXBvc2l0ZSB0eXBlIGNoYW5nZSAoSU5UIC0+IFRF WFQpCitjcmVhdGUgdHlwZSBidWcxOTM4Ml9mb28gYXMgKGEgaW50LCBiIGludCk7CitjcmVhdGUg ZnVuY3Rpb24gYnVnMTkzODJfdGVzdF9kaXJlY3QoKSByZXR1cm5zIHJlY29yZCBhcyAkJAorZGVj bGFyZSByIGJ1ZzE5MzgyX2ZvbyA6PSByb3coMTIzLCBwb3dlcigyLCAzMCkpOworYmVnaW4KKyAg ICBhbHRlciB0eXBlIGJ1ZzE5MzgyX2ZvbyBhbHRlciBhdHRyaWJ1dGUgYiB0eXBlIHRleHQ7Cisg ICAgcmV0dXJuIHI7CitlbmQ7CiskJCBsYW5ndWFnZSBwbHBnc3FsOworc2VsZWN0IGJ1ZzE5Mzgy X3Rlc3RfZGlyZWN0KCk7CitFUlJPUjogIGNhbm5vdCByZXR1cm4gcmVjb3JkIHZhcmlhYmxlICJy IiBhZnRlciBjb21wb3NpdGUgdHlwZSAiYnVnMTkzODJfZm9vIiB3YXMgYWx0ZXJlZAorSElOVDog IFJlYXNzaWduIHRoZSByZWNvcmQgdmFyaWFibGUgYWZ0ZXIgQUxURVIgVFlQRS4KK0NPTlRFWFQ6 ICBQTC9wZ1NRTCBmdW5jdGlvbiBidWcxOTM4Ml90ZXN0X2RpcmVjdCgpIGxpbmUgNSBhdCBSRVRV Uk4KK2Ryb3AgZnVuY3Rpb24gYnVnMTkzODJfdGVzdF9kaXJlY3QoKTsKK2Ryb3AgdHlwZSBidWcx OTM4Ml9mb28gY2FzY2FkZTsKKy0tIENhc2UgMjogTmVzdGVkIGNvbXBvc2l0ZSB0eXBlIGNoYW5n ZQorY3JlYXRlIHR5cGUgYnVnMTkzODJfaW5uZXIgYXMgKHggaW50LCB5IGludCk7CitjcmVhdGUg dHlwZSBidWcxOTM4Ml9vdXRlciBhcyAoYSBpbnQsIGIgYnVnMTkzODJfaW5uZXIpOworY3JlYXRl IGZ1bmN0aW9uIGJ1ZzE5MzgyX3Rlc3RfbmVzdGVkKCkgcmV0dXJucyByZWNvcmQgYXMgJCQKK2Rl Y2xhcmUgciBidWcxOTM4Ml9vdXRlcjsKK2JlZ2luCisgICAgciA6PSByb3coMSwgcm93KDEwLCBw b3dlcigyLCAzMCk6OmludDQpOjpidWcxOTM4Ml9pbm5lcik6OmJ1ZzE5MzgyX291dGVyOworICAg IGFsdGVyIHR5cGUgYnVnMTkzODJfaW5uZXIgYWx0ZXIgYXR0cmlidXRlIHkgdHlwZSB0ZXh0Owor ICAgIHJldHVybiByOworZW5kOworJCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK3NlbGVjdCBidWcxOTM4 Ml90ZXN0X25lc3RlZCgpOworRVJST1I6ICBjYW5ub3QgcmV0dXJuIHJlY29yZCB2YXJpYWJsZSAi ciIgYWZ0ZXIgY29tcG9zaXRlIHR5cGUgImJ1ZzE5MzgyX2lubmVyIiB3YXMgYWx0ZXJlZAorSElO VDogIFJlYXNzaWduIHRoZSByZWNvcmQgdmFyaWFibGUgYWZ0ZXIgQUxURVIgVFlQRS4KK0NPTlRF WFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBidWcxOTM4Ml90ZXN0X25lc3RlZCgpIGxpbmUgNiBhdCBS RVRVUk4KK2Ryb3AgZnVuY3Rpb24gYnVnMTkzODJfdGVzdF9uZXN0ZWQoKTsKK2Ryb3AgdHlwZSBi dWcxOTM4Ml9vdXRlciBjYXNjYWRlOworZHJvcCB0eXBlIGJ1ZzE5MzgyX2lubmVyIGNhc2NhZGU7 CistLSBDYXNlIDM6IE9VVCBwYXJhbWV0ZXIKK2NyZWF0ZSB0eXBlIGJ1ZzE5MzgyX2ZvbzEgYXMg KGEgaW50LCBiIGludCk7CitjcmVhdGUgZnVuY3Rpb24gYnVnMTkzODJfdGVzdF9vdXQob3V0IHIx IGJ1ZzE5MzgyX2ZvbzEpIGFzICQkCitiZWdpbgorICAgIHIxIDo9IHJvdygxLCAyKTsKKyAgICBh bHRlciB0eXBlIGJ1ZzE5MzgyX2ZvbzEgYWx0ZXIgYXR0cmlidXRlIGIgdHlwZSB0ZXh0OworICAg IHJldHVybjsKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWw7CitzZWxlY3QgYnVnMTkzODJfdGVz dF9vdXQoKTsKK0VSUk9SOiAgY2Fubm90IHJldHVybiByZWNvcmQgdmFyaWFibGUgInIxIiBhZnRl ciBjb21wb3NpdGUgdHlwZSAiYnVnMTkzODJfZm9vMSIgd2FzIGFsdGVyZWQKK0hJTlQ6ICBSZWFz c2lnbiB0aGUgcmVjb3JkIHZhcmlhYmxlIGFmdGVyIEFMVEVSIFRZUEUuCitDT05URVhUOiAgUEwv cGdTUUwgZnVuY3Rpb24gYnVnMTkzODJfdGVzdF9vdXQoKSBsaW5lIDUgYXQgUkVUVVJOCitkcm9w IGZ1bmN0aW9uIGJ1ZzE5MzgyX3Rlc3Rfb3V0KCk7Citkcm9wIHR5cGUgYnVnMTkzODJfZm9vMSBj YXNjYWRlOworLS0gQ2FzZSA0OiBObyBBTFRFUiBUWVBFIChiYXNlbGluZSDigJQgbXVzdCBub3Qg ZXJyb3IpCitjcmVhdGUgdHlwZSBidWcxOTM4Ml9mb28yIGFzIChhIGludCwgYiBpbnQpOworY3Jl YXRlIGZ1bmN0aW9uIGJ1ZzE5MzgyX3Rlc3RfYmFzZWxpbmUoKSByZXR1cm5zIGJ1ZzE5MzgyX2Zv bzIgYXMgJCQKK2RlY2xhcmUgciBidWcxOTM4Ml9mb28yIDo9IHJvdygxLCAyKTsKK2JlZ2luCisg ICAgcmV0dXJuIHI7CitlbmQ7CiskJCBsYW5ndWFnZSBwbHBnc3FsOworc2VsZWN0IGJ1ZzE5Mzgy X3Rlc3RfYmFzZWxpbmUoKTsKKyBidWcxOTM4Ml90ZXN0X2Jhc2VsaW5lIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKDEsMikKKygxIHJvdykKKworZHJvcCBmdW5jdGlvbiBidWcxOTM4Ml90 ZXN0X2Jhc2VsaW5lKCk7Citkcm9wIHR5cGUgYnVnMTkzODJfZm9vMjsKZGlmZiAtLWdpdCBhL3Ny Yy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5j CmluZGV4IDY1YjBmZDA3OTBmLi5iZTM1Mjk0NDVmOSAxMDA2NDQKLS0tIGEvc3JjL3BsL3BscGdz cWwvc3JjL3BsX2V4ZWMuYworKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCkBAIC00 NzAsNiArNDcwLDEyIEBAIHN0YXRpYyBjaGFyICpmb3JtYXRfcHJlcGFyZWRwYXJhbXNkYXRhKFBM cGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiBzdGF0aWMgUExwZ1NRTF92YXJpYWJsZSAqbWFrZV9j YWxsc3RtdF90YXJnZXQoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwKIAkJCQkJCQkJCQkJICBQ THBnU1FMX2V4cHIgKmV4cHIpOwogCitzdGF0aWMgdm9pZCBjaGVja19yZWNvcmRfdHlwZV9ub3Rf YWx0ZXJlZChQTHBnU1FMX3JlYyAqcmVjKTsKK3N0YXRpYyB2b2lkIGNvbGxlY3RfY29tcG9zaXRl X3R5cGVfdmVyc2lvbnMoT2lkIHR5cGlkLAorCQkJCQkJCQkJCQlPaWQgKipvaWRzLCB1aW50NjQg Kip2ZXJzaW9ucywKKwkJCQkJCQkJCQkJaW50ICpuLCBpbnQgKmFsbG9jKTsKK3N0YXRpYyB2b2lk IHNuYXBzaG90X3JlY29yZF9jb21wb3NpdGVfdHlwZXMoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0 ZSwKKwkJCQkJCQkJCQkJUExwZ1NRTF9yZWMgKnJlYyk7CiAKIC8qIC0tLS0tLS0tLS0KICAqIHBs cGdzcWxfZXhlY19mdW5jdGlvbglDYWxsZWQgYnkgdGhlIGNhbGwgaGFuZGxlciBmb3IKQEAgLTMy ODcsOCArMzI5MywzMCBAQCBleGVjX3N0bXRfcmV0dXJuKFBMcGdTUUxfZXhlY3N0YXRlICplc3Rh dGUsIFBMcGdTUUxfc3RtdF9yZXR1cm4gKnN0bXQpCiAJCQkJfQogCQkJCWJyZWFrOwogCi0JCQlj YXNlIFBMUEdTUUxfRFRZUEVfUk9XOgogCQkJY2FzZSBQTFBHU1FMX0RUWVBFX1JFQzoKKwkJCQl7 CisJCQkJCVBMcGdTUUxfcmVjICpyZWMgPSAoUExwZ1NRTF9yZWMgKikgcmV0dmFyOworCQkJCQlp bnQzMgkJcmV0dHlwbW9kOworCisJCQkJCS8qCisJCQkJCSAqIENoZWNrIGlmIHRoZSByZWNvcmQn cyBjb21wb3NpdGUgdHlwZSB3YXMgYWx0ZXJlZCBzaW5jZQorCQkJCQkgKiB0aGUgcmVjb3JkIHdh cyBwb3B1bGF0ZWQuIElmIHNvLCByYWlzZSBhbiBlcnJvciB0bworCQkJCQkgKiBwcmV2ZW50IGNy YXNoZXMgd2hlbiBvdXRwdXR0aW5nIHRoZSByZWNvcmQuCisJCQkJCSAqLworCQkJCQlpZiAocmVj LT5yZWN0eXBlaWQgIT0gUkVDT1JET0lEICYmIHJlYy0+ZXJoICE9IE5VTEwgJiYKKwkJCQkJCSFF eHBhbmRlZFJlY29yZElzRW1wdHkocmVjLT5lcmgpKQorCQkJCQkJY2hlY2tfcmVjb3JkX3R5cGVf bm90X2FsdGVyZWQocmVjKTsKKworCQkJCQlleGVjX2V2YWxfZGF0dW0oZXN0YXRlLAorCQkJCQkJ CQkJcmV0dmFyLAorCQkJCQkJCQkJJmVzdGF0ZS0+cmV0dHlwZSwKKwkJCQkJCQkJCSZyZXR0eXBt b2QsCisJCQkJCQkJCQkmZXN0YXRlLT5yZXR2YWwsCisJCQkJCQkJCQkmZXN0YXRlLT5yZXRpc251 bGwpOworCQkJCX0KKwkJCQlicmVhazsKKworCQkJY2FzZSBQTFBHU1FMX0RUWVBFX1JPVzoKIAkJ CQl7CiAJCQkJCS8qIGV4ZWNfZXZhbF9kYXR1bSBjYW4gaGFuZGxlIHRoZXNlIGNhc2VzICovCiAJ CQkJCWludDMyCQlyZXR0eXBtb2Q7CkBAIC0zNDM0LDYgKzM0NjIsMTQgQEAgZXhlY19zdG10X3Jl dHVybl9uZXh0KFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCQkJCVR1cGxlRGVzYwlyZWNf dHVwZGVzYzsKIAkJCQkJVHVwbGVDb252ZXJzaW9uTWFwICp0dXBtYXA7CiAKKwkJCQkJLyoKKwkJ CQkJICogQ2hlY2sgaWYgdGhlIHJlY29yZCdzIGNvbXBvc2l0ZSB0eXBlIHdhcyBhbHRlcmVkIHNp bmNlCisJCQkJCSAqIHRoZSByZWNvcmQgd2FzIHBvcHVsYXRlZC4gSWYgc28sIHJhaXNlIGFuIGVy cm9yIHRvCisJCQkJCSAqIHByZXZlbnQgY3Jhc2hlcyB3aGVuIHN0b3JpbmcgdG8gdGhlIHR1cGxl c3RvcmUuCisJCQkJCSAqLworCQkJCQlpZiAocmVjLT5yZWN0eXBlaWQgIT0gUkVDT1JET0lEICYm IHJlYy0+ZXJoICE9IE5VTEwpCisJCQkJCQljaGVja19yZWNvcmRfdHlwZV9ub3RfYWx0ZXJlZChy ZWMpOworCiAJCQkJCS8qIElmIHJlYyBpcyBudWxsLCB0cnkgdG8gY29udmVydCBpdCB0byBhIHJv dyBvZiBudWxscyAqLwogCQkJCQlpZiAocmVjLT5lcmggPT0gTlVMTCkKIAkJCQkJCWluc3RhbnRp YXRlX2VtcHR5X3JlY29yZF92YXJpYWJsZShlc3RhdGUsIHJlYyk7CkBAIC03MDQyLDYgKzcwNzgs MTAgQEAgZXhlY19tb3ZlX3JvdyhQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAogCQkJCWlmIChy ZWMtPmVyaCkKIAkJCQkJRGVsZXRlRXhwYW5kZWRPYmplY3QoRXhwYW5kZWRSZWNvcmRHZXREYXR1 bShyZWMtPmVyaCkpOwogCQkJCXJlYy0+ZXJoID0gTlVMTDsKKwkJCQkvKiBDbGVhciBjb21wb3Np dGUgdHlwZSBzbmFwc2hvdCAqLworCQkJCXJlYy0+bkNvbXBUeXBlcyA9IDA7CisJCQkJcmVjLT5j b21wVHlwZU9pZHMgPSBOVUxMOworCQkJCXJlYy0+Y29tcFR5cGVWZXJzaW9ucyA9IE5VTEw7CiAJ CQl9CiAJCQlyZXR1cm47CiAJCX0KQEAgLTg5NjcsNiArOTAwNyw5IEBAIGFzc2lnbl9yZWNvcmRf dmFyKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsIFBMcGdTUUxfcmVjICpyZWMsCiAKIAkvKiAu Li4gYW5kIGluc3RhbGwgdGhlIG5ldyAqLwogCXJlYy0+ZXJoID0gZXJoOworCisJLyogU25hcHNo b3QgY29tcG9zaXRlIHR5cGUgdmVyc2lvbnMgZm9yIEFMVEVSIFRZUEUgZGV0ZWN0aW9uICovCisJ c25hcHNob3RfcmVjb3JkX2NvbXBvc2l0ZV90eXBlcyhlc3RhdGUsIHJlYyk7CiB9CiAKIC8qCkBA IC05MjE2LDMgKzkyNTksMTY3IEBAIGZvcm1hdF9wcmVwYXJlZHBhcmFtc2RhdGEoUExwZ1NRTF9l eGVjc3RhdGUgKmVzdGF0ZSwKIAogCXJldHVybiBwYXJhbXN0ci5kYXRhOwogfQorCisvKgorICog Y2hlY2tfcmVjb3JkX3R5cGVfbm90X2FsdGVyZWQKKyAqCisgKiBDaGVjayBpZiBhbnkgY29tcG9z aXRlIHR5cGUgcmVhY2hhYmxlIGZyb20gdGhpcyByZWNvcmQncyB0eXBlIGhhcyBiZWVuCisgKiBh bHRlcmVkIHNpbmNlIHRoZSByZWNvcmQgd2FzIHBvcHVsYXRlZC4gIElmIHNvLCByYWlzZSBhbiBl cnJvciB0byBwcmV2ZW50CisgKiBjcmFzaGVzIHRoYXQgd291bGQgb2NjdXIgd2hlbiBvdXRwdXR0 aW5nIGRhdGEgdGhhdCBubyBsb25nZXIgbWF0Y2hlcyB0aGUKKyAqIGN1cnJlbnQgdHlwZSBkZWZp bml0aW9uLgorICoKKyAqIFVzZXMgdGhlIGNvbXBvc2l0ZSB0eXBlIHZlcnNpb24gc25hcHNob3Qg dGFrZW4gYXQgcmVjb3JkIGFzc2lnbm1lbnQgdGltZQorICogdG8gZGV0ZWN0IGNoYW5nZXMgaW4g Ym90aCB0aGUgb3V0ZXJtb3N0IHR5cGUgYW5kIGFueSBuZXN0ZWQgY29tcG9zaXRlIHR5cGVzLgor ICovCitzdGF0aWMgdm9pZAorY2hlY2tfcmVjb3JkX3R5cGVfbm90X2FsdGVyZWQoUExwZ1NRTF9y ZWMgKnJlYykKK3sKKwlpbnQJCQlpOworCisJLyogTm90aGluZyB0byBkbyBmb3IgYW5vbnltb3Vz IFJFQ09SRCB0eXBlIG9yIG5vIHNuYXBzaG90ICovCisJaWYgKHJlYy0+cmVjdHlwZWlkID09IFJF Q09SRE9JRCB8fCByZWMtPm5Db21wVHlwZXMgPD0gMCkKKwkJcmV0dXJuOworCisJZm9yIChpID0g MDsgaSA8IHJlYy0+bkNvbXBUeXBlczsgaSsrKQorCXsKKwkJVHlwZUNhY2hlRW50cnkgKnR5cGVu dHJ5OworCisJCXR5cGVudHJ5ID0gbG9va3VwX3R5cGVfY2FjaGUocmVjLT5jb21wVHlwZU9pZHNb aV0sIFRZUEVDQUNIRV9UVVBERVNDKTsKKworCQlpZiAodHlwZW50cnktPnR1cERlc2NfaWRlbnRp ZmllciAhPSByZWMtPmNvbXBUeXBlVmVyc2lvbnNbaV0pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygiY2Fu bm90IHJldHVybiByZWNvcmQgdmFyaWFibGUgXCIlc1wiIGFmdGVyIGNvbXBvc2l0ZSB0eXBlIFwi JXNcIiB3YXMgYWx0ZXJlZCIsCisJCQkJCQkJcmVjLT5yZWZuYW1lLAorCQkJCQkJCWZvcm1hdF90 eXBlX2JlKHJlYy0+Y29tcFR5cGVPaWRzW2ldKSksCisJCQkJCSBlcnJoaW50KCJSZWFzc2lnbiB0 aGUgcmVjb3JkIHZhcmlhYmxlIGFmdGVyIEFMVEVSIFRZUEUuIikpKTsKKwl9Cit9CisKKy8qCisg KiBjb2xsZWN0X2NvbXBvc2l0ZV90eXBlX3ZlcnNpb25zCisgKgorICogUmVjdXJzaXZlbHkgY29s bGVjdCB0dXBEZXNjX2lkZW50aWZpZXIgdmFsdWVzIGZvciBhIGNvbXBvc2l0ZSB0eXBlIGFuZAor ICogYWxsIGNvbXBvc2l0ZSB0eXBlcyByZWFjaGFibGUgZnJvbSBpdHMgYXR0cmlidXRlcy4gIFNr aXBzIGFub255bW91cworICogUkVDT1JEIHR5cGVzIGFuZCB0eXBlcyBhbHJlYWR5IHJlY29yZGVk ICh0byBwcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvbikuCisgKgorICogb2lkcy92ZXJzaW9ucyBh cnJheXMgYXJlIHJlcGFsbG9jJ2QgYXMgbmVlZGVkOyBuL2FsbG9jIHVwZGF0ZWQgaW4gcGxhY2Uu CisgKi8KK3N0YXRpYyB2b2lkCitjb2xsZWN0X2NvbXBvc2l0ZV90eXBlX3ZlcnNpb25zKE9pZCB0 eXBpZCwKKwkJCQkJCQkJT2lkICoqb2lkcywgdWludDY0ICoqdmVyc2lvbnMsCisJCQkJCQkJCWlu dCAqbiwgaW50ICphbGxvYykKK3sKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnk7CisJVHVwbGVE ZXNjCXR1cGRlc2M7CisJaW50CQkJaTsKKworCS8qIFNraXAgaWYgYWxyZWFkeSByZWNvcmRlZCAq LworCWZvciAoaSA9IDA7IGkgPCAqbjsgaSsrKQorCXsKKwkJaWYgKCgqb2lkcylbaV0gPT0gdHlw aWQpCisJCQlyZXR1cm47CisJfQorCisJdHlwZW50cnkgPSBsb29rdXBfdHlwZV9jYWNoZSh0eXBp ZCwgVFlQRUNBQ0hFX1RVUERFU0MpOworCisJLyogR3JvdyBhcnJheXMgaWYgbmVlZGVkICovCisJ aWYgKCpuID49ICphbGxvYykKKwl7CisJCSphbGxvYyAqPSAyOworCQkqb2lkcyA9IHJlcGFsbG9j KCpvaWRzLCAqYWxsb2MgKiBzaXplb2YoT2lkKSk7CisJCSp2ZXJzaW9ucyA9IHJlcGFsbG9jKCp2 ZXJzaW9ucywgKmFsbG9jICogc2l6ZW9mKHVpbnQ2NCkpOworCX0KKworCSgqb2lkcylbKm5dID0g dHlwaWQ7CisJKCp2ZXJzaW9ucylbKm5dID0gdHlwZW50cnktPnR1cERlc2NfaWRlbnRpZmllcjsK KwkoKm4pKys7CisKKwl0dXBkZXNjID0gdHlwZW50cnktPnR1cERlc2M7CisJaWYgKHR1cGRlc2Mg PT0gTlVMTCkKKwkJcmV0dXJuOworCisJLyogUmVjdXJzZSBpbnRvIGNvbXBvc2l0ZS10eXBlIGF0 dHJpYnV0ZXMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgdHVwZGVzYy0+bmF0dHM7IGkrKykKKwl7CisJ CUZvcm1fcGdfYXR0cmlidXRlIGF0dHIgPSBUdXBsZURlc2NBdHRyKHR1cGRlc2MsIGkpOworCQlP aWQJCQlhdHRydHlwaWQ7CisJCWNoYXIJCXR5cHR5cGU7CisKKwkJaWYgKGF0dHItPmF0dGlzZHJv cHBlZCkKKwkJCWNvbnRpbnVlOworCisJCWF0dHJ0eXBpZCA9IGF0dHItPmF0dHR5cGlkOworCQlp ZiAoYXR0cnR5cGlkID09IFJFQ09SRE9JRCkKKwkJCWNvbnRpbnVlOworCisJCXR5cHR5cGUgPSBn ZXRfdHlwdHlwZShhdHRydHlwaWQpOworCisJCS8qIFJlc29sdmUgZG9tYWluIHR5cGVzIHRvIHRo ZWlyIGJhc2UgdHlwZSAqLworCQlpZiAodHlwdHlwZSA9PSBUWVBUWVBFX0RPTUFJTikKKwkJewor CQkJYXR0cnR5cGlkID0gZ2V0QmFzZVR5cGUoYXR0cnR5cGlkKTsKKwkJCXR5cHR5cGUgPSBnZXRf dHlwdHlwZShhdHRydHlwaWQpOworCQl9CisKKwkJaWYgKHR5cHR5cGUgPT0gVFlQVFlQRV9DT01Q T1NJVEUpCisJCQljb2xsZWN0X2NvbXBvc2l0ZV90eXBlX3ZlcnNpb25zKGF0dHJ0eXBpZCwKKwkJ CQkJCQkJCQkgICBvaWRzLCB2ZXJzaW9ucywgbiwgYWxsb2MpOworCX0KK30KKworLyoKKyAqIHNu YXBzaG90X3JlY29yZF9jb21wb3NpdGVfdHlwZXMKKyAqCisgKiBUYWtlIGEgc25hcHNob3Qgb2Yg dHVwRGVzY19pZGVudGlmaWVyIHZhbHVlcyBmb3IgYWxsIGNvbXBvc2l0ZSB0eXBlcworICogcmVh Y2hhYmxlIGZyb20gdGhlIHJlY29yZCdzIGRlY2xhcmVkIHR5cGUuICBDYWxsZWQgd2hlbiBhIHJl Y29yZCB2YXJpYWJsZQorICogaXMgYXNzaWduZWQgYSBuZXcgdmFsdWUsIHNvIHRoYXQgY2hlY2tf cmVjb3JkX3R5cGVfbm90X2FsdGVyZWQoKSBjYW4KKyAqIGRldGVjdCBtaWQtdHJhbnNhY3Rpb24g QUxURVIgVFlQRSBhdCBSRVRVUk4gdGltZS4KKyAqLworc3RhdGljIHZvaWQKK3NuYXBzaG90X3Jl Y29yZF9jb21wb3NpdGVfdHlwZXMoUExwZ1NRTF9leGVjc3RhdGUgKmVzdGF0ZSwKKwkJCQkJCQkJ UExwZ1NRTF9yZWMgKnJlYykKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwlpbnQJCQlhbGxv YyA9IDg7CisJaW50CQkJbiA9IDA7CisJT2lkCQkgICAqb2lkczsKKwl1aW50NjQJICAgKnZlcnNp b25zOworCisJLyogTm90aGluZyB0byBkbyBmb3IgYW5vbnltb3VzIFJFQ09SRCB0eXBlICovCisJ aWYgKHJlYy0+cmVjdHlwZWlkID09IFJFQ09SRE9JRCkKKwl7CisJCXJlYy0+bkNvbXBUeXBlcyA9 IDA7CisJCXJldHVybjsKKwl9CisKKwlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0 YXRlLT5kYXR1bV9jb250ZXh0KTsKKwlvaWRzID0gcGFsbG9jKGFsbG9jICogc2l6ZW9mKE9pZCkp OworCXZlcnNpb25zID0gcGFsbG9jKGFsbG9jICogc2l6ZW9mKHVpbnQ2NCkpOworCisJY29sbGVj dF9jb21wb3NpdGVfdHlwZV92ZXJzaW9ucyhyZWMtPnJlY3R5cGVpZCwKKwkJCQkJCQkJCSZvaWRz LCAmdmVyc2lvbnMsICZuLCAmYWxsb2MpOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4 dCk7CisKKwlpZiAobiA+IDApCisJeworCQkvKiBGcmVlIHByZXZpb3VzIHNuYXBzaG90IGlmIGFu eSAqLworCQlpZiAocmVjLT5jb21wVHlwZU9pZHMpCisJCQlwZnJlZShyZWMtPmNvbXBUeXBlT2lk cyk7CisJCWlmIChyZWMtPmNvbXBUeXBlVmVyc2lvbnMpCisJCQlwZnJlZShyZWMtPmNvbXBUeXBl VmVyc2lvbnMpOworCisJCXJlYy0+bkNvbXBUeXBlcyA9IG47CisJCXJlYy0+Y29tcFR5cGVPaWRz ID0gb2lkczsKKwkJcmVjLT5jb21wVHlwZVZlcnNpb25zID0gdmVyc2lvbnM7CisJfQorCWVsc2UK Kwl7CisJCXBmcmVlKG9pZHMpOworCQlwZnJlZSh2ZXJzaW9ucyk7CisJCXJlYy0+bkNvbXBUeXBl cyA9IDA7CisJCXJlYy0+Y29tcFR5cGVPaWRzID0gTlVMTDsKKwkJcmVjLT5jb21wVHlwZVZlcnNp b25zID0gTlVMTDsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxwZ3Nx bC5oIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BscGdzcWwuaAppbmRleCBhZGRiMTRhOTk1OS4uY2Y5 YTY1NzYxM2QgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbHBnc3FsLmgKKysrIGIv c3JjL3BsL3BscGdzcWwvc3JjL3BscGdzcWwuaApAQCAtNDM1LDYgKzQzNSwxNSBAQCB0eXBlZGVm IHN0cnVjdCBQTHBnU1FMX3JlYwogCiAJLyogV2UgYWx3YXlzIHN0b3JlIHJlY29yZCB2YXJpYWJs ZXMgYXMgImV4cGFuZGVkIiByZWNvcmRzICovCiAJRXhwYW5kZWRSZWNvcmRIZWFkZXIgKmVyaDsK KworCS8qCisJICogQ29tcG9zaXRlIHR5cGUgdmVyc2lvbiBzbmFwc2hvdCBmb3IgQUxURVIgVFlQ RSBkZXRlY3Rpb24uCisJICogUG9wdWxhdGVkIHdoZW4gdGhlIHJlY29yZCBpcyBhc3NpZ25lZDsg Y2hlY2tlZCBhdCBSRVRVUk4gdGltZS4KKwkgKiBJbmNsdWRlcyB0aGUgb3V0ZXJtb3N0IHR5cGUg YW5kIGFsbCBuZXN0ZWQgY29tcG9zaXRlIHR5cGVzLgorCSAqLworCWludAkJCW5Db21wVHlwZXM7 CisJT2lkCQkgICAqY29tcFR5cGVPaWRzOworCXVpbnQ2NAkgICAqY29tcFR5cGVWZXJzaW9uczsK IH0gUExwZ1NRTF9yZWM7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvcGwvcGxwZ3NxbC9zcmMvc3Fs L3BscGdzcWxfcmVjb3JkLnNxbCBiL3NyYy9wbC9wbHBnc3FsL3NyYy9zcWwvcGxwZ3NxbF9yZWNv cmQuc3FsCmluZGV4IDRmYmVkMzhiOGJiLi45NWY0MGUxNWIyZiAxMDA2NDQKLS0tIGEvc3JjL3Bs L3BscGdzcWwvc3JjL3NxbC9wbHBnc3FsX3JlY29yZC5zcWwKKysrIGIvc3JjL3BsL3BscGdzcWwv c3JjL3NxbC9wbHBnc3FsX3JlY29yZC5zcWwKQEAgLTU3NywzICs1NzcsNjEgQEAgaW5zZXJ0IGlu dG8gdHdvX2ludDhzX3RhYiB2YWx1ZXMgKGNvbXByZXN1bHQoNDIpKTsKIC0tIHJlY29ubmVjdCBz byB3ZSBsb3NlIGFueSBsb2NhbCBrbm93bGVkZ2Ugb2YgYW5vbnltb3VzIHJlY29yZCB0eXBlcwog XGMgLQogdGFibGUgdHdvX2ludDhzX3RhYjsKKworLS0gVGVzdHMgZm9yIGJ1ZyAjMTkzODI6IHNl cnZlciBjcmFzaCB3aGVuIEFMVEVSIFRZUEUgaXMgdXNlZCBtaWQtdHJhbnNhY3Rpb24KKy0tIGlu IFBML3BnU1FMLiBSZWNvcmQgdmFyaWFibGVzIHBvcHVsYXRlZCBiZWZvcmUgQUxURVIgVFlQRSBt dXN0IG5vdCBiZQorLS0gcmV0dXJuZWQsIGFzIHRoZSBzdG9yZWQgZGF0YSBubyBsb25nZXIgbWF0 Y2hlcyB0aGUgY3VycmVudCB0eXBlIGRlZmluaXRpb24uCisKKy0tIENhc2UgMTogRGlyZWN0IGNv bXBvc2l0ZSB0eXBlIGNoYW5nZSAoSU5UIC0+IFRFWFQpCitjcmVhdGUgdHlwZSBidWcxOTM4Ml9m b28gYXMgKGEgaW50LCBiIGludCk7CitjcmVhdGUgZnVuY3Rpb24gYnVnMTkzODJfdGVzdF9kaXJl Y3QoKSByZXR1cm5zIHJlY29yZCBhcyAkJAorZGVjbGFyZSByIGJ1ZzE5MzgyX2ZvbyA6PSByb3co MTIzLCBwb3dlcigyLCAzMCkpOworYmVnaW4KKyAgICBhbHRlciB0eXBlIGJ1ZzE5MzgyX2ZvbyBh bHRlciBhdHRyaWJ1dGUgYiB0eXBlIHRleHQ7CisgICAgcmV0dXJuIHI7CitlbmQ7CiskJCBsYW5n dWFnZSBwbHBnc3FsOworc2VsZWN0IGJ1ZzE5MzgyX3Rlc3RfZGlyZWN0KCk7Citkcm9wIGZ1bmN0 aW9uIGJ1ZzE5MzgyX3Rlc3RfZGlyZWN0KCk7Citkcm9wIHR5cGUgYnVnMTkzODJfZm9vIGNhc2Nh ZGU7CisKKy0tIENhc2UgMjogTmVzdGVkIGNvbXBvc2l0ZSB0eXBlIGNoYW5nZQorY3JlYXRlIHR5 cGUgYnVnMTkzODJfaW5uZXIgYXMgKHggaW50LCB5IGludCk7CitjcmVhdGUgdHlwZSBidWcxOTM4 Ml9vdXRlciBhcyAoYSBpbnQsIGIgYnVnMTkzODJfaW5uZXIpOworY3JlYXRlIGZ1bmN0aW9uIGJ1 ZzE5MzgyX3Rlc3RfbmVzdGVkKCkgcmV0dXJucyByZWNvcmQgYXMgJCQKK2RlY2xhcmUgciBidWcx OTM4Ml9vdXRlcjsKK2JlZ2luCisgICAgciA6PSByb3coMSwgcm93KDEwLCBwb3dlcigyLCAzMCk6 OmludDQpOjpidWcxOTM4Ml9pbm5lcik6OmJ1ZzE5MzgyX291dGVyOworICAgIGFsdGVyIHR5cGUg YnVnMTkzODJfaW5uZXIgYWx0ZXIgYXR0cmlidXRlIHkgdHlwZSB0ZXh0OworICAgIHJldHVybiBy OworZW5kOworJCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK3NlbGVjdCBidWcxOTM4Ml90ZXN0X25lc3Rl ZCgpOworZHJvcCBmdW5jdGlvbiBidWcxOTM4Ml90ZXN0X25lc3RlZCgpOworZHJvcCB0eXBlIGJ1 ZzE5MzgyX291dGVyIGNhc2NhZGU7Citkcm9wIHR5cGUgYnVnMTkzODJfaW5uZXIgY2FzY2FkZTsK KworLS0gQ2FzZSAzOiBPVVQgcGFyYW1ldGVyCitjcmVhdGUgdHlwZSBidWcxOTM4Ml9mb28xIGFz IChhIGludCwgYiBpbnQpOworY3JlYXRlIGZ1bmN0aW9uIGJ1ZzE5MzgyX3Rlc3Rfb3V0KG91dCBy MSBidWcxOTM4Ml9mb28xKSBhcyAkJAorYmVnaW4KKyAgICByMSA6PSByb3coMSwgMik7CisgICAg YWx0ZXIgdHlwZSBidWcxOTM4Ml9mb28xIGFsdGVyIGF0dHJpYnV0ZSBiIHR5cGUgdGV4dDsKKyAg ICByZXR1cm47CitlbmQ7CiskJCBsYW5ndWFnZSBwbHBnc3FsOworc2VsZWN0IGJ1ZzE5MzgyX3Rl c3Rfb3V0KCk7Citkcm9wIGZ1bmN0aW9uIGJ1ZzE5MzgyX3Rlc3Rfb3V0KCk7Citkcm9wIHR5cGUg YnVnMTkzODJfZm9vMSBjYXNjYWRlOworCistLSBDYXNlIDQ6IE5vIEFMVEVSIFRZUEUgKGJhc2Vs aW5lIOKAlCBtdXN0IG5vdCBlcnJvcikKK2NyZWF0ZSB0eXBlIGJ1ZzE5MzgyX2ZvbzIgYXMgKGEg aW50LCBiIGludCk7CitjcmVhdGUgZnVuY3Rpb24gYnVnMTkzODJfdGVzdF9iYXNlbGluZSgpIHJl dHVybnMgYnVnMTkzODJfZm9vMiBhcyAkJAorZGVjbGFyZSByIGJ1ZzE5MzgyX2ZvbzIgOj0gcm93 KDEsIDIpOworYmVnaW4KKyAgICByZXR1cm4gcjsKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWw7 CitzZWxlY3QgYnVnMTkzODJfdGVzdF9iYXNlbGluZSgpOworZHJvcCBmdW5jdGlvbiBidWcxOTM4 Ml90ZXN0X2Jhc2VsaW5lKCk7Citkcm9wIHR5cGUgYnVnMTkzODJfZm9vMjsKLS0gCjIuMzkuNSAo QXBwbGUgR2l0LTE1NCkKCg== --000000000000cdef2c064eff637f--