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 1wTD1m-000Noz-1O for pgsql-bugs@arkaria.postgresql.org; Sat, 30 May 2026 06:18:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wTD1j-005ZEu-2J for pgsql-bugs@arkaria.postgresql.org; Sat, 30 May 2026 06:18:32 +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 1wTD1j-005ZEl-12 for pgsql-bugs@lists.postgresql.org; Sat, 30 May 2026 06:18:31 +0000 Received: from mail-qt1-x82e.google.com ([2607:f8b0:4864:20::82e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wTD1h-00000000Gf2-11xx for pgsql-bugs@lists.postgresql.org; Sat, 30 May 2026 06:18:31 +0000 Received: by mail-qt1-x82e.google.com with SMTP id d75a77b69052e-50e63771d91so135266961cf.0 for ; Fri, 29 May 2026 23:18:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780121905; cv=none; d=google.com; s=arc-20240605; b=fXdgFXVHp/hmEJWjUkpNeZyt7+zbPJH+2sGc2UG3tgo2cHgAQx6aFTnJZ8kHTnSwHW 928jEL/eIWbLov5dpuWRZ+6RHHvJ1QukQxACY+gddVvriLhLAo8/oLUemVrariUgL1dY UFDayn8Ah5HVd2wquJ4SW36s/7Fz8pi++hLuOwmS47bmTOCmx6Q6eh+HuEJUBfbnlyFp vgmFG6/w2zhwkBsSERuW8w55/y0VXuep7QWBTFwBoyloR5qG4sAi3gmnp5joA5EDcHgV uENngJnWTcKLmUrkpJSlDOcQr3MOw+nYpbr9nj+0DhYWd1q5+ZxuTfWAGmNyl/G9jfCj 7K/w== 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=OW6LSvzTdRsyxFnMg6BxEid6wYKy3QThmi8DKmxlWd0=; fh=Y48Gowskji3602zkcQv5OjnCB+KnBuzBJFQKVme6xS8=; b=PMxdHNP+YGBInd0uOEfgFEGQu27vx84PnPz6vU6foK72vgXG2UvRnvEOQuNVnlN5U/ IOXzXRJp/fZwiMiPa0fcMAMMXLg7kpT1v8zubLQ3NsU7lqWePRfz3Pz12eP4FzamL6Iy D+waXki8CRgLDKj/WfyXRaYlcnEccn8t7lrsRnAk2nACURgBgqVHmNxuPf0bBPKKHyOR Ct1ymHSECD5hpc1hDzj6+FSLsmN3gykIdBVbBqpotuSfNBX+eeq+8GWcKLwZOMuMaTSI nv1vtid/ETZd2cUyZPteio9JLuM8sArhrLv9QDl2FOg6DT18CJ3RpR2MP+CdRC8Xvtno wexg==; 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=1780121905; x=1780726705; 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=OW6LSvzTdRsyxFnMg6BxEid6wYKy3QThmi8DKmxlWd0=; b=fpriiHoz9nGPC2JKe+IJsrzpn9sURxQlOpMdzmliBsymM+SNHdjm0c7+EK3LMJ2Pn6 oC7USxnKLl2yIaVMN/KVxykBRO8n0htMHNsfJCwg4lAm3MyENEUp4feHGKVYgBJG6YtU Zb7SP1LjttOrgNFiNgdsYLOMW+PvyWJ0cYRTg1tmVOlxxrm8u+3Qxg/Ws88X1VmRkcM+ CNcpTZRZpJbOgnNGhUGhZtImI3XTN/QoF2RL9PPagev1sUj7QVQb2iGJq0Ud4u8WKZ6q +U/B82pI8qqpUgNSjrtxAGxeXPRK+x6pejjWxD3Yab2rUF5byHA1lheqJ1aGyZiEFmXN PkLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780121905; x=1780726705; 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=OW6LSvzTdRsyxFnMg6BxEid6wYKy3QThmi8DKmxlWd0=; b=L7hRMxLlcatWXA+ekFeMbfX3xq3eNwKhM8fafrphLzyosXUvEGqPfFB1YW8lJNTMyH z2F0XQMNtMugH32hqcvGgvAr4o9a04/sWBH7upp18nM6GoTKQvLmFJtn69pE78YaPOuT NbOvZfn+olvK+GOzGjR9x367zYUSbeplfXKy3QsQfFWKoau1IIRrkXwWMzJ+b5HZDM/g t4lH4VvRrZSrDfs6b0N7DckcAw9acOCDtlnuq6PbpMt6Xk2syx4Oe57VZAUl2JcTZQ7Y hyf5cfDky9whu/uziLJakHgXeRSiXloZAEwPbStqHInDvTG+XpPXGov1RgihHqjOtuTi ZNcw== X-Forwarded-Encrypted: i=1; AFNElJ9v0iwSIL03ucbYJ0liG7vrbH2jaxdFkUg//OrpTH4GToST9E5sZZCi4yMyThCQMxmOZ+soxRld5FX0@lists.postgresql.org X-Gm-Message-State: AOJu0YxRoDhNJGAt8sVeTFwinIzoNgK4bYjDZ76CKTiDZhzzcEyoF4Ap iiB0Co6iCmaSsvegq60ORzBO3alevp8FIGRwIuaFUqCXLFL5IIKjN1YqWaY0Cr/2KeUD3znKBZh Cz3iI3FKRpgTzx/cztoMC5PBlzQ66o24= X-Gm-Gg: Acq92OGi4PDzjFVcXO0kMgU/eH/f6kGr7c4bPkT0vwXecZCks+PiOoqxttIZSiPkeHk v640Nae2DWF5W2a431+fg/6uTV8irz3hnpz/+2f7WvUfKqtXtBkdhY0VPI8PNLnALpjAl212RX0 EzoMUTHzEPEp//+xpsBK8v+6qbp+O+8LoXKUeiEAZqMxanzKLNocAVYzmJaZ3Bf0OlOyWItz7tA YPixaNVZ2A8bdbXatppiAq2vQumvqZZGd/VP8Yvy5ViXzzNQAv9hSbpks+L40FYQfmIoHXGZ5us 7s4TevmaxVwxt+CwV/qi8llEw+Z2iogcAKOd4pyAWFX2+uS4ymsDVT3miXMQOIErFn9zxA0QOtg lPSxZwZ2weCknTefQIMi2BhCcVmVKTBvtgHOQFtls4yZwLD+xVjvCVR8FfLM= X-Received: by 2002:a05:620a:458f:b0:914:bba0:9e76 with SMTP id af79cd13be357-9153d9f5effmr394639485a.36.1780121905031; Fri, 29 May 2026 23:18:25 -0700 (PDT) MIME-Version: 1.0 References: <19484-a3cb82c8cde3c8fa@postgresql.org> In-Reply-To: From: Rafia Sabih Date: Sat, 30 May 2026 08:18:13 +0200 X-Gm-Features: AVHnY4J7W4nrPJPspdzKCKTXkkWmX6pODBL47RjtwFJ6VIzpZXDXjJ0u2u6WpOg Message-ID: Subject: Re: BUG #19484: Segmentation fault triggered by FDW To: Matheus Alcantara Cc: Ayush Tiwari , 798604270@qq.com, pgsql-bugs@lists.postgresql.org, Etsuro Fujita Content-Type: multipart/mixed; boundary="000000000000ce8b52065302ed52" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ce8b52065302ed52 Content-Type: multipart/alternative; boundary="000000000000ce8b51065302ed50" --000000000000ce8b51065302ed50 Content-Type: text/plain; charset="UTF-8" On Fri, 22 May 2026 at 22:56, Matheus Alcantara wrote: > On Wed May 20, 2026 at 9:37 AM -03, Ayush Tiwari wrote: > > 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. > > > A good catch. However there is one issue that remains here, in show_modifytable_info still is using the old index here fdw_private = (List *) list_nth(node->fdwPrivLists, j) i.e. the one before pruning. In fact I found a scenario where it is causing crash, try this create table fdw_part_update2 (a int not null, b int) partition by list (a); create table fdw_part_update2_p1 partition of fdw_part_update2 for values in (1); create table fdw_part_update2_remote (a int not null, b int); create foreign table fdw_part_update2_p2 partition of fdw_part_update2 for values in (2) server loopback options (table_name 'fdw_part_update2_remote'); insert into fdw_part_update2_p1 values (1, 10); insert into fdw_part_update2_remote values (2, 20); set plan_cache_mode = force_generic_plan; prepare fdw_part_upd2(int) as update fdw_part_update2 set b = b + random()::int * 0 + 1 where a = $1 returning tableoid::regclass, a, b; execute fdw_part_upd2(2); explain (analyze, verbose, costs off, timing off, summary off) execute fdw_part_upd2(2); Please find the attached file for the patch to fix this. This patch applies over the earlier patch (given by Ayush) in this thread. > > Hi, thanks for the patch. This issue started on version 18 by commit > cbc127917e0. > > The patch fixes the issue and it make sense to me. One a minor comment > is that I think pg_indent is needed on nodeModifyTable.c > > -- > Matheus Alcantara > EDB: https://www.enterprisedb.com > > > -- Regards, Rafia Sabih CYBERTEC PostgreSQL International GmbH --000000000000ce8b51065302ed50 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Fri, 22 May = 2026 at 22:56, Matheus Alcantara <matheusssilv97@gmail.com> wrote:
On Wed May 20, 2026 at 9:37 AM -03, Ayush Tiw= ari wrote:
> I reproduced the crash on master.=C2=A0 The plan EXPLAIN under
> force_generic_plan shows runtime pruning is in effect:
>
>=C2=A0 =C2=A0Update on pt
>=C2=A0 =C2=A0 =C2=A0Foreign Update on pt_p2 pt_2
>=C2=A0 =C2=A0 =C2=A0->=C2=A0 Append
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Subplans Removed: 1
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0->=C2=A0 Foreign Update on = pt_p2 pt_2
>
> The SEGV happens inside postgresBeginForeignModify() because
> ExecInitModifyTable() builds re-indexed "kept" copies of sev= eral
> parallel per-result-relation lists after dropping pruned relations - > withCheckOptionLists, returningLists, updateColnosLists,
> mergeActionLists and mergeJoinConditions, however two members were
> missed:
>
>=C2=A0 =C2=A0- node->fdwPrivLists, read with list_nth(node->fdwPr= ivLists, i) when
>=C2=A0 =C2=A0 =C2=A0BeginForeignModify() is called, and
>=C2=A0 =C2=A0- node->fdwDirectModifyPlans, checked with bms_is_membe= r(i, ...) when
>=C2=A0 =C2=A0 =C2=A0setting ri_usesFdwDirectModify.
>
> Both were still indexed against the original (pre-pruning) positions > while the surrounding loop's "i" is now the kept positio= n.=C2=A0 When the
> foreign partition's kept-index no longer matched its original inde= x,
> 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.
>
A good catch. However there is one issue that rem= ains here, in=C2=A0show_modifytable_info still is using the old index here = fdw_private =3D (List *) list_nth(node->fdwPrivLists, j) i.e. the one be= fore pruning.
In fact I found a scenario where it is causing cras= h, try this

create table fdw_part_update2 (a int n= ot null, b int) partition by list (a);
create table fdw_part_update2_p1 = partition of fdw_part_update2 for values in (1);
create table fdw_part_u= pdate2_remote (a int not null, b int);
create foreign table fdw_part_upd= ate2_p2 partition of fdw_part_update2
=C2=A0 =C2=A0 for values in (2)=C2=A0 =C2=A0 server loopback options (table_name 'fdw_part_update2_re= mote');
insert into fdw_part_update2_p1 values (1, 10);
insert in= to fdw_part_update2_remote values (2, 20);
set plan_cache_mode =3D force= _generic_plan;
=C2=A0prepare fdw_part_upd2(int) as
=C2=A0 =C2=A0 =C2= =A0 update fdw_part_update2 set b =3D b + random()::int * 0 + 1 where a =3D= $1
=C2=A0 =C2=A0 =C2=A0 returning tableoid::regclass, a, b;
execute= fdw_part_upd2(2);
explain (analyze, verbose, costs off, timing off, sum= mary off)
=C2=A0 =C2=A0 execute fdw_part_upd2(2);

Please find the attached file for the patch to fix this. This patch appl= ies over the earlier patch (given by Ayush) in this thread.

Hi, thanks for the patch. This issue started on version 18 by commit
cbc127917e0.

The patch fixes the issue and it make sense to me. One a minor comment
is that I think pg_indent is needed on nodeModifyTable.c

--
Matheus Alcantara
EDB: https://www.enterprisedb.com




--
Regards,
Rafia Sabih
CYBERTEC PostgreSQL = International GmbH
--000000000000ce8b51065302ed50-- --000000000000ce8b52065302ed52 Content-Type: application/octet-stream; name="0001-Fix-show_modifytable_info.patch" Content-Disposition: attachment; filename="0001-Fix-show_modifytable_info.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mprykeye0 RnJvbSA5ODRmZjQyNDA0NjNhZTg2MjdlNzM0MzUxYWZhNGY5ZDEzMTE2MmRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWZpYSBTYWJpaCA8cmFmaWEuc2FiaWhAY3liZXJ0ZWMuYXQ+ CkRhdGU6IFNhdCwgMzAgTWF5IDIwMjYgMDg6MTE6MzUgKzAyMDAKU3ViamVjdDogW1BBVENIXSBG aXggc2hvd19tb2RpZnl0YWJsZV9pbmZvKCkKCnNob3dfbW9kaWZ5dGFibGVfaW5mbygpIGluIGV4 cGxhaW4uYyByZWFkcyB0aGUgcGxhbi1pbmRleGVkCm5vZGUtPmZkd1ByaXZMaXN0cyB1c2luZyB0 aGUgcG9zdC1wcnVuaW5nIGV4ZWN1dG9yIGluZGV4IGosCnByb2R1Y2luZyBhbiBvdXQtb2YtYm91 bmRzIGFjY2VzcyB3aGVuIGNhbGxpbmcKRXhwbGFpbkZvcmVpZ25Nb2RpZnkgb24gYSBub24tZGly ZWN0LW1vZGlmeSBGRFcgcmVsYXRpb24uCgpGaXggYnkgc2F2aW5nIHRoZSByZS1pbmRleGVkIGxp c3QgdG8gbXRzdGF0ZS0+ZmR3UHJpdkxpc3RzIChuZXcgZmllbGQKaW4gTW9kaWZ5VGFibGVTdGF0 ZSkgYW5kIHJlYWRpbmcgZnJvbSB0aGVyZSBpbiBleHBsYWluLmMuCi0tLQogLi4uL3Bvc3RncmVz X2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgMjUgKysrKysrKysrKysrKysrKysr KwogY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgICAgIHwgIDcgKysr KysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAgICAgIHwgIDMgKyst CiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgMyArKy0K IDUgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0IGIv Y29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAppbmRleCA4NzJk ODcxYTY3NS4uNWY1Y2I3OGVlNjUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4 cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0 ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtOTM2MCw2ICs5MzYwLDMxIEBAIGV4ZWN1dGUgZmR3X3Bh cnRfdXBkKDIpOwogKDEgcm93KQogCiBkZWFsbG9jYXRlIGZkd19wYXJ0X3VwZDsKK3ByZXBhcmUg ZmR3X3BhcnRfdXBkMihpbnQpIGFzCisgICAgICB1cGRhdGUgZmR3X3BhcnRfdXBkYXRlIHNldCBi ID0gYiArIHJhbmRvbSgpOjppbnQgKiAwICsgMSB3aGVyZSBhID0gJDEKKyAgICAgIHJldHVybmlu ZyB0YWJsZW9pZDo6cmVnY2xhc3MsIGEsIGI7CitleGVjdXRlIGZkd19wYXJ0X3VwZDIoMik7Cisg ICAgICB0YWJsZW9pZCAgICAgIHwgYSB8IGIgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tKy0t LS0KKyBmZHdfcGFydF91cGRhdGVfcDIgfCAyIHwgMjIKKygxIHJvdykKKworZXhwbGFpbiAoYW5h bHl6ZSwgdmVyYm9zZSwgY29zdHMgb2ZmLCB0aW1pbmcgb2ZmLCBzdW1tYXJ5IG9mZikKKyAgICBl eGVjdXRlIGZkd19wYXJ0X3VwZDIoMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBVcGRhdGUg b24gcHVibGljLmZkd19wYXJ0X3VwZGF0ZSAoYWN0dWFsIHJvd3M9MS4wMCBsb29wcz0xKQorICAg T3V0cHV0OiAoZmR3X3BhcnRfdXBkYXRlXzEudGFibGVvaWQpOjpyZWdjbGFzcywgZmR3X3BhcnRf dXBkYXRlXzEuYSwgZmR3X3BhcnRfdXBkYXRlXzEuYgorICAgRm9yZWlnbiBVcGRhdGUgb24gcHVi bGljLmZkd19wYXJ0X3VwZGF0ZV9wMiBmZHdfcGFydF91cGRhdGVfMgorICAgICBSZW1vdGUgU1FM OiBVUERBVEUgcHVibGljLmZkd19wYXJ0X3VwZGF0ZV9yZW1vdGUgU0VUIGIgPSAkMiBXSEVSRSBj dGlkID0gJDEgUkVUVVJOSU5HIGEsIGIKKyAgIC0+ICBBcHBlbmQgKGFjdHVhbCByb3dzPTEuMDAg bG9vcHM9MSkKKyAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEKKyAgICAgICAgIC0+ICBGb3Jl aWduIFNjYW4gb24gcHVibGljLmZkd19wYXJ0X3VwZGF0ZV9wMiBmZHdfcGFydF91cGRhdGVfMiAo YWN0dWFsIHJvd3M9MS4wMCBsb29wcz0xKQorICAgICAgICAgICAgICAgT3V0cHV0OiAoKGZkd19w YXJ0X3VwZGF0ZV8yLmIgKyAoKHJhbmRvbSgpKTo6aW50ZWdlciAqIDApKSArIDEpLCBmZHdfcGFy dF91cGRhdGVfMi50YWJsZW9pZCwgZmR3X3BhcnRfdXBkYXRlXzIuY3RpZCwgZmR3X3BhcnRfdXBk YXRlXzIuKgorICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIsIGN0aWQgRlJP TSBwdWJsaWMuZmR3X3BhcnRfdXBkYXRlX3JlbW90ZSBXSEVSRSAoKGEgPSAkMTo6aW50ZWdlcikp IEZPUiBVUERBVEUKKyg5IHJvd3MpCisKK2RlYWxsb2NhdGUgZmR3X3BhcnRfdXBkMjsKIHJlc2V0 IHBsYW5fY2FjaGVfbW9kZTsKIGRyb3AgdGFibGUgZmR3X3BhcnRfdXBkYXRlOwogZHJvcCB0YWJs ZSBmZHdfcGFydF91cGRhdGVfcmVtb3RlOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19m ZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdy ZXNfZmR3LnNxbAppbmRleCBjODBhYWYxYzFiNC4uZGMxMzU1NzNhMjEgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCisrKyBiL2NvbnRyaWIvcG9z dGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCkBAIC0yNzQxLDYgKzI3NDEsMTMgQEAgcHJl cGFyZSBmZHdfcGFydF91cGQoaW50KSBhcwogICAgICAgICByZXR1cm5pbmcgdGFibGVvaWQ6OnJl Z2NsYXNzLCBhLCBiOwogZXhlY3V0ZSBmZHdfcGFydF91cGQoMik7CiBkZWFsbG9jYXRlIGZkd19w YXJ0X3VwZDsKK3ByZXBhcmUgZmR3X3BhcnRfdXBkMihpbnQpIGFzCisgICAgICB1cGRhdGUgZmR3 X3BhcnRfdXBkYXRlIHNldCBiID0gYiArIHJhbmRvbSgpOjppbnQgKiAwICsgMSB3aGVyZSBhID0g JDEKKyAgICAgIHJldHVybmluZyB0YWJsZW9pZDo6cmVnY2xhc3MsIGEsIGI7CitleGVjdXRlIGZk d19wYXJ0X3VwZDIoMik7CitleHBsYWluIChhbmFseXplLCB2ZXJib3NlLCBjb3N0cyBvZmYsIHRp bWluZyBvZmYsIHN1bW1hcnkgb2ZmKQorICAgIGV4ZWN1dGUgZmR3X3BhcnRfdXBkMigyKTsKK2Rl YWxsb2NhdGUgZmR3X3BhcnRfdXBkMjsKIHJlc2V0IHBsYW5fY2FjaGVfbW9kZTsKIGRyb3AgdGFi bGUgZmR3X3BhcnRfdXBkYXRlOwogZHJvcCB0YWJsZSBmZHdfcGFydF91cGRhdGVfcmVtb3RlOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDExMmMxN2IwZDY0Li45MjMyNjI5MTEyOSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYwpAQCAtNDgyMSw3ICs0ODIxLDcgQEAgc2hvd19tb2RpZnl0YWJsZV9p bmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJCWZkd3Jv dXRpbmUgIT0gTlVMTCAmJgogCQkJZmR3cm91dGluZS0+RXhwbGFpbkZvcmVpZ25Nb2RpZnkgIT0g TlVMTCkKIAkJewotCQkJTGlzdAkgICAqZmR3X3ByaXZhdGUgPSAoTGlzdCAqKSBsaXN0X250aChu b2RlLT5mZHdQcml2TGlzdHMsIGopOworCQkJTGlzdCAgICAgICAqZmR3X3ByaXZhdGUgPSAoTGlz dCAqKSBsaXN0X250aChtdHN0YXRlLT5mZHdQcml2TGlzdHMsIGopOwogCiAJCQlmZHdyb3V0aW5l LT5FeHBsYWluRm9yZWlnbk1vZGlmeShtdHN0YXRlLAogCQkJCQkJCQkJCQkgcmVzdWx0UmVsSW5m bywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggZjY5MDYwY2I1YWIu LmE2NjUwOTQ2NWI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5 VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAt NTEwOSw3ICs1MTA5LDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJTGlzdAkgICAqd2l0aENoZWNrT3B0aW9uTGlz dHMgPSBOSUw7CiAJTGlzdAkgICAqcmV0dXJuaW5nTGlzdHMgPSBOSUw7CiAJLyogZmR3UHJpdkxp c3RzL2Zkd0RpcmVjdE1vZGlmeVBsYW5zIGFyZSByZS1pbmRleGVkIHRvIG1hdGNoIHJlc3VsdFJl bGF0aW9ucyAqLwotCUxpc3QJICAgKmZkd1ByaXZMaXN0cyA9IE5JTDsKKwlMaXN0ICAgICAgICpm ZHdQcml2TGlzdHMgPSBOSUw7CiAJQml0bWFwc2V0ICAqZmR3RGlyZWN0TW9kaWZ5UGxhbnMgPSBO VUxMOwogCUxpc3QJICAgKnVwZGF0ZUNvbG5vc0xpc3RzID0gTklMOwogCUxpc3QJICAgKm1lcmdl QWN0aW9uTGlzdHMgPSBOSUw7CkBAIC01MjMwLDYgKzUyMzAsNyBAQCBFeGVjSW5pdE1vZGlmeVRh YmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAltdHN0 YXRlLT5tdF91cGRhdGVDb2xub3NMaXN0cyA9IHVwZGF0ZUNvbG5vc0xpc3RzOwogCW10c3RhdGUt Pm10X21lcmdlQWN0aW9uTGlzdHMgPSBtZXJnZUFjdGlvbkxpc3RzOwogCW10c3RhdGUtPm10X21l cmdlSm9pbkNvbmRpdGlvbnMgPSBtZXJnZUpvaW5Db25kaXRpb25zOworCW10c3RhdGUtPmZkd1By aXZMaXN0cyA9IGZkd1ByaXZMaXN0czsKIAogCS8qLS0tLS0tLS0tLQogCSAqIFJlc29sdmUgdGhl IHRhcmdldCByZWxhdGlvbi4gVGhpcyBpcyB0aGUgc2FtZSBhczoKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK aW5kZXggMTMzNTkxODBkMjUuLjdiMzNkNGQwNDEwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAt MTQ0NCw3ICsxNDQ0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgTW9kaWZ5VGFibGVTdGF0ZQogCWJvb2wJ CW10X2RvbmU7CQkvKiBhcmUgd2UgZG9uZT8gKi8KIAlpbnQJCQltdF9ucmVsczsJCS8qIG51bWJl ciBvZiBlbnRyaWVzIGluIHJlc3VsdFJlbEluZm9bXSAqLwogCVJlc3VsdFJlbEluZm8gKnJlc3Vs dFJlbEluZm87CS8qIGluZm8gYWJvdXQgdGFyZ2V0IHJlbGF0aW9uKHMpICovCi0KKwkvKiBSZS1p bmRleGVkIGZkdyBwcml2YXRlIGRhdGEgbGlzdHMsIGFsaWduZWQgd2l0aCByZXN1bHRSZWxJbmZv W10gYWZ0ZXIgcHJ1bmluZyAqLworCUxpc3QgICAgICAgKmZkd1ByaXZMaXN0czsKIAkvKgogCSAq IFRhcmdldCByZWxhdGlvbiBtZW50aW9uZWQgaW4gdGhlIG9yaWdpbmFsIHN0YXRlbWVudCwgdXNl ZCB0byBmaXJlCiAJICogc3RhdGVtZW50LWxldmVsIHRyaWdnZXJzIGFuZCBhcyB0aGUgcm9vdCBm b3IgdHVwbGUgcm91dGluZy4gIChUaGlzCi0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --000000000000ce8b52065302ed52--