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 1waY6j-001snI-0t for pgsql-bugs@arkaria.postgresql.org; Fri, 19 Jun 2026 12:14:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1waXt6-00Fp0R-1d for pgsql-bugs@arkaria.postgresql.org; Fri, 19 Jun 2026 11:59:56 +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 1waXt6-00Fp0J-00 for pgsql-bugs@lists.postgresql.org; Fri, 19 Jun 2026 11:59:56 +0000 Received: from mail-dy1-x1332.google.com ([2607:f8b0:4864:20::1332]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1waXt3-000000018Ox-3BZT for pgsql-bugs@lists.postgresql.org; Fri, 19 Jun 2026 11:59:55 +0000 Received: by mail-dy1-x1332.google.com with SMTP id 5a478bee46e88-30bf132969bso2440450eec.0 for ; Fri, 19 Jun 2026 04:59:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781870392; cv=none; d=google.com; s=arc-20240605; b=D7lwZHMyYiRjeOcNrRoRP3yZnLFKoCfjrpj3LMd08A+LdxUMA7Uu1U7x+ugaFPqTkd HckYG2xReppAefqM/j1c0ys95t3eNM2C/BzT2q6J93wRVCTx3+5fwVaBcNcdEmEH4G40 LaLm0eRmZklKUVpdNXzHl1Ye87XxiCSbSWeRzbjy7jODREAOzGI+MVGrH9Q9iDHE8GF1 MhohawTC7FbmLbBXzadDnwg4Z36atJB7MM4GVNXEdJa9E37fOtN89yL1dafg9fmM9HQ1 hRBoy5/4yRcosEH/k+vRJycy5XnowgaV4Cj94donx1UJPTRtDaq1finbCqfzLzSVPOo1 Jmew== 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=5f71qNNm6U8eNL4sPV9HRZHs8+eg4d7zVumpKSzTGK0=; fh=UhtXHyqQ2SIkuKNRYXheVGG0zw7SGRGh/n/6URJRh/Y=; b=PsYDiaHYEHmzbC52mnsaD72hrhqxi8xgxSZedN8oIhJv7ghUb/ZOlEivf1UM5RTw7J HnjHloVftm15Hjz7Dpat54r2TgQrhDJ2I812rNkVEe7wYfW+bZ2VGJbOSy5e8DUosQEX FrVEbIwOU2PbEsS7GnJkfcpLc9K5rMUrgBgwqQxRIlPjR0HFr4KSlNclxPvuYo3ScyJU CsuB6gsUYnhmcYlpOyPnSsyeABRFjphlP4p5egcEDUO8QztS5keS3JLJ67QPYPQr77nx L6ZRB8Fx+N9BnvakqNzCqRhqneD0DjUPpyx1zzIZF+DGU2k/wZsG1Ngm6pm1XiZQAuez 98gQ==; 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=1781870392; x=1782475192; 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=5f71qNNm6U8eNL4sPV9HRZHs8+eg4d7zVumpKSzTGK0=; b=EJ4KoJFkj5cdV070mIdF2Ijr2rWOgNj/doVJOoselmJNd41O2gfCTI4CWLuLvdtlQD Lpy+c82EToF/3Xp7ju8kVdwv+vbJ0YNSMCGUKYX8Yn9bDenAEHHCKq8IpY8zl1BnveAR vA3srAWMJgCmmTUo1iNcfVgvxZIncdhDMJxI/1r0RXZAOunaCXfOp/Fwa74cikKSu/aQ JvyFyuDA/GWi0ENtvRw97cX4EGYxV6hN1+gtOEDyMgNIPx8qb1XllCFa1qxNnrrx9Xku l3h0dTWvLQwau3RxaPb37gmTOK4a/xqWQtih0X9kGbQ5lyImE+0YiJ8LIcl0kjc/dGak gs7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781870392; x=1782475192; 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=5f71qNNm6U8eNL4sPV9HRZHs8+eg4d7zVumpKSzTGK0=; b=JcG8fTrZzLwm5uQnHJ5rnVzd3ihCqUQVUIQ+/Rd2jpu2cscx9r8/PcwYUg4pJhTMgm qBxdqOI2p9piQspSaqMo7A5CA+J5LPFOl2bodvOsBbKehwpDnfFFsvrjHx/ejNavbQ5r EZshSYHk9Snr+FP1ZVRsLRF5BlREYqVDU1Ca+/nhZ6u+3Tp09tapv4KaA6QPCLKd3ccO BNpA7MNfdYcM7KNZOmanvgphYAY6BPknTl+ABKdLbddwAmDaSzZaFCNZ7A8BVWhnpOU6 2gojFpmr98V8IFa1TwMm1nVb1xKGE0heUP8IRU/rcQA+xuye2X5j0IOf7N48BOL0J9m6 +Baw== X-Forwarded-Encrypted: i=1; AFNElJ/r2XORc6VfR/zurc4UfWIZSr4FH1qh70IWKX7m0QEhySXqLvvX8LWzYmoChUeJPfiMA/gNsHJgKvt3@lists.postgresql.org X-Gm-Message-State: AOJu0YzQKzMmNs2AOkhIgUcDjbZfAukQ11kpIX91kFLqoJIijAyIhHCF KX2gAd0kBWse2NJ06w/DhIfMUzb5s/gK76vArMeelOH9g6/xF7KOBEjx9vQgAoR8RHzObn6Iw+Y lk9TGlV1pselg/g7EocX9daIAXxF+OGQ= X-Gm-Gg: AfdE7cm4yD8HU2AbK1sfra2Rkf0dKcJETmcezkZfGZXJ5yVvyqulyJzZ8vPGbAGV5/B DhYazpaGh4JYFgY8cFpsk0Tql7IxkNJ5U5Ax6LsQY5tcuZvGWq5GP93k/94juih3ML3Y+XpcDsp RPdcqDIuvbq0k18BqgrCKQD2uDTwUlfsthTUMEp3C5A2IX2zzyFVUjnCOzF1bmqN7J5//atId0H mJYil87Fq7saDpnH6s5nWEFlBvkwloO2PPE4RIWzDaGTo6NuE75m3DnVCkEdTC3hEjQGjVp3aBJ 9rohQN5luqB1WnrvxEA2hcHm9qd8K3DUClaCxZwhDg/N4QAzzbdx61Ypr9Ykt5pi/nb5/b2/rPw DHvm86UXwzjBtDs9PY2SKi1Et11vthQ== X-Received: by 2002:a05:7300:220d:b0:304:630d:e4ec with SMTP id 5a478bee46e88-30c0716b9b0mr2007754eec.28.1781870392094; Fri, 19 Jun 2026 04:59:52 -0700 (PDT) MIME-Version: 1.0 References: <19484-a3cb82c8cde3c8fa@postgresql.org> In-Reply-To: From: Etsuro Fujita Date: Fri, 19 Jun 2026 20:59:39 +0900 X-Gm-Features: AVVi8CdWH2C4FhZdy0spWRKF9zTrDh2MnkGB176OaUlmE0mSm48cJDPaX8i9D0A Message-ID: Subject: Re: BUG #19484: Segmentation fault triggered by FDW To: Amit Langote Cc: Matheus Alcantara , Ayush Tiwari , Rafia Sabih , 798604270@qq.com, pgsql-bugs@lists.postgresql.org, Amit Langote Content-Type: multipart/mixed; boundary="000000000000c222c306549a072d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c222c306549a072d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Amit-san, On Thu, Jun 18, 2026 at 7:57=E2=80=AFPM Amit Langote wrote: > On Thu, Jun 18, 2026 at 19:55 Etsuro Fujita wro= te: >> 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: @@ -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. +-- Runtime pruning of result relations must keep ModifyTable's per-relatio= n +-- 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)" +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. @@ -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[] afte= r + * pruning + */ + List *mt_fdwPrivLists; For v18, I think we should put this at the end of the ModifyTableState struct, to avoid ABI breakage. That's it. Sorry for the delay. Best regards, Etsuro Fujita --000000000000c222c306549a072d Content-Type: application/octet-stream; name="v2-0001-Re-index-ModifyTable-FDW-arrays-when-pruning-resu-efujita.patch" Content-Disposition: attachment; filename="v2-0001-Re-index-ModifyTable-FDW-arrays-when-pruning-resu-efujita.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqkvlzj50 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5v dXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CmluZGV4 IGU5MDI4OWU0YWIxLi4xMzg1M2I4YjcyMCAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19m ZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9l eHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC03MTk3LDYgKzcxOTcsNzAgQEAgUkVTRVQgZW5h YmxlX21hdGVyaWFsOwogRFJPUCBGT1JFSUdOIFRBQkxFIHJlbXQyOwogRFJPUCBUQUJMRSBsb2N0 MTsKIERST1AgVEFCTEUgbG9jdDI7CistLSBUZXN0IHRoYXQgZGlyZWN0IG1vZGlmeSBhbmQgZm9y ZWlnbiBtb2RpZnkgd29yayB3aXRoIHJ1bnRpbWUgcHJ1bmluZyBvZgorLS0gcmVzdWx0IHJlbGF0 aW9ucyAoYnVnICMxOTQ4NCkKK2NyZWF0ZSB0YWJsZSBmZHdfcGFydF91cGRhdGUgKGEgaW50IG5v dCBudWxsLCBiIGludCkgcGFydGl0aW9uIGJ5IGxpc3QgKGEpOworY3JlYXRlIHRhYmxlIGZkd19w YXJ0X3VwZGF0ZV9wMSBwYXJ0aXRpb24gb2YgZmR3X3BhcnRfdXBkYXRlIGZvciB2YWx1ZXMgaW4g KDEpOworY3JlYXRlIHRhYmxlIGZkd19wYXJ0X3VwZGF0ZV9yZW1vdGUgKGEgaW50IG5vdCBudWxs LCBiIGludCk7CitjcmVhdGUgZm9yZWlnbiB0YWJsZSBmZHdfcGFydF91cGRhdGVfcDIgcGFydGl0 aW9uIG9mIGZkd19wYXJ0X3VwZGF0ZQorICAgIGZvciB2YWx1ZXMgaW4gKDIpCisgICAgc2VydmVy IGxvb3BiYWNrIG9wdGlvbnMgKHRhYmxlX25hbWUgJ2Zkd19wYXJ0X3VwZGF0ZV9yZW1vdGUnKTsK K2luc2VydCBpbnRvIGZkd19wYXJ0X3VwZGF0ZV9wMSB2YWx1ZXMgKDEsIDEwKTsKK2luc2VydCBp bnRvIGZkd19wYXJ0X3VwZGF0ZV9yZW1vdGUgdmFsdWVzICgyLCAyMCk7CitzZXQgcGxhbl9jYWNo ZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworLS0gQ2hlY2sgRGlyZWN0TW9kaWZ5IGNhc2UK K3ByZXBhcmUgZmR3X3BhcnRfdXBkKGludCkgYXMKKyAgICB1cGRhdGUgZmR3X3BhcnRfdXBkYXRl IHNldCBiID0gYiArIDEgd2hlcmUgYSA9ICQxCisgICAgcmV0dXJuaW5nIHRhYmxlb2lkOjpyZWdj bGFzcywgYSwgYjsKK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikKKyAgICBleGVjdXRlIGZk d19wYXJ0X3VwZCgyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBVcGRhdGUgb24gcHVibGljLmZkd19w YXJ0X3VwZGF0ZQorICAgT3V0cHV0OiAoZmR3X3BhcnRfdXBkYXRlXzEudGFibGVvaWQpOjpyZWdj bGFzcywgZmR3X3BhcnRfdXBkYXRlXzEuYSwgZmR3X3BhcnRfdXBkYXRlXzEuYgorICAgRm9yZWln biBVcGRhdGUgb24gcHVibGljLmZkd19wYXJ0X3VwZGF0ZV9wMiBmZHdfcGFydF91cGRhdGVfMgor ICAgLT4gIEFwcGVuZAorICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMQorICAgICAgICAgLT4g IEZvcmVpZ24gVXBkYXRlIG9uIHB1YmxpYy5mZHdfcGFydF91cGRhdGVfcDIgZmR3X3BhcnRfdXBk YXRlXzIKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFVQREFURSBwdWJsaWMuZmR3X3BhcnRf dXBkYXRlX3JlbW90ZSBTRVQgYiA9IChiICsgMSkgV0hFUkUgKChhID0gJDE6OmludGVnZXIpKSBS RVRVUk5JTkcgYSwgYgorKDcgcm93cykKKworZXhlY3V0ZSBmZHdfcGFydF91cGQoMik7CisgICAg ICB0YWJsZW9pZCAgICAgIHwgYSB8IGIgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tKy0tLS0K KyBmZHdfcGFydF91cGRhdGVfcDIgfCAyIHwgMjEKKygxIHJvdykKKworZGVhbGxvY2F0ZSBmZHdf cGFydF91cGQ7CistLSBDaGVjayBGb3JlaWduTW9kaWZ5IGNhc2UKK3ByZXBhcmUgZmR3X3BhcnRf dXBkMihpbnQpIGFzCisgICAgdXBkYXRlIGZkd19wYXJ0X3VwZGF0ZSBzZXQgYiA9IGIgKyByYW5k b20oKTo6aW50ICogMCArIDEgd2hlcmUgYSA9ICQxCisgICAgcmV0dXJuaW5nIHRhYmxlb2lkOjpy ZWdjbGFzcywgYSwgYjsKK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikKKyAgICBleGVjdXRl IGZkd19wYXJ0X3VwZDIoMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBVcGRhdGUgb24gcHVi bGljLmZkd19wYXJ0X3VwZGF0ZQorICAgT3V0cHV0OiAoZmR3X3BhcnRfdXBkYXRlXzEudGFibGVv aWQpOjpyZWdjbGFzcywgZmR3X3BhcnRfdXBkYXRlXzEuYSwgZmR3X3BhcnRfdXBkYXRlXzEuYgor ICAgRm9yZWlnbiBVcGRhdGUgb24gcHVibGljLmZkd19wYXJ0X3VwZGF0ZV9wMiBmZHdfcGFydF91 cGRhdGVfMgorICAgICBSZW1vdGUgU1FMOiBVUERBVEUgcHVibGljLmZkd19wYXJ0X3VwZGF0ZV9y ZW1vdGUgU0VUIGIgPSAkMiBXSEVSRSBjdGlkID0gJDEgUkVUVVJOSU5HIGEsIGIKKyAgIC0+ICBB cHBlbmQKKyAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEKKyAgICAgICAgIC0+ICBGb3JlaWdu IFNjYW4gb24gcHVibGljLmZkd19wYXJ0X3VwZGF0ZV9wMiBmZHdfcGFydF91cGRhdGVfMgorICAg ICAgICAgICAgICAgT3V0cHV0OiAoKGZkd19wYXJ0X3VwZGF0ZV8yLmIgKyAoKHJhbmRvbSgpKTo6 aW50ZWdlciAqIDApKSArIDEpLCBmZHdfcGFydF91cGRhdGVfMi50YWJsZW9pZCwgZmR3X3BhcnRf dXBkYXRlXzIuY3RpZCwgZmR3X3BhcnRfdXBkYXRlXzIuKgorICAgICAgICAgICAgICAgUmVtb3Rl IFNRTDogU0VMRUNUIGEsIGIsIGN0aWQgRlJPTSBwdWJsaWMuZmR3X3BhcnRfdXBkYXRlX3JlbW90 ZSBXSEVSRSAoKGEgPSAkMTo6aW50ZWdlcikpIEZPUiBVUERBVEUKKyg5IHJvd3MpCisKK2V4ZWN1 dGUgZmR3X3BhcnRfdXBkMigyKTsKKyAgICAgIHRhYmxlb2lkICAgICAgfCBhIHwgYiAgCistLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0rLS0tLQorIGZkd19wYXJ0X3VwZGF0ZV9wMiB8IDIgfCAyMgor KDEgcm93KQorCitkZWFsbG9jYXRlIGZkd19wYXJ0X3VwZDI7CityZXNldCBwbGFuX2NhY2hlX21v ZGU7Citkcm9wIHRhYmxlIGZkd19wYXJ0X3VwZGF0ZTsKK2Ryb3AgdGFibGUgZmR3X3BhcnRfdXBk YXRlX3JlbW90ZTsKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIHRlc3QgY2hlY2sgY29uc3RyYWludHMKIC0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jl c19mZHcuc3FsIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKaW5k ZXggZGZjNThiZWIwZDIuLjY5N2M0YTkyZTJkIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVz X2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwv cG9zdGdyZXNfZmR3LnNxbApAQCAtMTc3OCw2ICsxNzc4LDQwIEBAIERST1AgRk9SRUlHTiBUQUJM RSByZW10MjsKIERST1AgVEFCTEUgbG9jdDE7CiBEUk9QIFRBQkxFIGxvY3QyOwogCistLSBUZXN0 IHRoYXQgZGlyZWN0IG1vZGlmeSBhbmQgZm9yZWlnbiBtb2RpZnkgd29yayB3aXRoIHJ1bnRpbWUg cHJ1bmluZyBvZgorLS0gcmVzdWx0IHJlbGF0aW9ucyAoYnVnICMxOTQ4NCkKK2NyZWF0ZSB0YWJs ZSBmZHdfcGFydF91cGRhdGUgKGEgaW50IG5vdCBudWxsLCBiIGludCkgcGFydGl0aW9uIGJ5IGxp c3QgKGEpOworY3JlYXRlIHRhYmxlIGZkd19wYXJ0X3VwZGF0ZV9wMSBwYXJ0aXRpb24gb2YgZmR3 X3BhcnRfdXBkYXRlIGZvciB2YWx1ZXMgaW4gKDEpOworY3JlYXRlIHRhYmxlIGZkd19wYXJ0X3Vw ZGF0ZV9yZW1vdGUgKGEgaW50IG5vdCBudWxsLCBiIGludCk7CitjcmVhdGUgZm9yZWlnbiB0YWJs ZSBmZHdfcGFydF91cGRhdGVfcDIgcGFydGl0aW9uIG9mIGZkd19wYXJ0X3VwZGF0ZQorICAgIGZv ciB2YWx1ZXMgaW4gKDIpCisgICAgc2VydmVyIGxvb3BiYWNrIG9wdGlvbnMgKHRhYmxlX25hbWUg J2Zkd19wYXJ0X3VwZGF0ZV9yZW1vdGUnKTsKK2luc2VydCBpbnRvIGZkd19wYXJ0X3VwZGF0ZV9w MSB2YWx1ZXMgKDEsIDEwKTsKK2luc2VydCBpbnRvIGZkd19wYXJ0X3VwZGF0ZV9yZW1vdGUgdmFs dWVzICgyLCAyMCk7CitzZXQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOwor CistLSBDaGVjayBEaXJlY3RNb2RpZnkgY2FzZQorcHJlcGFyZSBmZHdfcGFydF91cGQoaW50KSBh cworICAgIHVwZGF0ZSBmZHdfcGFydF91cGRhdGUgc2V0IGIgPSBiICsgMSB3aGVyZSBhID0gJDEK KyAgICByZXR1cm5pbmcgdGFibGVvaWQ6OnJlZ2NsYXNzLCBhLCBiOworZXhwbGFpbiAodmVyYm9z ZSwgY29zdHMgb2ZmKQorICAgIGV4ZWN1dGUgZmR3X3BhcnRfdXBkKDIpOworZXhlY3V0ZSBmZHdf cGFydF91cGQoMik7CitkZWFsbG9jYXRlIGZkd19wYXJ0X3VwZDsKKworLS0gQ2hlY2sgRm9yZWln bk1vZGlmeSBjYXNlCitwcmVwYXJlIGZkd19wYXJ0X3VwZDIoaW50KSBhcworICAgIHVwZGF0ZSBm ZHdfcGFydF91cGRhdGUgc2V0IGIgPSBiICsgcmFuZG9tKCk6OmludCAqIDAgKyAxIHdoZXJlIGEg PSAkMQorICAgIHJldHVybmluZyB0YWJsZW9pZDo6cmVnY2xhc3MsIGEsIGI7CitleHBsYWluICh2 ZXJib3NlLCBjb3N0cyBvZmYpCisgICAgZXhlY3V0ZSBmZHdfcGFydF91cGQyKDIpOworZXhlY3V0 ZSBmZHdfcGFydF91cGQyKDIpOworZGVhbGxvY2F0ZSBmZHdfcGFydF91cGQyOworCityZXNldCBw bGFuX2NhY2hlX21vZGU7Citkcm9wIHRhYmxlIGZkd19wYXJ0X3VwZGF0ZTsKK2Ryb3AgdGFibGUg ZmR3X3BhcnRfdXBkYXRlX3JlbW90ZTsKKwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gdGVzdCBjaGVjayBj b25zdHJhaW50cwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDExMmMx N2IwZDY0Li5hNDBkMDNkMzVmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtNDgyMSw3ICs0 ODIxLDcgQEAgc2hvd19tb2RpZnl0YWJsZV9pbmZvKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUs IExpc3QgKmFuY2VzdG9ycywKIAkJCWZkd3JvdXRpbmUgIT0gTlVMTCAmJgogCQkJZmR3cm91dGlu ZS0+RXhwbGFpbkZvcmVpZ25Nb2RpZnkgIT0gTlVMTCkKIAkJewotCQkJTGlzdAkgICAqZmR3X3By aXZhdGUgPSAoTGlzdCAqKSBsaXN0X250aChub2RlLT5mZHdQcml2TGlzdHMsIGopOworCQkJTGlz dAkgICAqZmR3X3ByaXZhdGUgPSAoTGlzdCAqKSBsaXN0X250aChtdHN0YXRlLT5tdF9mZHdQcml2 TGlzdHMsIGopOwogCiAJCQlmZHdyb3V0aW5lLT5FeHBsYWluRm9yZWlnbk1vZGlmeShtdHN0YXRl LAogCQkJCQkJCQkJCQkgcmVzdWx0UmVsSW5mbywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlm eVRhYmxlLmMKaW5kZXggMzNhNjczNWYwOGQuLjg0NmRjNTE2YjQzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNTEwOCw2ICs1MTA4LDggQEAgRXhlY0luaXRNb2Rp ZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ TGlzdAkgICAqdXBkYXRlQ29sbm9zTGlzdHMgPSBOSUw7CiAJTGlzdAkgICAqbWVyZ2VBY3Rpb25M aXN0cyA9IE5JTDsKIAlMaXN0CSAgICptZXJnZUpvaW5Db25kaXRpb25zID0gTklMOworCUxpc3QJ ICAgKmZkd1ByaXZMaXN0cyA9IE5JTDsKKwlCaXRtYXBzZXQgICpmZHdEaXJlY3RNb2RpZnlQbGFu cyA9IE5VTEw7CiAJUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbzsKIAlMaXN0CSAgICphcm93 bWFya3M7CiAJTGlzdENlbGwgICAqbDsKQEAgLTUxNTAsNiArNTE1Miw4IEBAIEV4ZWNJbml0TW9k aWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CiAJCWlmIChrZWVwX3JlbCkKIAkJeworCQkJTGlzdAkgICAqZmR3UHJpdkxpc3QgPSAoTGlzdCAq KSBsaXN0X250aChub2RlLT5mZHdQcml2TGlzdHMsIGkpOworCiAJCQlyZXN1bHRSZWxhdGlvbnMg PSBsYXBwZW5kX2ludChyZXN1bHRSZWxhdGlvbnMsIHJ0aSk7CiAJCQlpZiAobm9kZS0+d2l0aENo ZWNrT3B0aW9uTGlzdHMpCiAJCQl7CkBAIC01MTg1LDYgKzUxODksMTkgQEAgRXhlY0luaXRNb2Rp ZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAK IAkJCQltZXJnZUpvaW5Db25kaXRpb25zID0gbGFwcGVuZChtZXJnZUpvaW5Db25kaXRpb25zLCBt ZXJnZUpvaW5Db25kaXRpb24pOwogCQkJfQorCisJCQkvKgorCQkJICogZmR3UHJpdkxpc3RzL2Zk d0RpcmVjdE1vZGlmeVBsYW5zIGFyZSByZS1pbmRleGVkIHRvIG1hdGNoCisJCQkgKiByZXN1bHRS ZWxhdGlvbnMKKwkJCSAqLworCQkJZmR3UHJpdkxpc3RzID0gbGFwcGVuZChmZHdQcml2TGlzdHMs IGZkd1ByaXZMaXN0KTsKKwkJCWlmIChibXNfaXNfbWVtYmVyKGksIG5vZGUtPmZkd0RpcmVjdE1v ZGlmeVBsYW5zKSkKKwkJCXsKKwkJCQlpbnQJCQluZXdfaW5kZXggPSBsaXN0X2xlbmd0aChyZXN1 bHRSZWxhdGlvbnMpIC0gMTsKKworCQkJCWZkd0RpcmVjdE1vZGlmeVBsYW5zID0gYm1zX2FkZF9t ZW1iZXIoZmR3RGlyZWN0TW9kaWZ5UGxhbnMsCisJCQkJCQkJCQkJCQkJICBuZXdfaW5kZXgpOwor CQkJfQogCQl9CiAJCWkrKzsKIAl9CkBAIC01MjEzLDYgKzUyMzAsNyBAQCBFeGVjSW5pdE1vZGlm eVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlt dHN0YXRlLT5tdF91cGRhdGVDb2xub3NMaXN0cyA9IHVwZGF0ZUNvbG5vc0xpc3RzOwogCW10c3Rh dGUtPm10X21lcmdlQWN0aW9uTGlzdHMgPSBtZXJnZUFjdGlvbkxpc3RzOwogCW10c3RhdGUtPm10 X21lcmdlSm9pbkNvbmRpdGlvbnMgPSBtZXJnZUpvaW5Db25kaXRpb25zOworCW10c3RhdGUtPm10 X2Zkd1ByaXZMaXN0cyA9IGZkd1ByaXZMaXN0czsKIAogCS8qLS0tLS0tLS0tLQogCSAqIFJlc29s dmUgdGhlIHRhcmdldCByZWxhdGlvbi4gVGhpcyBpcyB0aGUgc2FtZSBhczoKQEAgLTUyODgsNyAr NTMwNiw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJCS8qIEluaXRpYWxpemUgdGhlIHVzZXNGZHdEaXJlY3RN b2RpZnkgZmxhZyAqLwogCQlyZXN1bHRSZWxJbmZvLT5yaV91c2VzRmR3RGlyZWN0TW9kaWZ5ID0K LQkJCWJtc19pc19tZW1iZXIoaSwgbm9kZS0+ZmR3RGlyZWN0TW9kaWZ5UGxhbnMpOworCQkJYm1z X2lzX21lbWJlcihpLCBmZHdEaXJlY3RNb2RpZnlQbGFucyk7CiAKIAkJLyoKIAkJICogVmVyaWZ5 IHJlc3VsdCByZWxhdGlvbiBpcyBhIHZhbGlkIHRhcmdldCBmb3IgdGhlIGN1cnJlbnQgb3BlcmF0 aW9uCkBAIC01MzE3LDcgKzUzMzUsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxl ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCXJlc3VsdFJlbEluZm8tPnJp X0Zkd1JvdXRpbmUgIT0gTlVMTCAmJgogCQkJcmVzdWx0UmVsSW5mby0+cmlfRmR3Um91dGluZS0+ QmVnaW5Gb3JlaWduTW9kaWZ5ICE9IE5VTEwpCiAJCXsKLQkJCUxpc3QJICAgKmZkd19wcml2YXRl ID0gKExpc3QgKikgbGlzdF9udGgobm9kZS0+ZmR3UHJpdkxpc3RzLCBpKTsKKwkJCUxpc3QJICAg KmZkd19wcml2YXRlID0gKExpc3QgKikgbGlzdF9udGgoZmR3UHJpdkxpc3RzLCBpKTsKIAogCQkJ cmVzdWx0UmVsSW5mby0+cmlfRmR3Um91dGluZS0+QmVnaW5Gb3JlaWduTW9kaWZ5KG10c3RhdGUs CiAJCQkJCQkJCQkJCQkJCQkgcmVzdWx0UmVsSW5mbywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXgg NTNjMTM4MzEwZGIuLjU4NzEzODM5NjFmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTQ0Niw2 ICsxNDQ2LDEyIEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlU3RhdGUKIAlpbnQJCQltdF9u cmVsczsJCS8qIG51bWJlciBvZiBlbnRyaWVzIGluIHJlc3VsdFJlbEluZm9bXSAqLwogCVJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm87CS8qIGluZm8gYWJvdXQgdGFyZ2V0IHJlbGF0aW9uKHMp ICovCiAKKwkvKgorCSAqIFJlLWluZGV4ZWQgZmR3IHByaXZhdGUgZGF0YSBsaXN0cywgYWxpZ25l ZCB3aXRoIHJlc3VsdFJlbEluZm9bXSBhZnRlcgorCSAqIHBydW5pbmcKKwkgKi8KKwlMaXN0CSAg ICptdF9mZHdQcml2TGlzdHM7CisKIAkvKgogCSAqIFRhcmdldCByZWxhdGlvbiBtZW50aW9uZWQg aW4gdGhlIG9yaWdpbmFsIHN0YXRlbWVudCwgdXNlZCB0byBmaXJlCiAJICogc3RhdGVtZW50LWxl dmVsIHRyaWdnZXJzIGFuZCBhcyB0aGUgcm9vdCBmb3IgdHVwbGUgcm91dGluZy4gIChUaGlzCg== --000000000000c222c306549a072d--