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 1wba12-002gB2-00 for pgsql-bugs@arkaria.postgresql.org; Mon, 22 Jun 2026 08:28: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 1wba10-005MvH-2a for pgsql-bugs@arkaria.postgresql.org; Mon, 22 Jun 2026 08:28:22 +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 1wba10-005Mv9-0y for pgsql-bugs@lists.postgresql.org; Mon, 22 Jun 2026 08:28:22 +0000 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wba0x-00000001Yl9-1xPn for pgsql-bugs@lists.postgresql.org; Mon, 22 Jun 2026 08:28:21 +0000 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-84540eb70b2so2138399b3a.2 for ; Mon, 22 Jun 2026 01:28:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782116898; cv=none; d=google.com; s=arc-20240605; b=iPlhD+FO4lA+cJlbgNSzMEhZ6iuRIDPzJteLLdFsR/sGUB92AZritY1L7DHsOiWdlr PqnSgtjHpElcRPuZXaxTEWsWJgbbvhOPWC9OAwzIKogS5XmiQVsVkStUJNrzztTUPZlS JaCPuLu+n3L/hJF6AyZhrA9x4mVd4gPuZTjtiDPEKlKuxqGHkEuE4o7HjgifD9F0pe9u 7UWlPTjBoiVk56OX4nSiKd9zr0yUE7y06ihoq+cpIqjsuVK/BU9o0rWoMkXvfnyF+6zi C0LLN3gixuL05QYcJLewBq1z4k1w+RIXVwmuiUCNe53dOnVRhXmnI5lR0uIoMWtq8VYR 9mqg== 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=fTx0vMidm+ARq5BvlbzYTmSeASBXeW3I8zOVqPACBLI=; fh=RUOa2SoewLQPTUep7KWzo2wd4dJRBIEFs9OJec7KHmQ=; b=kbpKw8GzqUXRh4Xdta0erPnhsXOCwRXDJvZGX6BkgI6WlfezVPWTjevMzpK0AKaQHM tB32JehteTpawV0Hn3TLmal19AGHraidIKG5DkRUcAvVGRh/325tXn3XisG2ocB1TB2l 57PKIOKQnXlAC+EuCJIKfgsVj2K0S0Blatg+HKV71A1dknxYfWqivf/reW106DwnL4Pv CuwWxZDAOpHcULHH45QE6mBJmvCx1yA2NpTC+s46v6ZtzkSgkmCOjJedt3X2rM5HpMF8 lJzyGn4K4zC6ZAOVBmxCyiSwNudsiDPdcczcsOx1M0SXjJ9+ZRGjL8zywn7sRCVdCc0Y S8eA==; 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=1782116898; x=1782721698; 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=fTx0vMidm+ARq5BvlbzYTmSeASBXeW3I8zOVqPACBLI=; b=S4+cSJimRZFJ7xPvWnTajPUxzzMstWbaHVETEKUWZZKWWmTQGuyBSA4NfFo5DYk2NX WDSNmeYIHcIP2OMlEdZL6eTRI0aJy/uxB5X5bgqqEqPfYYL18/cNx7k4jCt1RaXI3I4c uitY89wIuR0NgmXjacn1pqlOF+Bvpl2I3xc5ML8E0mTwz1pJpFkKFIL5k3TfhmeUJAz3 i21sHWfYBZufrH/KLhCV4VhNYJ0KD9Ml1ifQFdMe0iqKZ5i8SU+sJ2oe/JbEDSEXaz5K 1Oi8RhqrK+vP+M1SCDvT+XHsI6NLUDH79Cg4VrWKkXJDzIzKSyem41i4TDg5hos0FMlF s91Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782116898; x=1782721698; 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=fTx0vMidm+ARq5BvlbzYTmSeASBXeW3I8zOVqPACBLI=; b=QqzoT1AyXZg5DgiCzzShDVPWoSl5k2whrObMvfH1YRqfWUdT6dqanG2ns0b1iVJ7PX Lm1NKxoCvkl/5BDXOTr658T85LbBi4HWy7Y8DnysCNevDfRJzXhUvPv7Iwdj3xCVcdnL a/JwooHk0iGSJX6G1TsoxMy+RBF4WpUxkBKAVseM/clN2r6TGei1/hhF6uPYfdkpVPny PrVHWlZ2sN/t1AlcJatGZ9iUuP8RJebxsMiTsoBfnA2s2g+4KZGdD9ymu/nwt7e7YxNY qtK2owHpZg2JaZ2/D1ox7lttD43WVuGuyYBlhUAhog/7CACp48WE/WbumHjL58oys54P HeLg== X-Forwarded-Encrypted: i=1; AFNElJ+s32NFp2yfKuOJB8qYIrLUcvVJdjW8eof2R9t3KfjFYU5LSJcwGYAlKjHLEOy46zWMLsvZ0ZAq4g23@lists.postgresql.org X-Gm-Message-State: AOJu0YxI6cdPH4Tju6AK0TA/CKZ6dolJ5EjghRfViBwouJEq1DifiDbw RMdMXriK/Tvk91sMdYNMRfhYi42n6iL/7p3Ns8OzHXw8Hv3KIOuAVeGBhOWYMw6ohttzuB6XXzM f4Kj+eiRGz9IYKzHvV9dAr+JtCcIGch0= X-Gm-Gg: AfdE7cmP1+HoQBvBHovgmh55PikdzJoqRvDjm/HUXVBT6IxA3SQhiQRzbJuQmKgz6kt s3MPLlfUoXDPCLsLUnJJJ7PSbtBu+zXMSEtbLo8njpVwDkrQGMR3O+bvxhIAlX5UyiPCyDjpLTZ Wd+xzV8eteJUGwMuL1H/IJW8NgZhBcdsa6N5ahB1LGz0Dj3nVGXdr+JL4Vp3931E12OugHympmc hByA4TmnnicV0JO1aUlt+lDWoyOWqw2jj8w+gavr308ZmrtRVjbCHo5yfhc9Xkscx8WeUUddL2C LHvmnbXdbXIu3gNTHcAUIucREaXSdTsJ8vXjbL5C7ssUs0+iAKVs6A== X-Received: by 2002:a05:6a00:9293:b0:842:708f:39be with SMTP id d2e1a72fcca58-845624573d0mr12067645b3a.5.1782116898181; Mon, 22 Jun 2026 01:28:18 -0700 (PDT) MIME-Version: 1.0 References: <19484-a3cb82c8cde3c8fa@postgresql.org> In-Reply-To: From: Amit Langote Date: Mon, 22 Jun 2026 17:28:00 +0900 X-Gm-Features: AVVi8Cfz9jpkwkvnlou4tjhESzNuy2MIusKZt--1mEg_O9CwSlhjJZXyZyNhGQw Message-ID: Subject: Re: BUG #19484: Segmentation fault triggered by FDW To: Etsuro Fujita Cc: Matheus Alcantara , Ayush Tiwari , Rafia Sabih , 798604270@qq.com, pgsql-bugs@lists.postgresql.org, Amit Langote Content-Type: multipart/mixed; boundary="000000000000aa34900654d36cfb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000aa34900654d36cfb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Fujita-san, On Fri, Jun 19, 2026 at 8:59=E2=80=AFPM Etsuro Fujita wrote: > On Thu, Jun 18, 2026 at 7:57=E2=80=AFPM Amit Langote wrote: > > On Thu, Jun 18, 2026 at 19:55 Etsuro Fujita w= rote: > >> Actually, I've just started reviewing the patch. I'll let you know > >> the results (if any) by tomorrow. > > > Ah, thanks for the heads up. > > Here are my review comments: Thanks a lot for the review. > @@ -5167,6 +5176,15 @@ ExecInitModifyTable(ModifyTable *node, EState > *estate, int eflags) > > returningLists =3D lappend(returningLists, returningList)= ; > } > + if (node->fdwPrivLists) > + { > + List *fdwPrivList =3D (List *) > list_nth(node->fdwPrivLists, i); > + > + fdwPrivLists =3D lappend(fdwPrivLists, fdwPrivList); > + } > > As node->fdwPrivLists is always created, the if-test is useless, so I > removed it like the attached. Also, this is nitpicking but, in the > attached I moved a comment added above > ("fdwPrivLists/fdwDirectModifyPlans are re-indexed to match > resultRelations") to a more appropriate place, and did some minor > editorialization. Looks good. > +-- Runtime pruning of result relations must keep ModifyTable's per-relat= ion > +-- FDW arrays (fdwPrivLists, fdwDirectModifyPlans) aligned with the kept > +-- resultRelations. Otherwise BeginForeignModify() reads the wrong > +-- fdw_private and segfaults. > > This comment isn't 100% correct, because this issue happens with > DirectModify as well. I think we could expand the comment to mention > that as well, but the comment is already too much/detailed IMO; I > don't think we add such a comment for a test case, so how about > simplifying the comment like this: "Test that direct modify and > foreign modify work with runtime pruning of result relations (bug > #19484)" I agree that the details shouldn't leak into test code and have been trying to follow that principle. Also, bug numbers shouldn't be mentioned because one can always use `git blame` to find them. However, since different committers have different styles, I'm fine with it; kept in the attached updated patch. > +prepare fdw_part_upd2(int) as > + update fdw_part_update set b =3D b + random()::int * 0 + 1 where a= =3D $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); > > I think it's expensive to do explain with the analyze option enabled, > just for conforming the plan. To save cycles, I removed the option. > (As the test case for DirectModify was missing the explain test, I > added it, for consistency.) The test cases are placed in the "test > tuple routing for foreign-table partitions" section, but they are > basic ones to test writable foreign tables, so I moved them to the > "test writable foreign table stuff" section. Sounds good. > @@ -1446,6 +1446,12 @@ typedef struct ModifyTableState > int mt_nrels; /* number of entries in resultRelInfo[] *= / > ResultRelInfo *resultRelInfo; /* info about target relation(s) */ > > + /* > + * Re-indexed fdw private data lists, aligned with resultRelInfo[] af= ter > + * pruning > + */ > + List *mt_fdwPrivLists; > > For v18, I think we should put this at the end of the ModifyTableState > struct, to avoid ABI breakage. Good point on ABI. Rather than placing it differently per branch, how about putting mt_fdwPrivLists at the end of the struct alongside mt_updateColnosLists/mt_mergeActionLists/mt_mergeJoinConditions, which are the same kind of unpruned-filtered lists? That keeps it ABI-safe and lets master and 18 share an identical change. I'd fold it into their existing comment too. > That's it. Sorry for the delay. No problem. Updated patch attached. --=20 Thanks, Amit Langote --000000000000aa34900654d36cfb Content-Type: application/octet-stream; name="v3-0001-Re-index-ModifyTable-FDW-arrays-when-pruning-resu.patch" Content-Disposition: attachment; filename="v3-0001-Re-index-ModifyTable-FDW-arrays-when-pruning-resu.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqoycbqe0 RnJvbSBlYzk0MWU5NjM1NGUzOTUxN2E4ZGQ4MmViNjRlODY3M2ZmZWYzMTBjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgMjIgSnVuIDIwMjYgMTc6MjE6NDUgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz XSBSZS1pbmRleCBNb2RpZnlUYWJsZSBGRFcgYXJyYXlzIHdoZW4gcHJ1bmluZyByZXN1bHQKIHJl bGF0aW9ucwoKRXhlY0luaXRNb2RpZnlUYWJsZSgpIHJlYnVpbGRzIHRoZSBwZXItcmVzdWx0LXJl bGF0aW9uIGxpc3RzIGFmdGVyCmRyb3BwaW5nIHJlc3VsdCByZWxhdGlvbnMgcmVtb3ZlZCBieSBp bml0aWFsIHJ1bnRpbWUgcHJ1bmluZy4gIFRoZQpyZS1pbmRleGluZyB3YXMgZG9uZSBmb3Igd2l0 aENoZWNrT3B0aW9uTGlzdHMsIHJldHVybmluZ0xpc3RzLAp1cGRhdGVDb2xub3NMaXN0cywgbWVy Z2VBY3Rpb25MaXN0cyBhbmQgbWVyZ2VKb2luQ29uZGl0aW9ucywgYnV0CmZkd1ByaXZMaXN0cyBh bmQgZmR3RGlyZWN0TW9kaWZ5UGxhbnMgd2VyZSBtaXNzZWQuICBBcyBhIHJlc3VsdCwgYQprZXB0 IGZvcmVpZ24gcmVzdWx0IHJlbGF0aW9uIGNvdWxkIGJlIGhhbmRlZCB0aGUgd3JvbmcgZmR3X3By aXZhdGUsCm9yIHJpX3VzZXNGZHdEaXJlY3RNb2RpZnkgY291bGQgYmUgc2V0IGZyb20gdGhlIHdy b25nIHBsYW4gaW5kZXgsCmxlYWRpbmcgdG8gd3JvbmcgYmVoYXZpb3Igb3IgYSBjcmFzaCBpbiBC ZWdpbkZvcmVpZ25Nb2RpZnkoKSBhbmQgaW4KdGhlIGRpcmVjdC1tb2RpZnkgcGF0aC4KCnNob3df bW9kaWZ5dGFibGVfaW5mbygpIGhhZCB0aGUgc2FtZSBwcm9ibGVtOiBpdCBpbmRleGVkIHRoZQpw bGFuLW9yZGVyZWQgbm9kZS0+ZmR3UHJpdkxpc3RzIHdpdGggdGhlIHBvc3QtcHJ1bmluZyBleGVj dXRvcgpwb3NpdGlvbiwgc28gb25jZSBpbml0aWFsIHBydW5pbmcgcmVtb3ZlZCBhIHJlc3VsdCBy ZWxhdGlvbiBpdApjb3VsZCByZWFkIGEgZGlmZmVyZW50IHJlbGF0aW9uJ3MgZmR3X3ByaXZhdGUg KG9mdGVuIGEgTklMIGVudHJ5KSwKcHJvZHVjaW5nIHdyb25nIEVYUExBSU4gb3V0cHV0IG9yIGEg Y3Jhc2guCgpGaXggYnkgcmUtaW5kZXhpbmcgZmR3UHJpdkxpc3RzIGFuZCBmZHdEaXJlY3RNb2Rp ZnlQbGFucyBhbG9uZ3NpZGUKdGhlIG90aGVyIGxpc3RzLCBzYXZpbmcgdGhlIHJlLWluZGV4ZWQg cHJpdmF0ZSBsaXN0cyBpbgpNb2RpZnlUYWJsZVN0YXRlLm10X2Zkd1ByaXZMaXN0cyBhbmQgcmVh ZGluZyBmcm9tIHRoZXJlIGluIGJvdGgKbm9kZU1vZGlmeVRhYmxlLmMgYW5kIGV4cGxhaW4uYy4K ClJlcG9ydGVkLWJ5OiBDaGkgWmhhbmcgPDc5ODYwNDI3MEBxcS5jb20+CkF1dGhvcjogQXl1c2gg VGl3YXJpIDxheXVzaHRpd2FyaS5zbGcwMUBnbWFpbC5jb20+CkF1dGhvcjogUmFmaWEgU2FiaWgg PHJhZmlhLnBnaGFja2Vyc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBNYXRoZXVzIEFsY2FudGFy YSA8bWF0aGV1c3NzaWx2OTdAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogRXRzdXJvIEZ1aml0YSA8 ZXRzdXJvLmZ1aml0YUBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20v MTk0ODQtYTNjYjgyYzhjZGUzYzhmYSU0MHBvc3RncmVzcWwub3JnCkJhY2twYXRjaC10aHJvdWdo OiAxOAotLS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8 IDY0ICsrKysrKysrKysrKysrKysrKysKIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jl c19mZHcuc3FsICAgICB8IDM0ICsrKysrKysrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9k aWZ5VGFibGUuYyAgICAgICAgfCAyMiArKysrKystCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaCAgICAgICAgICAgICAgICAgfCAgOCArKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTI0IGluc2Vy dGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19m ZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVj dGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5kZXggYWJmYzg0Zjg4NjAuLmJlNDU1NzEwYzliIDEwMDY0 NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0Cisr KyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKQEAgLTcx MzIsNiArNzEzMiw3MCBAQCBSRVNFVCBlbmFibGVfbWF0ZXJpYWw7CiBEUk9QIEZPUkVJR04gVEFC TEUgcmVtdDI7CiBEUk9QIFRBQkxFIGxvY3QxOwogRFJPUCBUQUJMRSBsb2N0MjsKKy0tIFRlc3Qg dGhhdCBkaXJlY3QgbW9kaWZ5IGFuZCBmb3JlaWduIG1vZGlmeSB3b3JrIHdpdGggcnVudGltZSBw cnVuaW5nIG9mCistLSByZXN1bHQgcmVsYXRpb25zIChidWcgIzE5NDg0KQorY3JlYXRlIHRhYmxl IGZkd19wYXJ0X3VwZGF0ZSAoYSBpbnQgbm90IG51bGwsIGIgaW50KSBwYXJ0aXRpb24gYnkgbGlz dCAoYSk7CitjcmVhdGUgdGFibGUgZmR3X3BhcnRfdXBkYXRlX3AxIHBhcnRpdGlvbiBvZiBmZHdf cGFydF91cGRhdGUgZm9yIHZhbHVlcyBpbiAoMSk7CitjcmVhdGUgdGFibGUgZmR3X3BhcnRfdXBk YXRlX3JlbW90ZSAoYSBpbnQgbm90IG51bGwsIGIgaW50KTsKK2NyZWF0ZSBmb3JlaWduIHRhYmxl IGZkd19wYXJ0X3VwZGF0ZV9wMiBwYXJ0aXRpb24gb2YgZmR3X3BhcnRfdXBkYXRlCisgICAgZm9y IHZhbHVlcyBpbiAoMikKKyAgICBzZXJ2ZXIgbG9vcGJhY2sgb3B0aW9ucyAodGFibGVfbmFtZSAn ZmR3X3BhcnRfdXBkYXRlX3JlbW90ZScpOworaW5zZXJ0IGludG8gZmR3X3BhcnRfdXBkYXRlX3Ax IHZhbHVlcyAoMSwgMTApOworaW5zZXJ0IGludG8gZmR3X3BhcnRfdXBkYXRlX3JlbW90ZSB2YWx1 ZXMgKDIsIDIwKTsKK3NldCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47Cist LSBDaGVjayBEaXJlY3RNb2RpZnkgY2FzZQorcHJlcGFyZSBmZHdfcGFydF91cGQoaW50KSBhcwor ICAgIHVwZGF0ZSBmZHdfcGFydF91cGRhdGUgc2V0IGIgPSBiICsgMSB3aGVyZSBhID0gJDEKKyAg ICByZXR1cm5pbmcgdGFibGVvaWQ6OnJlZ2NsYXNzLCBhLCBiOworZXhwbGFpbiAodmVyYm9zZSwg Y29zdHMgb2ZmKQorICAgIGV4ZWN1dGUgZmR3X3BhcnRfdXBkKDIpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFVwZGF0ZSBvbiBwdWJsaWMuZmR3X3BhcnRfdXBkYXRlCisgICBPdXRwdXQ6IChmZHdfcGFy dF91cGRhdGVfMS50YWJsZW9pZCk6OnJlZ2NsYXNzLCBmZHdfcGFydF91cGRhdGVfMS5hLCBmZHdf cGFydF91cGRhdGVfMS5iCisgICBGb3JlaWduIFVwZGF0ZSBvbiBwdWJsaWMuZmR3X3BhcnRfdXBk YXRlX3AyIGZkd19wYXJ0X3VwZGF0ZV8yCisgICAtPiAgQXBwZW5kCisgICAgICAgICBTdWJwbGFu cyBSZW1vdmVkOiAxCisgICAgICAgICAtPiAgRm9yZWlnbiBVcGRhdGUgb24gcHVibGljLmZkd19w YXJ0X3VwZGF0ZV9wMiBmZHdfcGFydF91cGRhdGVfMgorICAgICAgICAgICAgICAgUmVtb3RlIFNR TDogVVBEQVRFIHB1YmxpYy5mZHdfcGFydF91cGRhdGVfcmVtb3RlIFNFVCBiID0gKGIgKyAxKSBX SEVSRSAoKGEgPSAkMTo6aW50ZWdlcikpIFJFVFVSTklORyBhLCBiCisoNyByb3dzKQorCitleGVj dXRlIGZkd19wYXJ0X3VwZCgyKTsKKyAgICAgIHRhYmxlb2lkICAgICAgfCBhIHwgYiAgCistLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0rLS0tLQorIGZkd19wYXJ0X3VwZGF0ZV9wMiB8IDIgfCAyMQor KDEgcm93KQorCitkZWFsbG9jYXRlIGZkd19wYXJ0X3VwZDsKKy0tIENoZWNrIEZvcmVpZ25Nb2Rp ZnkgY2FzZQorcHJlcGFyZSBmZHdfcGFydF91cGQyKGludCkgYXMKKyAgICB1cGRhdGUgZmR3X3Bh cnRfdXBkYXRlIHNldCBiID0gYiArIHJhbmRvbSgpOjppbnQgKiAwICsgMSB3aGVyZSBhID0gJDEK KyAgICByZXR1cm5pbmcgdGFibGVvaWQ6OnJlZ2NsYXNzLCBhLCBiOworZXhwbGFpbiAodmVyYm9z ZSwgY29zdHMgb2ZmKQorICAgIGV4ZWN1dGUgZmR3X3BhcnRfdXBkMigyKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBwdWJsaWMuZmR3X3BhcnRfdXBkYXRlCisgICBPdXRwdXQ6 IChmZHdfcGFydF91cGRhdGVfMS50YWJsZW9pZCk6OnJlZ2NsYXNzLCBmZHdfcGFydF91cGRhdGVf MS5hLCBmZHdfcGFydF91cGRhdGVfMS5iCisgICBGb3JlaWduIFVwZGF0ZSBvbiBwdWJsaWMuZmR3 X3BhcnRfdXBkYXRlX3AyIGZkd19wYXJ0X3VwZGF0ZV8yCisgICAgIFJlbW90ZSBTUUw6IFVQREFU RSBwdWJsaWMuZmR3X3BhcnRfdXBkYXRlX3JlbW90ZSBTRVQgYiA9ICQyIFdIRVJFIGN0aWQgPSAk MSBSRVRVUk5JTkcgYSwgYgorICAgLT4gIEFwcGVuZAorICAgICAgICAgU3VicGxhbnMgUmVtb3Zl ZDogMQorICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuZmR3X3BhcnRfdXBkYXRl X3AyIGZkd19wYXJ0X3VwZGF0ZV8yCisgICAgICAgICAgICAgICBPdXRwdXQ6ICgoZmR3X3BhcnRf dXBkYXRlXzIuYiArICgocmFuZG9tKCkpOjppbnRlZ2VyICogMCkpICsgMSksIGZkd19wYXJ0X3Vw ZGF0ZV8yLnRhYmxlb2lkLCBmZHdfcGFydF91cGRhdGVfMi5jdGlkLCBmZHdfcGFydF91cGRhdGVf Mi4qCisgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgY3RpZCBGUk9NIHB1 YmxpYy5mZHdfcGFydF91cGRhdGVfcmVtb3RlIFdIRVJFICgoYSA9ICQxOjppbnRlZ2VyKSkgRk9S IFVQREFURQorKDkgcm93cykKKworZXhlY3V0ZSBmZHdfcGFydF91cGQyKDIpOworICAgICAgdGFi bGVvaWQgICAgICB8IGEgfCBiICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLSstLS0tCisgZmR3 X3BhcnRfdXBkYXRlX3AyIHwgMiB8IDIyCisoMSByb3cpCisKK2RlYWxsb2NhdGUgZmR3X3BhcnRf dXBkMjsKK3Jlc2V0IHBsYW5fY2FjaGVfbW9kZTsKK2Ryb3AgdGFibGUgZmR3X3BhcnRfdXBkYXRl OworZHJvcCB0YWJsZSBmZHdfcGFydF91cGRhdGVfcmVtb3RlOwogLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0g dGVzdCBjaGVjayBjb25zdHJhaW50cwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvY29udHJp Yi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3RncmVzX2Zk dy9zcWwvcG9zdGdyZXNfZmR3LnNxbAppbmRleCBmMDNjNWFhYjRkOS4uN2QyYmQ2NzAwYmMgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCisrKyBi L2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCkBAIC0xNzMyLDYgKzE3 MzIsNDAgQEAgRFJPUCBGT1JFSUdOIFRBQkxFIHJlbXQyOwogRFJPUCBUQUJMRSBsb2N0MTsKIERS T1AgVEFCTEUgbG9jdDI7CiAKKy0tIFRlc3QgdGhhdCBkaXJlY3QgbW9kaWZ5IGFuZCBmb3JlaWdu IG1vZGlmeSB3b3JrIHdpdGggcnVudGltZSBwcnVuaW5nIG9mCistLSByZXN1bHQgcmVsYXRpb25z IChidWcgIzE5NDg0KQorY3JlYXRlIHRhYmxlIGZkd19wYXJ0X3VwZGF0ZSAoYSBpbnQgbm90IG51 bGwsIGIgaW50KSBwYXJ0aXRpb24gYnkgbGlzdCAoYSk7CitjcmVhdGUgdGFibGUgZmR3X3BhcnRf dXBkYXRlX3AxIHBhcnRpdGlvbiBvZiBmZHdfcGFydF91cGRhdGUgZm9yIHZhbHVlcyBpbiAoMSk7 CitjcmVhdGUgdGFibGUgZmR3X3BhcnRfdXBkYXRlX3JlbW90ZSAoYSBpbnQgbm90IG51bGwsIGIg aW50KTsKK2NyZWF0ZSBmb3JlaWduIHRhYmxlIGZkd19wYXJ0X3VwZGF0ZV9wMiBwYXJ0aXRpb24g b2YgZmR3X3BhcnRfdXBkYXRlCisgICAgZm9yIHZhbHVlcyBpbiAoMikKKyAgICBzZXJ2ZXIgbG9v cGJhY2sgb3B0aW9ucyAodGFibGVfbmFtZSAnZmR3X3BhcnRfdXBkYXRlX3JlbW90ZScpOworaW5z ZXJ0IGludG8gZmR3X3BhcnRfdXBkYXRlX3AxIHZhbHVlcyAoMSwgMTApOworaW5zZXJ0IGludG8g ZmR3X3BhcnRfdXBkYXRlX3JlbW90ZSB2YWx1ZXMgKDIsIDIwKTsKK3NldCBwbGFuX2NhY2hlX21v ZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisKKy0tIENoZWNrIERpcmVjdE1vZGlmeSBjYXNlCitw cmVwYXJlIGZkd19wYXJ0X3VwZChpbnQpIGFzCisgICAgdXBkYXRlIGZkd19wYXJ0X3VwZGF0ZSBz ZXQgYiA9IGIgKyAxIHdoZXJlIGEgPSAkMQorICAgIHJldHVybmluZyB0YWJsZW9pZDo6cmVnY2xh c3MsIGEsIGI7CitleHBsYWluICh2ZXJib3NlLCBjb3N0cyBvZmYpCisgICAgZXhlY3V0ZSBmZHdf cGFydF91cGQoMik7CitleGVjdXRlIGZkd19wYXJ0X3VwZCgyKTsKK2RlYWxsb2NhdGUgZmR3X3Bh cnRfdXBkOworCistLSBDaGVjayBGb3JlaWduTW9kaWZ5IGNhc2UKK3ByZXBhcmUgZmR3X3BhcnRf dXBkMihpbnQpIGFzCisgICAgdXBkYXRlIGZkd19wYXJ0X3VwZGF0ZSBzZXQgYiA9IGIgKyByYW5k b20oKTo6aW50ICogMCArIDEgd2hlcmUgYSA9ICQxCisgICAgcmV0dXJuaW5nIHRhYmxlb2lkOjpy ZWdjbGFzcywgYSwgYjsKK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikKKyAgICBleGVjdXRl IGZkd19wYXJ0X3VwZDIoMik7CitleGVjdXRlIGZkd19wYXJ0X3VwZDIoMik7CitkZWFsbG9jYXRl IGZkd19wYXJ0X3VwZDI7CisKK3Jlc2V0IHBsYW5fY2FjaGVfbW9kZTsKK2Ryb3AgdGFibGUgZmR3 X3BhcnRfdXBkYXRlOworZHJvcCB0YWJsZSBmZHdfcGFydF91cGRhdGVfcmVtb3RlOworCiAtLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAtLSB0ZXN0IGNoZWNrIGNvbnN0cmFpbnRzCiAtLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluLmMKaW5kZXggN2UyNzkyZWFkNzEuLjZkMjYyNGU3NWI4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jCkBAIC00NjA5LDcgKzQ2MDksNyBAQCBzaG93X21vZGlmeXRhYmxlX2luZm8o TW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCQkJZmR3cm91dGlu ZSAhPSBOVUxMICYmCiAJCQlmZHdyb3V0aW5lLT5FeHBsYWluRm9yZWlnbk1vZGlmeSAhPSBOVUxM KQogCQl7Ci0JCQlMaXN0CSAgICpmZHdfcHJpdmF0ZSA9IChMaXN0ICopIGxpc3RfbnRoKG5vZGUt PmZkd1ByaXZMaXN0cywgaik7CisJCQlMaXN0CSAgICpmZHdfcHJpdmF0ZSA9IChMaXN0ICopIGxp c3RfbnRoKG10c3RhdGUtPm10X2Zkd1ByaXZMaXN0cywgaik7CiAKIAkJCWZkd3JvdXRpbmUtPkV4 cGxhaW5Gb3JlaWduTW9kaWZ5KG10c3RhdGUsCiAJCQkJCQkJCQkJCSByZXN1bHRSZWxJbmZvLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCBlYThlZDk0YTc2NC4uY2Fj MzA2NjY2NjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC00NjQ3 LDYgKzQ2NDcsOCBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlMaXN0CSAgICp1cGRhdGVDb2xub3NMaXN0cyA9IE5J TDsKIAlMaXN0CSAgICptZXJnZUFjdGlvbkxpc3RzID0gTklMOwogCUxpc3QJICAgKm1lcmdlSm9p bkNvbmRpdGlvbnMgPSBOSUw7CisJTGlzdAkgICAqZmR3UHJpdkxpc3RzID0gTklMOworCUJpdG1h cHNldCAgKmZkd0RpcmVjdE1vZGlmeVBsYW5zID0gTlVMTDsKIAlSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvOwogCUxpc3QJICAgKmFyb3dtYXJrczsKIAlMaXN0Q2VsbCAgICpsOwpAQCAtNDY4 OSw2ICs0NjkxLDggQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAkJaWYgKGtlZXBfcmVsKQogCQl7CisJCQlMaXN0 CSAgICpmZHdQcml2TGlzdCA9IChMaXN0ICopIGxpc3RfbnRoKG5vZGUtPmZkd1ByaXZMaXN0cywg aSk7CisKIAkJCXJlc3VsdFJlbGF0aW9ucyA9IGxhcHBlbmRfaW50KHJlc3VsdFJlbGF0aW9ucywg cnRpKTsKIAkJCWlmIChub2RlLT53aXRoQ2hlY2tPcHRpb25MaXN0cykKIAkJCXsKQEAgLTQ3MjQs NiArNDcyOCwxOSBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCQkJCW1lcmdlSm9pbkNvbmRpdGlvbnMgPSBsYXBw ZW5kKG1lcmdlSm9pbkNvbmRpdGlvbnMsIG1lcmdlSm9pbkNvbmRpdGlvbik7CiAJCQl9CisKKwkJ CS8qCisJCQkgKiBmZHdQcml2TGlzdHMvZmR3RGlyZWN0TW9kaWZ5UGxhbnMgYXJlIHJlLWluZGV4 ZWQgdG8gbWF0Y2gKKwkJCSAqIHJlc3VsdFJlbGF0aW9ucworCQkJICovCisJCQlmZHdQcml2TGlz dHMgPSBsYXBwZW5kKGZkd1ByaXZMaXN0cywgZmR3UHJpdkxpc3QpOworCQkJaWYgKGJtc19pc19t ZW1iZXIoaSwgbm9kZS0+ZmR3RGlyZWN0TW9kaWZ5UGxhbnMpKQorCQkJeworCQkJCWludAkJCW5l d19pbmRleCA9IGxpc3RfbGVuZ3RoKHJlc3VsdFJlbGF0aW9ucykgLSAxOworCisJCQkJZmR3RGly ZWN0TW9kaWZ5UGxhbnMgPSBibXNfYWRkX21lbWJlcihmZHdEaXJlY3RNb2RpZnlQbGFucywKKwkJ CQkJCQkJCQkJCQkgIG5ld19pbmRleCk7CisJCQl9CiAJCX0KIAkJaSsrOwogCX0KQEAgLTQ3NTMs NiArNDc3MCw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCW10c3RhdGUtPm10X3VwZGF0ZUNvbG5vc0xpc3RzID0g dXBkYXRlQ29sbm9zTGlzdHM7CiAJbXRzdGF0ZS0+bXRfbWVyZ2VBY3Rpb25MaXN0cyA9IG1lcmdl QWN0aW9uTGlzdHM7CiAJbXRzdGF0ZS0+bXRfbWVyZ2VKb2luQ29uZGl0aW9ucyA9IG1lcmdlSm9p bkNvbmRpdGlvbnM7CisJbXRzdGF0ZS0+bXRfZmR3UHJpdkxpc3RzID0gZmR3UHJpdkxpc3RzOwog CiAJLyotLS0tLS0tLS0tCiAJICogUmVzb2x2ZSB0aGUgdGFyZ2V0IHJlbGF0aW9uLiBUaGlzIGlz IHRoZSBzYW1lIGFzOgpAQCAtNDgyOCw3ICs0ODQ2LDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShN b2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAkJLyogSW5p dGlhbGl6ZSB0aGUgdXNlc0Zkd0RpcmVjdE1vZGlmeSBmbGFnICovCiAJCXJlc3VsdFJlbEluZm8t PnJpX3VzZXNGZHdEaXJlY3RNb2RpZnkgPQotCQkJYm1zX2lzX21lbWJlcihpLCBub2RlLT5mZHdE aXJlY3RNb2RpZnlQbGFucyk7CisJCQlibXNfaXNfbWVtYmVyKGksIGZkd0RpcmVjdE1vZGlmeVBs YW5zKTsKIAogCQkvKgogCQkgKiBWZXJpZnkgcmVzdWx0IHJlbGF0aW9uIGlzIGEgdmFsaWQgdGFy Z2V0IGZvciB0aGUgY3VycmVudCBvcGVyYXRpb24KQEAgLTQ4NTcsNyArNDg3NSw3IEBAIEV4ZWNJ bml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCQkJcmVzdWx0UmVsSW5mby0+cmlfRmR3Um91dGluZSAhPSBOVUxMICYmCiAJCQlyZXN1 bHRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lLT5CZWdpbkZvcmVpZ25Nb2RpZnkgIT0gTlVMTCkKIAkJ ewotCQkJTGlzdAkgICAqZmR3X3ByaXZhdGUgPSAoTGlzdCAqKSBsaXN0X250aChub2RlLT5mZHdQ cml2TGlzdHMsIGkpOworCQkJTGlzdAkgICAqZmR3X3ByaXZhdGUgPSAoTGlzdCAqKSBsaXN0X250 aChmZHdQcml2TGlzdHMsIGkpOwogCiAJCQlyZXN1bHRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lLT5C ZWdpbkZvcmVpZ25Nb2RpZnkobXRzdGF0ZSwKIAkJCQkJCQkJCQkJCQkJCSByZXN1bHRSZWxJbmZv LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA0MDllMTcyYmZiNi4uNjY3N2EwM2NhYWIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCkBAIC0xNDUzLDEzICsxNDUzLDE1IEBAIHR5cGVkZWYgc3RydWN0IE1v ZGlmeVRhYmxlU3RhdGUKIAlkb3VibGUJCW10X21lcmdlX2RlbGV0ZWQ7CiAKIAkvKgotCSAqIExp c3RzIG9mIHZhbGlkIHVwZGF0ZUNvbG5vc0xpc3RzLCBtZXJnZUFjdGlvbkxpc3RzLCBhbmQKLQkg KiBtZXJnZUpvaW5Db25kaXRpb25zLiAgVGhlc2UgY29udGFpbiBvbmx5IGVudHJpZXMgZm9yIHVu cHJ1bmVkCi0JICogcmVsYXRpb25zLCBmaWx0ZXJlZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGxp c3RzIGluIE1vZGlmeVRhYmxlLgorCSAqIExpc3RzIG9mIHZhbGlkIHVwZGF0ZUNvbG5vc0xpc3Rz LCBtZXJnZUFjdGlvbkxpc3RzLAorCSAqIG1lcmdlSm9pbkNvbmRpdGlvbnMsIGFuZCBmZHdQcml2 TGlzdHMuICBUaGVzZSBjb250YWluIG9ubHkgZW50cmllcyBmb3IKKwkgKiB1bnBydW5lZCByZWxh dGlvbnMsIGZpbHRlcmVkIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgbGlzdHMgaW4KKwkgKiBNb2Rp ZnlUYWJsZS4KIAkgKi8KIAlMaXN0CSAgICptdF91cGRhdGVDb2xub3NMaXN0czsKIAlMaXN0CSAg ICptdF9tZXJnZUFjdGlvbkxpc3RzOwogCUxpc3QJICAgKm10X21lcmdlSm9pbkNvbmRpdGlvbnM7 CisJTGlzdAkgICAqbXRfZmR3UHJpdkxpc3RzOwogfSBNb2RpZnlUYWJsZVN0YXRlOwogCiAvKiAt LS0tLS0tLS0tLS0tLS0tCi0tIAoyLjQ3LjMKCg== --000000000000aa34900654d36cfb--