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 1wPgB2-000wim-35 for pgsql-bugs@arkaria.postgresql.org; Wed, 20 May 2026 12:37:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wPgB0-007fWf-1x for pgsql-bugs@arkaria.postgresql.org; Wed, 20 May 2026 12:37:31 +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 1wPgB0-007fWD-0K for pgsql-bugs@lists.postgresql.org; Wed, 20 May 2026 12:37:31 +0000 Received: from mail-yw1-x112b.google.com ([2607:f8b0:4864:20::112b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wPgAy-00000000UJ1-1Vkz for pgsql-bugs@lists.postgresql.org; Wed, 20 May 2026 12:37:30 +0000 Received: by mail-yw1-x112b.google.com with SMTP id 00721157ae682-7bd65714dcaso43262477b3.3 for ; Wed, 20 May 2026 05:37:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779280648; cv=none; d=google.com; s=arc-20240605; b=BZhO41sm20241yAtH99NF+U710FNfaHuWWyIpG3kaWK8yAhtTKyTLHyxlep1Sn6QVI YidCEtot/E4dMxPlLi+2xeHEw/OWrlxo3hDWZMfYna19lMSt8OIMhOFB5p7S5UiF+lX5 atMrIIPiEEDzFRLbCUQZ6+8MLTDeSMCdINiEUarCz5GSTOLmB6pBzEp99+gIMdlwjUUx ywjrw4hFQyadckyZR/GJskt96cAcer9mn4QMtS/Me0SOI5WaukaZasYiTKLyYsisB8IK Ro1W+3EF0CY5nnP04Gaa2z8NctmdAfJNiVcnwJLSVEZq0nWvG876hxNd+Lc4+9cj5LiO PWfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=bI46bGhK8yzi5jp8ptzPoWuTYjkwoScOHD83GrxlOPo=; fh=IQITLgGB9IJ5pwC3J0ScrM4IGLMQYu4pZHb+1/CVtLs=; b=R1AAV2FJAOChroqWGeOpBg710b+p8oiPcDYEiSkyxZq4NVXkvlRg903LdZ67OH4Veb 947jeUmVnDyVy/Qyjnp7sArx8ZRVMtk465e9K9EyP/x1ZsSE9Mne4R4lpbCINMIXhIaH UUKsVT8cjQ779qdK3ZBOU9nj4Y/Mm5S86T+6622QiUsx5N4VBFcJmzxvJjNoJZ2PsAVJ z8TOb9DpyUkurSx4yqh4QMLXiI5RZKMyTyIgsoiYEL7xh+t5NIl30OjloLm+PkRBGooI +BBloTo+FEumX5RoOGfDJ1dtOaVVN+atMXDWmbtiMjPp4wk5nLdD60Vk5ytXDyXQUF/d rJfw==; 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=1779280648; x=1779885448; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=bI46bGhK8yzi5jp8ptzPoWuTYjkwoScOHD83GrxlOPo=; b=NAlnNM6MIn/PAdsgyWkX55XFGFLjvQeb6ht9h3rnI626HK360M9LJUgh9p1sEvnRP0 tu6jDD4FtyKYuzPjpO+y8zxCCdMK1mz92vyXF8I2eZ8AfJbpEs9yndsWEEac8YH6AwOf VaKV4jZJhLdYIFX5qDf314GlL1h945xXCKjKlizvuuF2xFtV5mIFGBv/NM1oOa0u29Ak dh8YU1bfC997kndXMNSZHaNUZ8xdzCPzwMSK+4T/c7LwM94/zaUGH3eoiWXsy58D1YkB ryJ4e25owWVn4lJJlnbhEvoRUkxbz9chA9uZUIDxz+mF1DqlggELDWPnXhKBCJJuL1sS qXsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779280648; x=1779885448; h=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=bI46bGhK8yzi5jp8ptzPoWuTYjkwoScOHD83GrxlOPo=; b=XcTvWfLGrC9x/U+57wIIMH5dKT6LM8//rBtGPZ7et+2Abfogur2Yq9W5CYMwEnyVFB HtzhpZOikOcb/PHY4/QWAcJnSY82EWsth+UVsolaKqJQhkZkwdgc6G6uPO2jnjCNFB2X U4vrey2pN05+oEuIy7YYNsRSEi+NgWNFSdRqxsqwOJOPyhViZ02aylMQrXDPa9Zz3wIl AiVYhOp/1ZVArlqH+pXZjEtR96MyRF92EdwLYfrCthCwcqAbp5VlajoyjJyowhYXS8r7 QdHgdVNGuTVTcUK6AOF7AjprlJXnki9pAsGZeGE8hADuGzyFYGjaczRixkeTrNlfq84P 8w1A== X-Forwarded-Encrypted: i=1; AFNElJ/eeAiPB/WQKBe1dxXOxH+4N6CEAFNfu6zl2u9qFePTXI7l253Na1boJdUe8ILDH5A+NCMJFGIWbM97@lists.postgresql.org X-Gm-Message-State: AOJu0YwwcVyzCwfLFNECVykzDvmi/rar7n/Bs0kntJnsOJmIYpnHL22T XGQRqayj4IfLCU2R0eUHdKCk/FHJg8O4M9WC4tjYG23sd2G2tS2uL23K5gNeCPWKoKyXbodDhBd gYxjZCLXFQbpskWLq6F2w+LrOBt6mH9g= X-Gm-Gg: Acq92OHF1eQyhSiXXQGxuD52kfvNk9jNedusBMbZhZx0XwHilwZ0/fDtYUuEEVbmylA omn4z6ho87KeCBGotXdKcY0J0tkeR43GT4DCquge0uMvmKy/5AG8DSrrKxe2YRPFMu8kec0wc9G vD+qn+REbalqIxX2kQAJp2cP/eORVZhrl8fJMJwg/S0oYODXYNCS6kwVD+Suk+RmRmlfo5+fJ/v uvCYUYfICHRUeFtIa55q5/FpcOA9GsbMugePZa3hgkr5fQ41MEmcyn4p5q7Y2JrY8dwihR2jS3a c2CDm64Y6nNNH1c3 X-Received: by 2002:a05:690c:6081:b0:7c8:f80a:cb4e with SMTP id 00721157ae682-7c95d1d72d7mr267818237b3.35.1779280648116; Wed, 20 May 2026 05:37:28 -0700 (PDT) MIME-Version: 1.0 References: <19484-a3cb82c8cde3c8fa@postgresql.org> In-Reply-To: <19484-a3cb82c8cde3c8fa@postgresql.org> From: Ayush Tiwari Date: Wed, 20 May 2026 18:07:16 +0530 X-Gm-Features: AVHnY4KtHzv9FcZmZyBIRNjKcyNI4kLuL0DLMxa0B9BZkjxvQQLtmRctm8GK7jU Message-ID: Subject: Re: BUG #19484: Segmentation fault triggered by FDW To: 798604270@qq.com, pgsql-bugs@lists.postgresql.org, Etsuro Fujita Content-Type: multipart/mixed; boundary="000000000000fccb6106523f0e16" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000fccb6106523f0e16 Content-Type: multipart/alternative; boundary="000000000000fccb6006523f0e14" --000000000000fccb6006523f0e14 Content-Type: text/plain; charset="UTF-8" Hi, On Wed, 20 May 2026 at 03:59, PG Bug reporting form wrote: > The following bug has been logged on the website: > > Bug reference: 19484 > Logged by: Chi Zhang > Email address: 798604270@qq.com > PostgreSQL version: 18.4 > Operating system: Ubuntu 24.04 > Description: > > Hi, > > I found the following test case triggers a segmentation fault: > > ``` > \set ON_ERROR_STOP on > > CREATE EXTENSION postgres_fdw; > > CREATE SERVER loopback FOREIGN DATA WRAPPER postgres_fdw > OPTIONS ( > host '/path/to/pg_socket', > port '5432', > dbname :'dbname' > ); > > CREATE USER MAPPING FOR postgres SERVER loopback > OPTIONS (user 'postgres'); > > CREATE SCHEMA r; > CREATE TABLE r.remote_p2 (a int NOT NULL, b int); > > CREATE TABLE pt (a int NOT NULL, b int) PARTITION BY LIST (a); > CREATE TABLE pt_p1 PARTITION OF pt FOR VALUES IN (1); > CREATE FOREIGN TABLE pt_p2 PARTITION OF pt FOR VALUES IN (2) > SERVER loopback > OPTIONS (schema_name 'r', table_name 'remote_p2'); > > INSERT INTO pt_p1 VALUES (1, 10); > INSERT INTO r.remote_p2 VALUES (2, 20); > > SET plan_cache_mode = force_generic_plan; > > PREPARE upd(int) AS > UPDATE pt > SET b = b + 1 > WHERE a = $1 > RETURNING tableoid::regclass, a, b; > > EXPLAIN (costs off) EXECUTE upd(2); > EXECUTE upd(2); > SELECT * FROM r.remote_p2 ORDER BY a; > Thanks for the very precise repro, that made this easy to track down. I reproduced the crash on master. The plan EXPLAIN under force_generic_plan shows runtime pruning is in effect: Update on pt Foreign Update on pt_p2 pt_2 -> Append Subplans Removed: 1 -> Foreign Update on pt_p2 pt_2 The SEGV happens inside postgresBeginForeignModify() because ExecInitModifyTable() builds re-indexed "kept" copies of several parallel per-result-relation lists after dropping pruned relations - withCheckOptionLists, returningLists, updateColnosLists, mergeActionLists and mergeJoinConditions, however two members were missed: - node->fdwPrivLists, read with list_nth(node->fdwPrivLists, i) when BeginForeignModify() is called, and - node->fdwDirectModifyPlans, checked with bms_is_member(i, ...) when setting ri_usesFdwDirectModify. Both were still indexed against the original (pre-pruning) positions while the surrounding loop's "i" is now the kept position. When the foreign partition's kept-index no longer matched its original index, BeginForeignModify() got the wrong fdw_private and crashed. Attached patch builds re-indexed kept copies for these two arrays in the same loop as the other parallel lists, and uses them at the two call sites. Regards, Ayush --000000000000fccb6006523f0e14 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

On Wed, 20 May 2= 026 at 03:59, PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the websi= te:

Bug reference:=C2=A0 =C2=A0 =C2=A0 19484
Logged by:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Chi Zhang
Email address:=C2=A0 =C2=A0 =C2=A0 798604270@qq.com
PostgreSQL version: 18.4
Operating system:=C2=A0 =C2=A0Ubuntu 24.04
Description:=C2=A0 =C2=A0 =C2=A0 =C2=A0

Hi,

I found the following test case triggers a segmentation fault:

```
\set ON_ERROR_STOP on

CREATE EXTENSION postgres_fdw;

CREATE SERVER loopback FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (
=C2=A0 host '/path/to/pg_socket',
=C2=A0 port '5432',
=C2=A0 dbname :'dbname'
);

CREATE USER MAPPING FOR postgres SERVER loopback
OPTIONS (user 'postgres');

CREATE SCHEMA r;
CREATE TABLE r.remote_p2 (a int NOT NULL, b int);

CREATE TABLE pt (a int NOT NULL, b int) PARTITION BY LIST (a);
CREATE TABLE pt_p1 PARTITION OF pt FOR VALUES IN (1);
CREATE FOREIGN TABLE pt_p2 PARTITION OF pt FOR VALUES IN (2)
=C2=A0 SERVER loopback
=C2=A0 OPTIONS (schema_name 'r', table_name 'remote_p2');
INSERT INTO pt_p1 VALUES (1, 10);
INSERT INTO r.remote_p2 VALUES (2, 20);

SET plan_cache_mode =3D force_generic_plan;

PREPARE upd(int) AS
=C2=A0 UPDATE pt
=C2=A0 SET b =3D b + 1
=C2=A0 WHERE a =3D $1
=C2=A0 RETURNING tableoid::regclass, a, b;

EXPLAIN (costs off) EXECUTE upd(2);
EXECUTE upd(2);
SELECT * FROM r.remote_p2 ORDER BY a;

Thanks= for the very precise repro, that made this easy to track down.

I re= produced the crash on master.=C2=A0 The plan EXPLAIN under
force_generic= _plan shows runtime pruning is in effect:

=C2=A0 Update on pt
=C2= =A0 =C2=A0 Foreign Update on pt_p2 pt_2
=C2=A0 =C2=A0 -> =C2=A0Append=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Subplans Removed: 1
=C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 -> =C2=A0Foreign Update on pt_p2 pt_2

The S= EGV happens inside postgresBeginForeignModify() because
ExecInitModifyTa= ble() builds re-indexed "kept" copies of several
parallel per-= result-relation lists after dropping pruned relations -
withCheckOptionL= ists, returningLists, updateColnosLists,
mergeActionLists and mergeJoinC= onditions, however two members were
missed:

=C2=A0 - node->fdw= PrivLists, read with list_nth(node->fdwPrivLists, i) when
=C2=A0 =C2= =A0 BeginForeignModify() is called, and
=C2=A0 - node->fdwDirectModif= yPlans, checked with bms_is_member(i, ...) when
=C2=A0 =C2=A0 setting ri= _usesFdwDirectModify.

Both were still indexed against the original (= pre-pruning) positions
while the surrounding loop's "i" is= now the kept position.=C2=A0 When the
foreign partition's kept-inde= x no longer matched its original index,
BeginForeignModify() got the wro= ng fdw_private and crashed.

Attached patch builds re-indexed kept co= pies for these two arrays in
the same loop as the other parallel lists, = and uses them at the two
call sites.

Regards,
Ayush=C2=A0=
--000000000000fccb6006523f0e14-- --000000000000fccb6106523f0e16 Content-Type: application/octet-stream; name="v1-0001-Re-index-ModifyTable-FDW-arrays-when-pruning-resu.patch" Content-Disposition: attachment; filename="v1-0001-Re-index-ModifyTable-FDW-arrays-when-pruning-resu.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpe1nmcm0 RnJvbSAxYmNmOTgxYzI5ZjU0Yjc3YTA3YzI1YTdiM2ViMDZkOTAxNjRiZDhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBeXVzaCBUaXdhcmkgPGF5dXNodGl3YXJpLnNsZzAxQGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMCBNYXkgMjAyNiAwNTowNjo1NyArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjFdIFJlLWluZGV4IE1vZGlmeVRhYmxlIEZEVyBhcnJheXMgd2hlbiBwcnVuaW5nIHJlc3Vs dAogcmVsYXRpb25zCgpFeGVjSW5pdE1vZGlmeVRhYmxlKCkgY29waWVzIHBhcmFsbGVsIHBlci1y ZXN1bHQtcmVsYXRpb24gbGlzdHMgZnJvbQp0aGUgcGxhbiBub2RlIGludG8gYSBuZXcgImtlcHQi IHNldCBhZnRlciBkcm9wcGluZyBwcnVuZWQgcmVzdWx0CnJlbGF0aW9ucy4gIFRoYXQgcmUtaW5k ZXhpbmcgd2FzIGFscmVhZHkgZG9uZSBmb3Igd2l0aENoZWNrT3B0aW9uTGlzdHMsCnJldHVybmlu Z0xpc3RzLCB1cGRhdGVDb2xub3NMaXN0cywgbWVyZ2VBY3Rpb25MaXN0cyBhbmQKbWVyZ2VKb2lu Q29uZGl0aW9ucywgYnV0IHR3byBtZW1iZXJzIHdlcmUgbWlzc2VkOgoKICAqIG5vZGUtPmZkd1By aXZMaXN0cywgaW5kZXhlZCBieSBsaXN0X250aCgpIHdoZW4gY2FsbGluZwogICAgQmVnaW5Gb3Jl aWduTW9kaWZ5KCksIGFuZAogICogbm9kZS0+ZmR3RGlyZWN0TW9kaWZ5UGxhbnMsIGluZGV4ZWQg YnkgYm1zX2lzX21lbWJlcigpIHdoZW4gc2V0dGluZwogICAgcmlfdXNlc0Zkd0RpcmVjdE1vZGlm eS4KCkJvdGggd2VyZSBzdGlsbCByZWFkIHVzaW5nIHRoZSAqa2VwdCogbG9vcCB2YXJpYWJsZSBp IGFnYWluc3QgdGhlCipvcmlnaW5hbCogKHByZS1wcnVuaW5nKSBpbmRleGluZywgc28gb24gYSBw YXJ0aXRpb25lZCBVUERBVEUvREVMRVRFCnRoYXQgdXNlcyBhIGdlbmVyaWMgcGxhbiAoUFJFUEFS RS9FWEVDVVRFIHVuZGVyIHBsYW5fY2FjaGVfbW9kZSA9CmZvcmNlX2dlbmVyaWNfcGxhbikgYW5k IHJ1bnRpbWUgcGFydGl0aW9uIHBydW5pbmcsIGEgZm9yZWlnbiBwYXJ0aXRpb24Kd2hvc2Ugb3Jp Z2luYWwgaW5kZXggbm8gbG9uZ2VyIG1hdGNoZWQgaXRzIGtlcHQgcG9zaXRpb24gY2F1c2VkCkJl Z2luRm9yZWlnbk1vZGlmeSgpIHRvIHJlY2VpdmUgdGhlIHdyb25nIGZkd19wcml2YXRlIGFuZCBz ZWdmYXVsdAppbnNpZGUgdGhlIEZEVy4KCkJ1aWxkIHJlLWluZGV4ZWQga2VwdCBjb3BpZXMgZm9y IHRoZXNlIHR3byBhcnJheXMgaW4gdGhlIHNhbWUgbG9vcCBhcwp0aGUgb3RoZXIgcGFyYWxsZWwg bGlzdHMgYW5kIHVzZSB0aGVtIGF0IHRoZSBjYWxsIHNpdGVzLiAgQWRkIGEKcG9zdGdyZXNfZmR3 IHJlZ3Jlc3Npb24gY2FzZSB1c2luZyBQUkVQQVJFL0VYRUNVVEUgdW5kZXIKZm9yY2VfZ2VuZXJp Y19wbGFuIHRoYXQgZXhlcmNpc2VzIHRoZSBmYWlsaW5nIHBhdGguCgpSZXBvcnRlZC1ieTogQ2hp IFpoYW5nIDw3OTg2MDQyNzBAcXEuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9t LzE5NDg0LS4uLkBwb3N0Z3Jlc3FsLm9yZwotLS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQv cG9zdGdyZXNfZmR3Lm91dCAgICB8IDI2ICsrKysrKysrKysrKysrKysrKysKIGNvbnRyaWIvcG9z dGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsICAgICB8IDIyICsrKysrKysrKysrKysrKysK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDE4ICsrKysr KysrKysrLS0KIDMgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19m ZHcub3V0IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApp bmRleCBlOTAyODllNGFiMS4uODcyZDg3MWE2NzUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtOTMzNyw2ICs5MzM3LDMyIEBAIHNlbGVj dCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSBsb2NwOwogCiAtLSBUaGUgZXhlY3V0b3Igc2hv dWxkIG5vdCBsZXQgdW5leGVyY2lzZWQgRkRXcyBzaHV0IGRvd24KIHVwZGF0ZSB1dHJ0ZXN0IHNl dCBhID0gMSB3aGVyZSBiID0gJ2Zvbyc7CistLSBSdW50aW1lIHBydW5pbmcgb2YgcmVzdWx0IHJl bGF0aW9ucyBtdXN0IGtlZXAgTW9kaWZ5VGFibGUncyBwZXItcmVsYXRpb24KKy0tIEZEVyBhcnJh eXMgKGZkd1ByaXZMaXN0cywgZmR3RGlyZWN0TW9kaWZ5UGxhbnMpIGFsaWduZWQgd2l0aCB0aGUg a2VwdAorLS0gcmVzdWx0UmVsYXRpb25zLiAgT3RoZXJ3aXNlIEJlZ2luRm9yZWlnbk1vZGlmeSgp IHJlYWRzIHRoZSB3cm9uZworLS0gZmR3X3ByaXZhdGUgYW5kIHNlZ2ZhdWx0cy4KK2NyZWF0ZSB0 YWJsZSBmZHdfcGFydF91cGRhdGUgKGEgaW50IG5vdCBudWxsLCBiIGludCkgcGFydGl0aW9uIGJ5 IGxpc3QgKGEpOworY3JlYXRlIHRhYmxlIGZkd19wYXJ0X3VwZGF0ZV9wMSBwYXJ0aXRpb24gb2Yg ZmR3X3BhcnRfdXBkYXRlIGZvciB2YWx1ZXMgaW4gKDEpOworY3JlYXRlIHRhYmxlIGZkd19wYXJ0 X3VwZGF0ZV9yZW1vdGUgKGEgaW50IG5vdCBudWxsLCBiIGludCk7CitjcmVhdGUgZm9yZWlnbiB0 YWJsZSBmZHdfcGFydF91cGRhdGVfcDIgcGFydGl0aW9uIG9mIGZkd19wYXJ0X3VwZGF0ZQorICAg IGZvciB2YWx1ZXMgaW4gKDIpCisgICAgc2VydmVyIGxvb3BiYWNrIG9wdGlvbnMgKHRhYmxlX25h bWUgJ2Zkd19wYXJ0X3VwZGF0ZV9yZW1vdGUnKTsKK2luc2VydCBpbnRvIGZkd19wYXJ0X3VwZGF0 ZV9wMSB2YWx1ZXMgKDEsIDEwKTsKK2luc2VydCBpbnRvIGZkd19wYXJ0X3VwZGF0ZV9yZW1vdGUg dmFsdWVzICgyLCAyMCk7CitzZXQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFu OworcHJlcGFyZSBmZHdfcGFydF91cGQoaW50KSBhcworICAgIHVwZGF0ZSBmZHdfcGFydF91cGRh dGUgc2V0IGIgPSBiICsgMSB3aGVyZSBhID0gJDEKKyAgICAgICAgcmV0dXJuaW5nIHRhYmxlb2lk OjpyZWdjbGFzcywgYSwgYjsKK2V4ZWN1dGUgZmR3X3BhcnRfdXBkKDIpOworICAgICAgdGFibGVv aWQgICAgICB8IGEgfCBiICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLSstLS0tCisgZmR3X3Bh cnRfdXBkYXRlX3AyIHwgMiB8IDIxCisoMSByb3cpCisKK2RlYWxsb2NhdGUgZmR3X3BhcnRfdXBk OworcmVzZXQgcGxhbl9jYWNoZV9tb2RlOworZHJvcCB0YWJsZSBmZHdfcGFydF91cGRhdGU7Citk cm9wIHRhYmxlIGZkd19wYXJ0X3VwZGF0ZV9yZW1vdGU7CiAtLSBUZXN0IHRoYXQgcmVtb3RlIHRy aWdnZXJzIHdvcmsgd2l0aCB1cGRhdGUgdHVwbGUgcm91dGluZwogY3JlYXRlIHRyaWdnZXIgbG9j dF9icl9pbnNlcnRfdHJpZ2dlciBiZWZvcmUgaW5zZXJ0IG9uIGxvY3QKIAlmb3IgZWFjaCByb3cg ZXhlY3V0ZSBwcm9jZWR1cmUgYnJfaW5zZXJ0X3RyaWdmdW5jKCk7CmRpZmYgLS1naXQgYS9jb250 cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbCBiL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCmluZGV4IGRmYzU4YmViMGQyLi5jODBhYWYxYzFiNCAx MDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKKysr IGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKQEAgLTI3MjMsNiAr MjcyMywyOCBAQCBzZWxlY3QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gbG9jcDsKIC0tIFRo ZSBleGVjdXRvciBzaG91bGQgbm90IGxldCB1bmV4ZXJjaXNlZCBGRFdzIHNodXQgZG93bgogdXBk YXRlIHV0cnRlc3Qgc2V0IGEgPSAxIHdoZXJlIGIgPSAnZm9vJzsKIAorLS0gUnVudGltZSBwcnVu aW5nIG9mIHJlc3VsdCByZWxhdGlvbnMgbXVzdCBrZWVwIE1vZGlmeVRhYmxlJ3MgcGVyLXJlbGF0 aW9uCistLSBGRFcgYXJyYXlzIChmZHdQcml2TGlzdHMsIGZkd0RpcmVjdE1vZGlmeVBsYW5zKSBh bGlnbmVkIHdpdGggdGhlIGtlcHQKKy0tIHJlc3VsdFJlbGF0aW9ucy4gIE90aGVyd2lzZSBCZWdp bkZvcmVpZ25Nb2RpZnkoKSByZWFkcyB0aGUgd3JvbmcKKy0tIGZkd19wcml2YXRlIGFuZCBzZWdm YXVsdHMuCitjcmVhdGUgdGFibGUgZmR3X3BhcnRfdXBkYXRlIChhIGludCBub3QgbnVsbCwgYiBp bnQpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBmZHdfcGFydF91cGRhdGVf cDEgcGFydGl0aW9uIG9mIGZkd19wYXJ0X3VwZGF0ZSBmb3IgdmFsdWVzIGluICgxKTsKK2NyZWF0 ZSB0YWJsZSBmZHdfcGFydF91cGRhdGVfcmVtb3RlIChhIGludCBub3QgbnVsbCwgYiBpbnQpOwor Y3JlYXRlIGZvcmVpZ24gdGFibGUgZmR3X3BhcnRfdXBkYXRlX3AyIHBhcnRpdGlvbiBvZiBmZHdf cGFydF91cGRhdGUKKyAgICBmb3IgdmFsdWVzIGluICgyKQorICAgIHNlcnZlciBsb29wYmFjayBv cHRpb25zICh0YWJsZV9uYW1lICdmZHdfcGFydF91cGRhdGVfcmVtb3RlJyk7CitpbnNlcnQgaW50 byBmZHdfcGFydF91cGRhdGVfcDEgdmFsdWVzICgxLCAxMCk7CitpbnNlcnQgaW50byBmZHdfcGFy dF91cGRhdGVfcmVtb3RlIHZhbHVlcyAoMiwgMjApOworc2V0IHBsYW5fY2FjaGVfbW9kZSA9IGZv cmNlX2dlbmVyaWNfcGxhbjsKK3ByZXBhcmUgZmR3X3BhcnRfdXBkKGludCkgYXMKKyAgICB1cGRh dGUgZmR3X3BhcnRfdXBkYXRlIHNldCBiID0gYiArIDEgd2hlcmUgYSA9ICQxCisgICAgICAgIHJl dHVybmluZyB0YWJsZW9pZDo6cmVnY2xhc3MsIGEsIGI7CitleGVjdXRlIGZkd19wYXJ0X3VwZCgy KTsKK2RlYWxsb2NhdGUgZmR3X3BhcnRfdXBkOworcmVzZXQgcGxhbl9jYWNoZV9tb2RlOworZHJv cCB0YWJsZSBmZHdfcGFydF91cGRhdGU7Citkcm9wIHRhYmxlIGZkd19wYXJ0X3VwZGF0ZV9yZW1v dGU7CisKIC0tIFRlc3QgdGhhdCByZW1vdGUgdHJpZ2dlcnMgd29yayB3aXRoIHVwZGF0ZSB0dXBs ZSByb3V0aW5nCiBjcmVhdGUgdHJpZ2dlciBsb2N0X2JyX2luc2VydF90cmlnZ2VyIGJlZm9yZSBp bnNlcnQgb24gbG9jdAogCWZvciBlYWNoIHJvdyBleGVjdXRlIHByb2NlZHVyZSBicl9pbnNlcnRf dHJpZ2Z1bmMoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggNDc4 Y2IwMTc4M2MuLmY2OTA2MGNiNWFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuYwpAQCAtNTEwOCw2ICs1MTA4LDkgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJs ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJTGlzdAkgICAqcmVzdWx0UmVs YXRpb25zID0gTklMOwogCUxpc3QJICAgKndpdGhDaGVja09wdGlvbkxpc3RzID0gTklMOwogCUxp c3QJICAgKnJldHVybmluZ0xpc3RzID0gTklMOworCS8qIGZkd1ByaXZMaXN0cy9mZHdEaXJlY3RN b2RpZnlQbGFucyBhcmUgcmUtaW5kZXhlZCB0byBtYXRjaCByZXN1bHRSZWxhdGlvbnMgKi8KKwlM aXN0CSAgICpmZHdQcml2TGlzdHMgPSBOSUw7CisJQml0bWFwc2V0ICAqZmR3RGlyZWN0TW9kaWZ5 UGxhbnMgPSBOVUxMOwogCUxpc3QJICAgKnVwZGF0ZUNvbG5vc0xpc3RzID0gTklMOwogCUxpc3QJ ICAgKm1lcmdlQWN0aW9uTGlzdHMgPSBOSUw7CiAJTGlzdAkgICAqbWVyZ2VKb2luQ29uZGl0aW9u cyA9IE5JTDsKQEAgLTUxNTMsNiArNTE1Niw4IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5 VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJCWlmIChrZWVwX3Jl bCkKIAkJeworCQkJaW50CQkJbmV3X2luZGV4ID0gbGlzdF9sZW5ndGgocmVzdWx0UmVsYXRpb25z KTsKKwogCQkJcmVzdWx0UmVsYXRpb25zID0gbGFwcGVuZF9pbnQocmVzdWx0UmVsYXRpb25zLCBy dGkpOwogCQkJaWYgKG5vZGUtPndpdGhDaGVja09wdGlvbkxpc3RzKQogCQkJewpAQCAtNTE3MCw2 ICs1MTc1LDE1IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJCQkJcmV0dXJuaW5nTGlzdHMgPSBsYXBwZW5kKHJl dHVybmluZ0xpc3RzLCByZXR1cm5pbmdMaXN0KTsKIAkJCX0KKwkJCWlmIChub2RlLT5mZHdQcml2 TGlzdHMpCisJCQl7CisJCQkJTGlzdAkgICAqZmR3UHJpdkxpc3QgPSAoTGlzdCAqKSBsaXN0X250 aChub2RlLT5mZHdQcml2TGlzdHMsIGkpOworCisJCQkJZmR3UHJpdkxpc3RzID0gbGFwcGVuZChm ZHdQcml2TGlzdHMsIGZkd1ByaXZMaXN0KTsKKwkJCX0KKwkJCWlmIChibXNfaXNfbWVtYmVyKGks IG5vZGUtPmZkd0RpcmVjdE1vZGlmeVBsYW5zKSkKKwkJCQlmZHdEaXJlY3RNb2RpZnlQbGFucyA9 IGJtc19hZGRfbWVtYmVyKGZkd0RpcmVjdE1vZGlmeVBsYW5zLAorCQkJCQkJCQkJCQkJCSAgbmV3 X2luZGV4KTsKIAkJCWlmIChub2RlLT51cGRhdGVDb2xub3NMaXN0cykKIAkJCXsKIAkJCQlMaXN0 CSAgICp1cGRhdGVDb2xub3NMaXN0ID0gbGlzdF9udGgobm9kZS0+dXBkYXRlQ29sbm9zTGlzdHMs IGkpOwpAQCAtNTI5MSw3ICs1MzA1LDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJs ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAkJLyogSW5pdGlhbGl6ZSB0 aGUgdXNlc0Zkd0RpcmVjdE1vZGlmeSBmbGFnICovCiAJCXJlc3VsdFJlbEluZm8tPnJpX3VzZXNG ZHdEaXJlY3RNb2RpZnkgPQotCQkJYm1zX2lzX21lbWJlcihpLCBub2RlLT5mZHdEaXJlY3RNb2Rp ZnlQbGFucyk7CisJCQlibXNfaXNfbWVtYmVyKGksIGZkd0RpcmVjdE1vZGlmeVBsYW5zKTsKIAog CQkvKgogCQkgKiBWZXJpZnkgcmVzdWx0IHJlbGF0aW9uIGlzIGEgdmFsaWQgdGFyZ2V0IGZvciB0 aGUgY3VycmVudCBvcGVyYXRpb24KQEAgLTUzMjAsNyArNTMzNCw3IEBAIEV4ZWNJbml0TW9kaWZ5 VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJ cmVzdWx0UmVsSW5mby0+cmlfRmR3Um91dGluZSAhPSBOVUxMICYmCiAJCQlyZXN1bHRSZWxJbmZv LT5yaV9GZHdSb3V0aW5lLT5CZWdpbkZvcmVpZ25Nb2RpZnkgIT0gTlVMTCkKIAkJewotCQkJTGlz dAkgICAqZmR3X3ByaXZhdGUgPSAoTGlzdCAqKSBsaXN0X250aChub2RlLT5mZHdQcml2TGlzdHMs IGkpOworCQkJTGlzdAkgICAqZmR3X3ByaXZhdGUgPSAoTGlzdCAqKSBsaXN0X250aChmZHdQcml2 TGlzdHMsIGkpOwogCiAJCQlyZXN1bHRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lLT5CZWdpbkZvcmVp Z25Nb2RpZnkobXRzdGF0ZSwKIAkJCQkJCQkJCQkJCQkJCSByZXN1bHRSZWxJbmZvLAotLSAKMi40 My4wCgo= --000000000000fccb6106523f0e16--