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 1w8REx-000X2P-2F for pgsql-bugs@arkaria.postgresql.org; Thu, 02 Apr 2026 23:14:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w8REu-008g8a-1l for pgsql-bugs@arkaria.postgresql.org; Thu, 02 Apr 2026 23:14:16 +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 1w8REu-008g8S-0b for pgsql-bugs@lists.postgresql.org; Thu, 02 Apr 2026 23:14:16 +0000 Received: from mail-ot1-x329.google.com ([2607:f8b0:4864:20::329]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w8REr-00000000HQd-3JCm for pgsql-bugs@lists.postgresql.org; Thu, 02 Apr 2026 23:14:16 +0000 Received: by mail-ot1-x329.google.com with SMTP id 46e09a7af769-7d751ef36ccso930877a34.0 for ; Thu, 02 Apr 2026 16:14:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775171652; cv=none; d=google.com; s=arc-20240605; b=gIkA2XCibUS+SZi+hQZobiaibH0dGFyVU9JIHnbXfo92OHBojjQxUHOxMkMp6DsV0T JnbraTLzPYNKjwJR4PvI01Uucwep8ODBkt8E9XAg7uPnyA8/+CiMGlWcfmT+PlR8lX2z Az3DUElhYj58qH8U6a0eomBh3Lvp6RRVbLMylsuCQw0Ub6insKbkF3Bbf3GS+eQ/KbSE NIRRuq8yyc33vGvDc2w5oCNKl4WRoWa9tDy3wbcs8z/bnQLBm6K/TEIWsgNI2gWszKa1 eqw9x3vY2Y9Zqwi9smbef1jJ9FVR8W+KRQoGp2BDJAiNZfn4mTw1XZUfqhmXFIUqA3Wt fS0g== 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=9fkuHJxaRbf30pZE/QYYjLFzADVckCKraYmBLiw0xhw=; fh=usc2aFgycQFAEe3I28MZnsr2YmuZq+kRr5LMwG7lGPM=; b=JIjXAjWVKiri1DUXfmD12I3otpRZ6ZoP880uyzazVEP2GbZ017RIUT9HYqa2ed8O96 q5cnrLt2hGeejD5+gfZGlLZDHhlQ4rnpI4irQ9paqTzi3wqwshi3OfCJExDojH5hbmB0 6PsPoatDZxKDGqPISa2ZyWNP+a0wE23EhaVaOoTAustiAts/h+xEKeUKk3LLdat6B5mg /lhHCZAgZIBff4HvZRgiSer6FzxpVjAuSxRqIw8I2hikbkDjJz60sbEnCV1I5MM3kmqo bqADhP3dU87rFV2p2HylPS4X7YaWrzGp3QJjRsQtoMFfbQxpJBXsJaqwWIoMdqaWTCyv VxYQ==; 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=1775171652; x=1775776452; 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=9fkuHJxaRbf30pZE/QYYjLFzADVckCKraYmBLiw0xhw=; b=ji9MPZHh2ztK3G97CdXzuX/+pUJ2zQTrtPsx+UXqOG/cXNbM3uGSquzUGg66OTxBvo Q6gFz1XScKKhFSLVeb/ff0+YlvlmjNBWnv6SZkdPEe9a2wlpE4pmJuLjPwSspXlKdIBH JxL3Zez8LnumiHGyrOF106ucF7vK3M96+j7wUZYkdZxF23Upl7PPdxmXEMQ7AhP+J3YG MTBld47A5raua007KPk9H6oBeT5VL3kn/y/wf1qbjK6oixXCOgPPWuaUgbn54VlVI1zr BYhFsugTSdrhLYg4PfKK5mHYl57Olkxojh7nIuyQ9UEgo/GaM3VjD+nQFUvLLjdfDTMn qKSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775171652; x=1775776452; 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=9fkuHJxaRbf30pZE/QYYjLFzADVckCKraYmBLiw0xhw=; b=Lid0eAPps3P6Mk1jMaoz3Oj+7iUqNk5nBWsJfkIvjjoAoQcJUrgTkBiwEdgMrzDCwE Zc97dYZixGDb/GeW9zsQ8Aq09dI1nIH8TBJnkARi//oQf4Dr+i3ulnHZVpYHkCieRMyO NPQgBp/K2kdeFH/0GXlIuFJ1lz03hIggeSg/lA8z8WcmiuMKizGlBH/EZMqRBd1h3b5A VCRPgK3asQpSlFXxM/FQmOi5tuYc0RH2vWAKmX1ekPpbxcT+YJ7EZ6YXvmQnTYi10pW5 N0Nyb9o6rGAFzc7Yp50vv123K0NiZ2W8NlUngupMiNcmnjDL1zjyr/mehdtw+OIhSPv+ jZaw== X-Forwarded-Encrypted: i=1; AJvYcCVVm6gRiFvOYNMWhTXVxZdOMXjdyKVbT4kx2Y/+dp4QAEiYofagGZhWeUhmzDkDrXWZfzvh4hneU27h@lists.postgresql.org X-Gm-Message-State: AOJu0YyHIjo2iH51A7/WsA2gPqzGjTBoKhUxx+yArS053q/pLAnjkZrL yPzPQJnXfC4xKXJREHh5azl/ySMu8gz/5LCwV2ChJux7KDtiZXbg2gGxsRJzIGbJEDbPkj1aB3X Uztavt1tHC/b1q8LCsZABhjD4RCCcdb8= X-Gm-Gg: ATEYQzxiqcrLCqb/Is6EmMhgPYmlktaQM2SVW53QMGYz/zcZMT6HDdwE9EaZ0ZyOpEW IPskAsFSrht2EEd0TkkqToZUC0/pQtoCD4kUJJHsidL/VZXKwL+qt52R2UCbwj/6Qr0RWuwok37 oCtHnMjqDhRPBnq8IbBPQ5jB1HpmrxrXlHjiwN9tzvnYY3DBXaaKmyUbOUe+Bq+2jS1jfeX4j2q 1PpVADlKqP9SE4fynUqJwpJTlKid4cwjkZwiH0CRJS3lEhBMUbp04oMrZuGkgPjYk84FkS52w1+ OhWoQgo= X-Received: by 2002:a05:6830:dcc:b0:7d7:ef60:e9c6 with SMTP id 46e09a7af769-7dbb738ac47mr659840a34.9.1775171651598; Thu, 02 Apr 2026 16:14:11 -0700 (PDT) MIME-Version: 1.0 References: <19382-4c2060ffee72759b@postgresql.org> In-Reply-To: From: surya poondla Date: Thu, 2 Apr 2026 16:14:00 -0700 X-Gm-Features: AQROBzAjAGOlf0qDlPyz6l_WmEUacjjrpQXR20ZR5fURnoifo47RvybcPKIDHcA 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="000000000000b5d5cf064e825b51" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b5d5cf064e825b51 Content-Type: multipart/alternative; boundary="000000000000b5d5ce064e825b4f" --000000000000b5d5ce064e825b4f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi All, Thanks for the review Andrey. On Thu, Apr 2, 2026 at 4:18=E2=80=AFAM Andrey Borodin wrote: > Hi! > > Thanks for working on this! > > > On 20 Mar 2026, at 23:16, surya poondla wrote= : > > > > I'll post an updated patch with this improvement. > > After your patch Postgres still crashes on this test: > > CREATE TYPE foo AS (a INT, b INT); > BEGIN; > DECLARE c CURSOR FOR SELECT (i, power(2, 30))::foo FROM > generate_series(1,10) i; > FETCH c; > ALTER TYPE foo ALTER ATTRIBUTE b TYPE TEXT; > FETCH c; > COMMIT; > > This test case was proposed in this thread, but I suggest treating this a= s > a separate bug needing separate fix. > Thank you for reporting this. Yes the cursor case can be treated as a separate bug. Though the 2 crash scenarios have the same root cause (record_out() interpreting old data with new type definition) they require different fix requirements. 1. PL/pgSQL case (this patch): ExpandedRecords already carry er_tupdesc_id the version tracking infrastructure exists. The fix detects the mismatch and converts the data. This is a self-contained bug fix using existing mechanisms. 2. Cursor case: Flat HeapTuples carry no type version information, they only have the type OID, which doesn't change after ALTER TYPE. Fixing this requires adding new infrastructure that PostgreSQL doesn't have today (e.g., storing tupDesc_identifier in Portal structures, or adding version fields to HeapTupleHeaders). This is a broader architectural change that affects core structures like PortalData, pquery.c, and potentially portalmem.c. We need to see how to add version tracking to composite-type values. I will work on this fix in parallel. > In my opinion in both cases (PL/pgSQL + CURSOR) we should error out > instead of trying to remediate type changes. > > I've simplified the fix. Instead of converting the record data, we now raise a clear error when a composite type is altered mid-transaction after the record was populated. This also addresses the performance concern raised earlier since there's no conversion logic at all now. Updated patch attached. Regards, Surya Poondla --000000000000b5d5ce064e825b4f Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi All,

Thanks for the review Andr= ey.

On Thu, Apr 2, 2026 at 4:18=E2=80=AFAM Andrey= Borodin <x4mmm@yandex-team.ru> wrote:
Hi= !

Thanks for working on this!

> On 20 Mar 2026, at 23:16, surya poondla <
suryapoondla4@gmail.com> wrote: >
> I'll post an updated patch with this improvement.

After your patch Postgres still crashes on this test:

CREATE TYPE foo AS (a INT, b INT);
BEGIN;
DECLARE c CURSOR FOR SELECT (i, power(2, 30))::foo FROM generate_series(1,1= 0) i;
FETCH c;
ALTER TYPE foo ALTER ATTRIBUTE b TYPE TEXT;
FETCH c;
COMMIT;

This test case was proposed in this thread, but I suggest treating this as = a separate bug needing separate fix.

Th= ank you for reporting this. Yes the cursor case can be treated as a separat= e bug.
Though the 2 crash scenarios have the same root cause (record_out= () interpreting old data with new type definition) they require different f= ix requirements.
1. PL/pgSQL case (this patch): ExpandedRecords already = carry er_tupdesc_id the version tracking infrastructure exists. The fix det= ects the mismatch and converts the data. This is a self-contained bug fix u= sing existing mechanisms.
2. Cursor case: Flat HeapTuples carry no type = version information, they only have the type OID, which doesn't change = after ALTER TYPE. Fixing this requires adding new infrastructure that Postg= reSQL doesn't have today (e.g., storing tupDesc_identifier in Portal st= ructures, or adding version fields to HeapTupleHeaders). This is a broader = architectural change that affects core structures like PortalData, pquery.c= , and potentially portalmem.c. We need to see how to add version tracking t= o composite-type values. I will work on this fix in parallel.

=C2=A0=
In my opinion in both cases (PL/pgSQL + CURSOR) we should error out instead= of trying to remediate type changes.

I've simplifi= ed the fix. Instead of converting the record data, we now raise a clear err= or when a composite type is altered mid-transaction after the record was po= pulated.
This also addresses the performance concern raised earlier sinc= e there's no conversion logic at all now. =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
Updated patch attached.
=C2=A0
Regards,
Surya Poondla
--000000000000b5d5ce064e825b4f-- --000000000000b5d5cf064e825b51 Content-Type: application/octet-stream; name="0004-Fix-bug-19382-server-crash-when-ALTER-TYPE-is-used-m.patch" Content-Disposition: attachment; filename="0004-Fix-bug-19382-server-crash-when-ALTER-TYPE-is-used-m.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mni3cqnj0 RnJvbSA1Yzg4NjdkNDIzMGJlZWIxYTNkMTJjZjQ1ZDY5OWVhOWFkMDI3MTgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzcG9vbmRsYSA8c19wb29uZGxhQGFwcGxlLmNvbT4KRGF0ZTog RnJpLCAyMyBKYW4gMjAyNiAxNzoyODo1NCAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjRdIEZpeCAo YnVnICMxOTM4Mikgc2VydmVyIGNyYXNoIHdoZW4gQUxURVIgVFlQRSBpcyB1c2VkCiBtaWQtdHJh bnNhY3Rpb24gaW4gUEwvcGdTUUwKCldoZW4gQUxURVIgVFlQRSBjaGFuZ2VzIGEgY29tcG9zaXRl IHR5cGUncyBjb2x1bW4gdHlwZXMgd2l0aGluIGEKdHJhbnNhY3Rpb24sIFBML3BnU1FMIHJlY29y ZCB2YXJpYWJsZXMgdGhhdCB3ZXJlIHBvcHVsYXRlZCBiZWZvcmUKdGhlIEFMVEVSIHN0aWxsIGhv bGQgZGF0YSBpbiB0aGUgb2xkIGZvcm1hdC4gUmV0dXJuaW5nIHN1Y2ggcmVjb3JkcwpjYXVzZXMg YSBjcmFzaCBiZWNhdXNlIHRoZSBvdXRwdXQgZnVuY3Rpb25zIGV4cGVjdCBkYXRhIG1hdGNoaW5n IHRoZQpuZXcgdHlwZSBkZWZpbml0aW9uLCBub3QgdGhlIG9sZCBvbmUuCgpUaGUgY3Jhc2ggbWFu aWZlc3RlZCBhcyBhIHNlZ21lbnRhdGlvbiBmYXVsdCBpbiByZWNvcmRfb3V0KCkgd2hlbiBpdAph dHRlbXB0ZWQgdG8gaW50ZXJwcmV0IGludGVnZXIgZGF0YSBhcyBhIHRleHQgcG9pbnRlciwgZHVl IHRvIHRoZQptaXNtYXRjaCBiZXR3ZWVuIHRoZSBzdG9yZWQgZGF0YSBhbmQgdGhlIGN1cnJlbnQg dHlwZSBkZWZpbml0aW9uLgotLS0KIHNyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMgfCA2OSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA2OCBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscGdzcWwv c3JjL3BsX2V4ZWMuYyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKaW5kZXggNjViMGZk MDc5MGYuLjYyNTBjNGE3NDhiIDEwMDY0NAotLS0gYS9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhl Yy5jCisrKyBiL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMKQEAgLTQ3MCw2ICs0NzAsNyBA QCBzdGF0aWMgY2hhciAqZm9ybWF0X3ByZXBhcmVkcGFyYW1zZGF0YShQTHBnU1FMX2V4ZWNzdGF0 ZSAqZXN0YXRlLAogc3RhdGljIFBMcGdTUUxfdmFyaWFibGUgKm1ha2VfY2FsbHN0bXRfdGFyZ2V0 KFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsCiAJCQkJCQkJCQkJCSAgUExwZ1NRTF9leHByICpl eHByKTsKIAorc3RhdGljIHZvaWQgY2hlY2tfcmVjb3JkX3R5cGVfbm90X2FsdGVyZWQoUExwZ1NR TF9yZWMgKnJlYyk7CiAKIC8qIC0tLS0tLS0tLS0KICAqIHBscGdzcWxfZXhlY19mdW5jdGlvbglD YWxsZWQgYnkgdGhlIGNhbGwgaGFuZGxlciBmb3IKQEAgLTMyODcsOCArMzI4OCwzMCBAQCBleGVj X3N0bXRfcmV0dXJuKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUsIFBMcGdTUUxfc3RtdF9yZXR1 cm4gKnN0bXQpCiAJCQkJfQogCQkJCWJyZWFrOwogCi0JCQljYXNlIFBMUEdTUUxfRFRZUEVfUk9X OgogCQkJY2FzZSBQTFBHU1FMX0RUWVBFX1JFQzoKKwkJCQl7CisJCQkJCVBMcGdTUUxfcmVjICpy ZWMgPSAoUExwZ1NRTF9yZWMgKikgcmV0dmFyOworCQkJCQlpbnQzMgkJcmV0dHlwbW9kOworCisJ CQkJCS8qCisJCQkJCSAqIENoZWNrIGlmIHRoZSByZWNvcmQncyBjb21wb3NpdGUgdHlwZSB3YXMg YWx0ZXJlZCBzaW5jZQorCQkJCQkgKiB0aGUgcmVjb3JkIHdhcyBwb3B1bGF0ZWQuIElmIHNvLCBy YWlzZSBhbiBlcnJvciB0bworCQkJCQkgKiBwcmV2ZW50IGNyYXNoZXMgd2hlbiBvdXRwdXR0aW5n IHRoZSByZWNvcmQuCisJCQkJCSAqLworCQkJCQlpZiAocmVjLT5yZWN0eXBlaWQgIT0gUkVDT1JE T0lEICYmIHJlYy0+ZXJoICE9IE5VTEwgJiYKKwkJCQkJCSFFeHBhbmRlZFJlY29yZElzRW1wdHko cmVjLT5lcmgpKQorCQkJCQkJY2hlY2tfcmVjb3JkX3R5cGVfbm90X2FsdGVyZWQocmVjKTsKKwor CQkJCQlleGVjX2V2YWxfZGF0dW0oZXN0YXRlLAorCQkJCQkJCQkJcmV0dmFyLAorCQkJCQkJCQkJ JmVzdGF0ZS0+cmV0dHlwZSwKKwkJCQkJCQkJCSZyZXR0eXBtb2QsCisJCQkJCQkJCQkmZXN0YXRl LT5yZXR2YWwsCisJCQkJCQkJCQkmZXN0YXRlLT5yZXRpc251bGwpOworCQkJCX0KKwkJCQlicmVh azsKKworCQkJY2FzZSBQTFBHU1FMX0RUWVBFX1JPVzoKIAkJCQl7CiAJCQkJCS8qIGV4ZWNfZXZh bF9kYXR1bSBjYW4gaGFuZGxlIHRoZXNlIGNhc2VzICovCiAJCQkJCWludDMyCQlyZXR0eXBtb2Q7 CkBAIC0zNDM0LDYgKzM0NTcsMTQgQEAgZXhlY19zdG10X3JldHVybl9uZXh0KFBMcGdTUUxfZXhl Y3N0YXRlICplc3RhdGUsCiAJCQkJCVR1cGxlRGVzYwlyZWNfdHVwZGVzYzsKIAkJCQkJVHVwbGVD b252ZXJzaW9uTWFwICp0dXBtYXA7CiAKKwkJCQkJLyoKKwkJCQkJICogQ2hlY2sgaWYgdGhlIHJl Y29yZCdzIGNvbXBvc2l0ZSB0eXBlIHdhcyBhbHRlcmVkIHNpbmNlCisJCQkJCSAqIHRoZSByZWNv cmQgd2FzIHBvcHVsYXRlZC4gSWYgc28sIHJhaXNlIGFuIGVycm9yIHRvCisJCQkJCSAqIHByZXZl bnQgY3Jhc2hlcyB3aGVuIHN0b3JpbmcgdG8gdGhlIHR1cGxlc3RvcmUuCisJCQkJCSAqLworCQkJ CQlpZiAocmVjLT5yZWN0eXBlaWQgIT0gUkVDT1JET0lEICYmIHJlYy0+ZXJoICE9IE5VTEwpCisJ CQkJCQljaGVja19yZWNvcmRfdHlwZV9ub3RfYWx0ZXJlZChyZWMpOworCiAJCQkJCS8qIElmIHJl YyBpcyBudWxsLCB0cnkgdG8gY29udmVydCBpdCB0byBhIHJvdyBvZiBudWxscyAqLwogCQkJCQlp ZiAocmVjLT5lcmggPT0gTlVMTCkKIAkJCQkJCWluc3RhbnRpYXRlX2VtcHR5X3JlY29yZF92YXJp YWJsZShlc3RhdGUsIHJlYyk7CkBAIC05MjE2LDMgKzkyNDcsMzkgQEAgZm9ybWF0X3ByZXBhcmVk cGFyYW1zZGF0YShQTHBnU1FMX2V4ZWNzdGF0ZSAqZXN0YXRlLAogCiAJcmV0dXJuIHBhcmFtc3Ry LmRhdGE7CiB9CisKKy8qCisgKiBjaGVja19yZWNvcmRfdHlwZV9ub3RfYWx0ZXJlZAorICoKKyAq IENoZWNrIGlmIGEgcmVjb3JkJ3MgY29tcG9zaXRlIHR5cGUgaGFzIGJlZW4gYWx0ZXJlZCBzaW5j ZSB0aGUgcmVjb3JkCisgKiB3YXMgcG9wdWxhdGVkLiBJZiBzbywgcmFpc2UgYW4gZXJyb3IgdG8g cHJldmVudCBjcmFzaGVzIHRoYXQgd291bGQKKyAqIG9jY3VyIHdoZW4gb3V0cHV0dGluZyBkYXRh IHRoYXQgbm8gbG9uZ2VyIG1hdGNoZXMgdGhlIGN1cnJlbnQgdHlwZQorICogZGVmaW5pdGlvbi4K KyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3JlY29yZF90eXBlX25vdF9hbHRlcmVkKFBMcGdTUUxf cmVjICpyZWMpCit7CisJRXhwYW5kZWRSZWNvcmRIZWFkZXIgKmVyaCA9IHJlYy0+ZXJoOworCVR5 cGVDYWNoZUVudHJ5ICp0eXBlbnRyeTsKKworCS8qIE5vdGhpbmcgdG8gZG8gZm9yIGFub255bW91 cyBSRUNPUkQgdHlwZSAqLworCWlmIChyZWMtPnJlY3R5cGVpZCA9PSBSRUNPUkRPSUQpCisJCXJl dHVybjsKKworCS8qIEdldCBjdXJyZW50IHR5cGUgZGVmaW5pdGlvbiBmcm9tIHR5cGNhY2hlICov CisJdHlwZW50cnkgPSBsb29rdXBfdHlwZV9jYWNoZShyZWMtPnJlY3R5cGVpZCwKKwkJCQkJCQkJ IFRZUEVDQUNIRV9UVVBERVNDIHwKKwkJCQkJCQkJIFRZUEVDQUNIRV9ET01BSU5fQkFTRV9JTkZP KTsKKwlpZiAodHlwZW50cnktPnR5cHR5cGUgPT0gVFlQVFlQRV9ET01BSU4pCisJCXR5cGVudHJ5 ID0gbG9va3VwX3R5cGVfY2FjaGUodHlwZW50cnktPmRvbWFpbkJhc2VUeXBlLAorCQkJCQkJCQkJ IFRZUEVDQUNIRV9UVVBERVNDKTsKKworCS8qIElmIHR5cGUgaGFzIGNoYW5nZWQgc2luY2UgdGhl IHJlY29yZCB3YXMgcG9wdWxhdGVkLCByYWlzZSBhbiBlcnJvciAqLworCWlmIChlcmgtPmVyX3R1 cGRlc2NfaWQgIT0gdHlwZW50cnktPnR1cERlc2NfaWRlbnRpZmllcikKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkgZXJybXNn KCJjYW5ub3QgcmV0dXJuIHJlY29yZCB2YXJpYWJsZSBcIiVzXCIgYWZ0ZXIgaXRzIGNvbXBvc2l0 ZSB0eXBlIHdhcyBhbHRlcmVkIiwKKwkJCQkJCXJlYy0+cmVmbmFtZSksCisJCQkJIGVycmRldGFp bCgiQUxURVIgVFlQRSBjaGFuZ2VkIHRoZSBkZWZpbml0aW9uIG9mIHR5cGUgXCIlc1wiIGFmdGVy IHRoZSByZWNvcmQgd2FzIHBvcHVsYXRlZC4iLAorCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUocmVj LT5yZWN0eXBlaWQpKSkpOworfQotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --000000000000b5d5cf064e825b51--