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 1w4aRf-002L7d-1v for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Mar 2026 08:15:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w4aRd-00GLoI-0j for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Mar 2026 08:15:29 +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 1w4aRc-00GLoA-1w for pgsql-hackers@lists.postgresql.org; Mon, 23 Mar 2026 08:15:29 +0000 Received: from mail-yw1-x112a.google.com ([2607:f8b0:4864:20::112a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w4aRa-00000000akt-0x5c for pgsql-hackers@postgresql.org; Mon, 23 Mar 2026 08:15:27 +0000 Received: by mail-yw1-x112a.google.com with SMTP id 00721157ae682-79ab50ee951so5519697b3.2 for ; Mon, 23 Mar 2026 01:15:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774253725; cv=none; d=google.com; s=arc-20240605; b=TByaajcbca1T+EBjqsT30hUyJt8qTKan1ibeYkh7EPrGHspT0+zPpiGQJYGYyXwOvV fSant0voTCZhQ+DCG0drN22DS6c88KuM/y+1ugKU3b0k+dXOoCyqCGKQserskrDqvcKv w9822CuyRnu/D4WZU8rKg+asAau2T5GA50xsjaQHE3p7Rdt79SlBgX1fKmZpecgp5ZmF GhKrEasR/twInrOlJlxuoEoz0ku5p2OhJ0bqYFkStzJ5euSfv4Ujg+l6JBkF89sXWU7U qIpF+1xcA4+cvQDI/d1GbMcNiRbxaBQIGzwU0D1cCMa7GMEryCDMjmQB9FPyx/fIR0X2 903A== 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=VYxWZF4AewF1oitZ8wiv0gYSo8+eYMbLEZSuJNN62+M=; fh=Pkc4LUX2DlKPoFjorXaWL66By5MNIDuww6txvKRUNnc=; b=ANpOf6qhJRwZMgKRMdxBxw7vmD5sML8dhtM6RUFcYW/ww1Pel1NXwE9ZA0TCn2TrsA 0Z7yGbCsMrutWEcU9dU+gq7TZd8mUKqGAGpHbk19KO60XyyQrqHASotCmHsuMzd5ErfR KHAGWdR02KO7mmMgRM++xZTRPtpQt59cb7pbBWH67fYftxh7XFqX6RxAPEMbkcROlxui 5FsXJEi6Ves/o0a53eWFZxLl/EPJbJpPF+wj/iZebvRAg+Uiv6Gt8ueyNPWq1o3D498o Q3y1xuQxVkCJSRvUlkFTUwr1fZNnGV8uIq2XUZJk07O4j24oGo+zk+JV5Gpv+GOtEGSC xvxg==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datadoghq.com; s=google; t=1774253725; x=1774858525; darn=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=VYxWZF4AewF1oitZ8wiv0gYSo8+eYMbLEZSuJNN62+M=; b=EBkLKiFBMcfgTCTevBM2V+EpYryRrHqKPE6iFsdAQyoVuqzLm+ei8XJcfCuHQO/2G9 I3GZwdvdbnCAlBquILXVAhDqKI6222gWNJd486JF/smTQ27CDKIcrg0x4K9fZyCU/aIx GCup3xqv/Q3maI0AVQlDs5BRjwBvgNMBQpTxE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774253725; x=1774858525; 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=VYxWZF4AewF1oitZ8wiv0gYSo8+eYMbLEZSuJNN62+M=; b=A/jX0Mzxfh1fRP8lRXz4kEEsEkyzuiJ8YsIcKATfkmflWEEgqMcq8oJCh+mW38ToZq WAVulZJ+WutwU0PTczqSK7L9DlnQiRLwhsJDCBElNcGiOvBbTWwzDD2I1/2mipyuGwWf vlbxqe8LqRptPerWvGJrG8Kcql9mAQGE3LxDs26J4Gl35IAAXVLgSJMY9BFX9Q6eQngW pbL1G5NhKuuPGqktVf+zerYCwYlLo8RtmssG/dXd2/UPxCHXrEt0LYPTiQDYBJMsxsd1 v0p5uFPZCETb/EiPvJUEOL9NiGNhnatQpfE2KMyzZ5vsAP65nggk/V6IpocZg2X/cqWn hEDw== X-Forwarded-Encrypted: i=1; AJvYcCUgnmP5C1s8mDnZW0OewIwFjucBT85VOBRlLQkBGq+hy/QGGqYKk1TTHeCQdbviD6x8zTte/D0gneL3NZCg@postgresql.org X-Gm-Message-State: AOJu0YwIleZbPwdRa8kEstFTn9cC5fE+Te/4qo28FkpyE8SiXzcHcbFB ON7lYK059yJEfby5PNHNL6BJ/krrz8T2/omapHMDIKeA3jV7Hhktq7OJhnxOJoLZrOUh1dJlILh f8FI6N1ec4vPvzMjcPPWjh0FyOEVo0uY+2Kg9qbdVxw== X-Gm-Gg: ATEYQzw12GlxCZhCBd0GP0Zx1DOH4kAe2qQy0M9xINnnP4jBrIM6T+yUwQyhaii/riY ysM8k8A7LOyRvhtKiL7ZXadWf1BZ5+0epk6mFD98/X4IVlYhr3odNsighqhxk7btusFfD4+45uc PufMrWkRTjxaUoKunCMzk6oc29FEiGRzB9Nn15LlV+DlUuAOCy0WEIP0DrBibNHm7PLnvNwd8mQ vlZl2YLv4sUB2TRpNM9K7ny8xmJxnzeiruMejeDkT8aRXftZGtjlZB3QpjGQyNLa7xOqiLfoa15 ARZbfw4qKw== X-Received: by 2002:a05:690c:22c5:b0:797:afeb:de93 with SMTP id 00721157ae682-79a90ac353emr126119327b3.12.1774253724566; Mon, 23 Mar 2026 01:15:24 -0700 (PDT) MIME-Version: 1.0 References: <0cbf5d34-f117-456f-bcc0-50fa9a8eafba@gmail.com> <1D505B52-9D58-4783-846D-600391C2A3B1@gmail.com> In-Reply-To: From: Anthonin Bonnefoy Date: Mon, 23 Mar 2026 09:15:13 +0100 X-Gm-Features: AQROBzCq6mCqv-gUJXYWJIa9M0ma_xgfRL_DCDSLwZNs8MbHTjuSAZQQA8UqdV8 Message-ID: Subject: Re: Propagate XLogFindNextRecord error to callers To: Fujii Masao Cc: Chao Li , Mircea Cadariu , PostgreSQL Hackers , Japin Li Content-Type: multipart/mixed; boundary="000000000000ff9cba064daca20d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ff9cba064daca20d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Mar 17, 2026 at 10:49=E2=80=AFAM Fujii Masao wrote: > Since this patch is marked Ready for Committer, I've started reviewing it= . Thanks for the review! On Tue, Mar 17, 2026 at 10:49=E2=80=AFAM Fujii Masao wrote: > + * When set, *errormsg points to an internal buffer that's valid until t= he next > + * call to XLogReadRecord. > > Could that buffer also be invalidated by other functions that modify > "XLogReaderState *state", such as XLogBeginRead()? Yes, XLogBeginRead() will clear the buffer, but I don't think there's a pattern where XLogBeginRead() is called after XLogFindNextRecord() on the same reader? The comment was more focused on how the function would be used, with XLogReadRecord() being called after the reader state is initialized, and talking about XLogBeginRead() here could be confusing. > +# Wrong WAL version. We copy an existing wal file and set the > +# page's magic value to 0000. > > Would it be better to describe the purpose of this test at the top? > For example: > > # Test that pg_waldump reports a detailed error message when dumping > # a WAL file with an invalid magic number (0000). > { > # The broken WAL file is created by copying a valid WAL file = and > # overwriting its magic number with 0000. > my $broken_wal_dir =3D PostgreSQL::Test::Utils::tempdir_short= (); Sounds good, I've updated the patch. > + open($fh, '+<', $broken_wal); > + close($fh); > > Should we add error handling like: > > open(my $fh, '+<', $broken_wal) > or BAIL_OUT("open($broken_wal) failed: $!"); > close($fh) > or BAIL_OUT("close failed: $!"); Added. > Also, other similar tests seem to call binmode. Is it really unnecessary > in this case? Ha right, I've missed those calls. I'm not sure if it's strictly necessary for the functions used there, but it's probably a lot saner to read and write WAL using binary mode. I've added a binmode call. Regards, Anthonin Bonnefoy --000000000000ff9cba064daca20d Content-Type: application/octet-stream; name="v7-0001-Propagate-errormsg-to-XLogFindNextRecord-caller.patch" Content-Disposition: attachment; filename="v7-0001-Propagate-errormsg-to-XLogFindNextRecord-caller.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn2vwo950 RnJvbSBhMDllMjg5MzkzY2U0YjU0ZWZjYjIyYWFiN2I2YmVkNzhiYzQxNDUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRob25pbiBCb25uZWZveSA8YW50aG9uaW4uYm9ubmVmb3lA ZGF0YWRvZ2hxLmNvbT4KRGF0ZTogTW9uLCAyMyBNYXIgMjAyNiAwODo0MTo0NCArMDEwMApTdWJq ZWN0OiBQcm9wYWdhdGUgZXJyb3Jtc2cgdG8gWExvZ0ZpbmROZXh0UmVjb3JkIGNhbGxlcgoKQ3Vy cmVudGx5LCBYTG9nRmluZE5leHRSZWNvcmQgZXJyb3Jtc2cgaXMgaWdub3JlZCBhbmQgY2FsbGVy cyB3aWxsIG9ubHkKb3V0cHV0IGEgZ2VuZXJpYyAnY291bGQgbm90IGZpbmQgYSB2YWxpZCByZWNv cmQnIG1lc3NhZ2Ugd2l0aG91dApkZXRhaWxzLgpBZGRpdGlvbmFsbHksIGludmFsaWQgcGFnZSBo ZWFkZXIgd29uJ3QgZ28gdGhyb3VnaCBYTG9nUmVhZFJlY29yZCwKbGVhdmluZyB0aGUgZXJyb3Ig aW4gc3RhdGUtPmVycm9ybXNnX2J1Zi4KClRoaXMgcGF0Y2ggcHJvcGFnYXRlcyBYTG9nRmluZE5l eHRSZWNvcmQncyBlcnJvciBtZXNzYWdlIHRvIHRoZSBjYWxsZXJzCmFuZCBkaXNwbGF5cyBpdC4g SW4gY2FzZSBvZiBhbiBpbnZhbGlkIHBhZ2UgaGVhZGVyLCB0aGUgZXJyb3Jtc2cgaXMKZmlsbGVk IHdpdGggZXJyb3Jtc2dfYnVmIGNvbnRlbnQuCi0tLQogY29udHJpYi9wZ193YWxpbnNwZWN0L3Bn X3dhbGluc3BlY3QuYyAgIHwgMTYgKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2dyZWFkZXIuYyB8IDI0ICsrKysrKysrKysrKysrKysrLS0tCiBzcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYyAgfCAxNyArKysrKysrKysrLS0tLS0KIHNyYy9i aW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgICAgICAgICB8IDEyICsrKysrKystLS0KIHNyYy9i aW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbCAgICAgICB8IDI5ICsrKysrKysrKysrKysrKysr KysrKysrKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVhZGVyLmggICAgICAgICB8ICAzICsr LQogNiBmaWxlcyBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9jb250cmliL3BnX3dhbGluc3BlY3QvcGdfd2FsaW5zcGVjdC5jIGIvY29udHJp Yi9wZ193YWxpbnNwZWN0L3BnX3dhbGluc3BlY3QuYwppbmRleCBmNmY1ZjA3OTJkMi4uNGNmNmU0 MWUyZjUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfd2FsaW5zcGVjdC9wZ193YWxpbnNwZWN0LmMK KysrIGIvY29udHJpYi9wZ193YWxpbnNwZWN0L3BnX3dhbGluc3BlY3QuYwpAQCAtOTksNiArOTks NyBAQCBJbml0WExvZ1JlYWRlclN0YXRlKFhMb2dSZWNQdHIgbHNuKQogCVhMb2dSZWFkZXJTdGF0 ZSAqeGxvZ3JlYWRlcjsKIAlSZWFkTG9jYWxYTG9nUGFnZU5vV2FpdFByaXZhdGUgKnByaXZhdGVf ZGF0YTsKIAlYTG9nUmVjUHRyCWZpcnN0X3ZhbGlkX3JlY29yZDsKKwljaGFyCSAgICplcnJvcm1z ZzsKIAogCS8qCiAJICogUmVhZGluZyBXQUwgYmVsb3cgdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIGZp cnN0IHNlZ21lbnRzIGlzbid0IGFsbG93ZWQuCkBAIC0xMjYsMTIgKzEyNywxOSBAQCBJbml0WExv Z1JlYWRlclN0YXRlKFhMb2dSZWNQdHIgbHNuKQogCQkJCSBlcnJkZXRhaWwoIkZhaWxlZCB3aGls ZSBhbGxvY2F0aW5nIGEgV0FMIHJlYWRpbmcgcHJvY2Vzc29yLiIpKSk7CiAKIAkvKiBmaXJzdCBm aW5kIGEgdmFsaWQgcmVjcHRyIHRvIHN0YXJ0IGZyb20gKi8KLQlmaXJzdF92YWxpZF9yZWNvcmQg PSBYTG9nRmluZE5leHRSZWNvcmQoeGxvZ3JlYWRlciwgbHNuKTsKKwlmaXJzdF92YWxpZF9yZWNv cmQgPSBYTG9nRmluZE5leHRSZWNvcmQoeGxvZ3JlYWRlciwgbHNuLCAmZXJyb3Jtc2cpOwogCiAJ aWYgKCFYTG9nUmVjUHRySXNWYWxpZChmaXJzdF92YWxpZF9yZWNvcmQpKQotCQllcmVwb3J0KEVS Uk9SLAotCQkJCWVycm1zZygiY291bGQgbm90IGZpbmQgYSB2YWxpZCByZWNvcmQgYWZ0ZXIgJVgv JTA4WCIsCi0JCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhsc24pKSk7CisJeworCQlpZiAoZXJyb3Jt c2cpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJtc2coImNvdWxkIG5vdCBmaW5kIGEgdmFs aWQgcmVjb3JkIGFmdGVyICVYLyUwOFg6ICVzIiwKKwkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhs c24pLCBlcnJvcm1zZykpOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJtc2co ImNvdWxkIG5vdCBmaW5kIGEgdmFsaWQgcmVjb3JkIGFmdGVyICVYLyUwOFgiLAorCQkJCQkJICAg TFNOX0ZPUk1BVF9BUkdTKGxzbikpKTsKKwl9CiAKIAlyZXR1cm4geGxvZ3JlYWRlcjsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWFkZXIuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWFkZXIuYwppbmRleCA4Y2IyMTEwY2I5OS4uODg0 OTYxMGRiMDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWFk ZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVhZGVyLmMKQEAgLTEz OTAsMTQgKzEzOTAsMjEgQEAgWExvZ1JlYWRlclJlc2V0RXJyb3IoWExvZ1JlYWRlclN0YXRlICpz dGF0ZSkKICAqCiAgKiBUaGlzIHBvc2l0aW9ucyB0aGUgcmVhZGVyLCBsaWtlIFhMb2dCZWdpblJl YWQoKSwgc28gdGhhdCB0aGUgbmV4dCBjYWxsIHRvCiAgKiBYTG9nUmVhZFJlY29yZCgpIHdpbGwg cmVhZCB0aGUgbmV4dCB2YWxpZCByZWNvcmQuCisgKgorICogT24gZmFpbHVyZSwgSW52YWxpZFhM b2dSZWNQdHIgaXMgcmV0dXJuZWQsIGFuZCAqZXJyb3Jtc2cgaXMgc2V0IHRvIGEgc3RyaW5nCisg KiB3aXRoIGRldGFpbHMgb2YgdGhlIGZhaWx1cmUuCisgKgorICogV2hlbiBzZXQsICplcnJvcm1z ZyBwb2ludHMgdG8gYW4gaW50ZXJuYWwgYnVmZmVyIHRoYXQncyB2YWxpZCB1bnRpbCB0aGUgbmV4 dAorICogY2FsbCB0byBYTG9nUmVhZFJlY29yZC4KICAqLwogWExvZ1JlY1B0cgotWExvZ0ZpbmRO ZXh0UmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgUmVjUHRyKQorWExv Z0ZpbmROZXh0UmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgUmVjUHRy LCBjaGFyICoqZXJyb3Jtc2cpCiB7CiAJWExvZ1JlY1B0cgl0bXBSZWNQdHI7CiAJWExvZ1JlY1B0 cglmb3VuZCA9IEludmFsaWRYTG9nUmVjUHRyOwogCVhMb2dQYWdlSGVhZGVyIGhlYWRlcjsKLQlj aGFyCSAgICplcnJvcm1zZzsKKworCSplcnJvcm1zZyA9IE5VTEw7CiAKIAlBc3NlcnQoWExvZ1Jl Y1B0cklzVmFsaWQoUmVjUHRyKSk7CiAKQEAgLTE0ODIsNyArMTQ4OSw3IEBAIFhMb2dGaW5kTmV4 dFJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIFJlY1B0cikKIAkgKiBv ciB3ZSBqdXN0IGp1bXBlZCBvdmVyIHRoZSByZW1haW5pbmcgZGF0YSBvZiBhIGNvbnRpbnVhdGlv bi4KIAkgKi8KIAlYTG9nQmVnaW5SZWFkKHN0YXRlLCB0bXBSZWNQdHIpOwotCXdoaWxlIChYTG9n UmVhZFJlY29yZChzdGF0ZSwgJmVycm9ybXNnKSAhPSBOVUxMKQorCXdoaWxlIChYTG9nUmVhZFJl Y29yZChzdGF0ZSwgZXJyb3Jtc2cpICE9IE5VTEwpCiAJewogCQkvKiBwYXN0IHRoZSByZWNvcmQg d2UndmUgZm91bmQsIGJyZWFrIG91dCAqLwogCQlpZiAoUmVjUHRyIDw9IHN0YXRlLT5SZWFkUmVj UHRyKQpAQCAtMTQ5Nyw2ICsxNTA0LDE3IEBAIFhMb2dGaW5kTmV4dFJlY29yZChYTG9nUmVhZGVy U3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIFJlY1B0cikKIGVycjoKIAlYTG9nUmVhZGVySW52YWxS ZWFkU3RhdGUoc3RhdGUpOwogCisJLyoKKwkgKiBXZSBtYXkgaGF2ZSByZXBvcnRlZCBlcnJvcnMg ZHVlIHRvIGludmFsaWQgV0FMIGhlYWRlciwgcHJvcGFnYXRlIHRoZQorCSAqIGVycm9yIG1lc3Nh Z2UgdG8gdGhlIGNhbGxlci4KKwkgKi8KKwlpZiAoc3RhdGUtPmVycm9ybXNnX2RlZmVycmVkKQor CXsKKwkJaWYgKHN0YXRlLT5lcnJvcm1zZ19idWZbMF0gIT0gJ1wwJykKKwkJCSplcnJvcm1zZyA9 IHN0YXRlLT5lcnJvcm1zZ19idWY7CisJCXN0YXRlLT5lcnJvcm1zZ19kZWZlcnJlZCA9IGZhbHNl OworCX0KKwogCXJldHVybiBJbnZhbGlkWExvZ1JlY1B0cjsKIH0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3dhbHN1bW1hcml6ZXIuYwppbmRleCBlMWFhMTAyZjQxZC4uMGMwNjcwZjdkYTkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCisrKyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jCkBAIC05MTUsNiArOTE1LDcgQEAgU3Vt bWFyaXplV0FMKFRpbWVMaW5lSUQgdGxpLCBYTG9nUmVjUHRyIHN0YXJ0X2xzbiwgYm9vbCBleGFj dCwKIAlXYWxTdW1tYXJ5SU8gaW87CiAJQmxvY2tSZWZUYWJsZSAqYnJ0YWIgPSBDcmVhdGVFbXB0 eUJsb2NrUmVmVGFibGUoKTsKIAlib29sCQlmYXN0X2ZvcndhcmQgPSB0cnVlOworCWNoYXIJICAg KmVycm9ybXNnOwogCiAJLyogSW5pdGlhbGl6ZSBwcml2YXRlIGRhdGEgZm9yIHhsb2dyZWFkZXIu ICovCiAJcHJpdmF0ZV9kYXRhID0gcGFsbG9jMF9vYmplY3QoU3VtbWFyaXplclJlYWRMb2NhbFhM b2dQcml2YXRlKTsKQEAgLTk2Niw3ICs5NjcsNyBAQCBTdW1tYXJpemVXQUwoVGltZUxpbmVJRCB0 bGksIFhMb2dSZWNQdHIgc3RhcnRfbHNuLCBib29sIGV4YWN0LAogCX0KIAllbHNlCiAJewotCQlz dW1tYXJ5X3N0YXJ0X2xzbiA9IFhMb2dGaW5kTmV4dFJlY29yZCh4bG9ncmVhZGVyLCBzdGFydF9s c24pOworCQlzdW1tYXJ5X3N0YXJ0X2xzbiA9IFhMb2dGaW5kTmV4dFJlY29yZCh4bG9ncmVhZGVy LCBzdGFydF9sc24sICZlcnJvcm1zZyk7CiAJCWlmICghWExvZ1JlY1B0cklzVmFsaWQoc3VtbWFy eV9zdGFydF9sc24pKQogCQl7CiAJCQkvKgpAQCAtOTk1LDkgKzk5NiwxNiBAQCBTdW1tYXJpemVX QUwoVGltZUxpbmVJRCB0bGksIFhMb2dSZWNQdHIgc3RhcnRfbHNuLCBib29sIGV4YWN0LAogCQkJ CXN3aXRjaF9sc24gPSB4bG9ncmVhZGVyLT5FbmRSZWNQdHI7CiAJCQl9CiAJCQllbHNlCi0JCQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkJCWVycm1zZygiY291bGQgbm90IGZpbmQgYSB2YWxpZCByZWNv cmQgYWZ0ZXIgJVgvJTA4WCIsCi0JCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKHN0YXJ0X2xzbikp KTsKKwkJCXsKKwkJCQlpZiAoZXJyb3Jtc2cpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJ ZXJybXNnKCJjb3VsZCBub3QgZmluZCBhIHZhbGlkIHJlY29yZCBhZnRlciAlWC8lMDhYOiAlcyIs CisJCQkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhzdGFydF9sc24pLCBlcnJvcm1zZykpOworCQkJ CWVsc2UKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJtc2coImNvdWxkIG5vdCBmaW5k IGEgdmFsaWQgcmVjb3JkIGFmdGVyICVYLyUwOFgiLAorCQkJCQkJCQkgICBMU05fRk9STUFUX0FS R1Moc3RhcnRfbHNuKSkpOworCQkJfQogCQl9CiAKIAkJLyogV2Ugc2hvdWxkbid0IGdvIGJhY2t3 YXJkLiAqLwpAQCAtMTAxMCw3ICsxMDE4LDYgQEAgU3VtbWFyaXplV0FMKFRpbWVMaW5lSUQgdGxp LCBYTG9nUmVjUHRyIHN0YXJ0X2xzbiwgYm9vbCBleGFjdCwKIAl3aGlsZSAoMSkKIAl7CiAJCWlu dAkJCWJsb2NrX2lkOwotCQljaGFyCSAgICplcnJvcm1zZzsKIAkJWExvZ1JlY29yZCAqcmVjb3Jk OwogCQl1aW50OAkJcm1pZDsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dh bGR1bXAuYyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5kZXggZjgyNTA3ZWY2 OTYuLjYzMGQ5ODU5ODgyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVt cC5jCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTEzODQsMTEgKzEz ODQsMTcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXBnX2ZhdGFsKCJvdXQgb2Yg bWVtb3J5IHdoaWxlIGFsbG9jYXRpbmcgYSBXQUwgcmVhZGluZyBwcm9jZXNzb3IiKTsKIAogCS8q IGZpcnN0IGZpbmQgYSB2YWxpZCByZWNwdHIgdG8gc3RhcnQgZnJvbSAqLwotCWZpcnN0X3JlY29y ZCA9IFhMb2dGaW5kTmV4dFJlY29yZCh4bG9ncmVhZGVyX3N0YXRlLCBwcml2YXRlLnN0YXJ0cHRy KTsKKwlmaXJzdF9yZWNvcmQgPSBYTG9nRmluZE5leHRSZWNvcmQoeGxvZ3JlYWRlcl9zdGF0ZSwg cHJpdmF0ZS5zdGFydHB0ciwgJmVycm9ybXNnKTsKIAogCWlmICghWExvZ1JlY1B0cklzVmFsaWQo Zmlyc3RfcmVjb3JkKSkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBmaW5kIGEgdmFsaWQgcmVjb3Jk IGFmdGVyICVYLyUwOFgiLAotCQkJCSBMU05fRk9STUFUX0FSR1MocHJpdmF0ZS5zdGFydHB0cikp OworCXsKKwkJaWYgKGVycm9ybXNnKQorCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBmaW5kIGEgdmFs aWQgcmVjb3JkIGFmdGVyICVYLyUwOFg6ICVzIiwKKwkJCQkJIExTTl9GT1JNQVRfQVJHUyhwcml2 YXRlLnN0YXJ0cHRyKSwgZXJyb3Jtc2cpOworCQllbHNlCisJCQlwZ19mYXRhbCgiY291bGQgbm90 IGZpbmQgYSB2YWxpZCByZWNvcmQgYWZ0ZXIgJVgvJTA4WCIsCisJCQkJCSBMU05fRk9STUFUX0FS R1MocHJpdmF0ZS5zdGFydHB0cikpOworCX0KIAogCS8qCiAJICogRGlzcGxheSBhIG1lc3NhZ2Ug dGhhdCB3ZSdyZSBza2lwcGluZyBkYXRhIGlmIGBmcm9tYCB3YXNuJ3QgYSBwb2ludGVyCmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwgYi9zcmMvYmluL3BnX3dh bGR1bXAvdC8wMDFfYmFzaWMucGwKaW5kZXggMTFkZjdlMDkyYmYuLjdmZjllOTE4ZmYyIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKKysrIGIvc3JjL2Jpbi9w Z193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCkBAIC0xMCw2ICsxMCw3IEBAIHVzZSBUZXN0OjpNb3Jl OwogdXNlIExpc3Q6OlV0aWwgcXcoc2h1ZmZsZSk7CiAKIG15ICR0YXIgPSAkRU5We1RBUn07Cit1 c2UgRmlsZTo6Q29weTsKIAogcHJvZ3JhbV9oZWxwX29rKCdwZ193YWxkdW1wJyk7CiBwcm9ncmFt X3ZlcnNpb25fb2soJ3BnX3dhbGR1bXAnKTsKQEAgLTI0Niw2ICsyNDcsMzQgQEAgY29tbWFuZF9s aWtlKAogCXFyL14kLywKIAknbm8gb3V0cHV0IHdpdGggLS1xdWlldCBvcHRpb24nKTsKIAorIyBX cm9uZyBXQUwgdmVyc2lvbi4gV2UgY29weSBhbiBleGlzdGluZyB3YWwgZmlsZSBhbmQgc2V0IHRo ZQorIyBwYWdlJ3MgbWFnaWMgdmFsdWUgdG8gMDAwMC4KK3sKKwkjIFRoZSBicm9rZW4gV0FMIGZp bGUgaXMgY3JlYXRlZCBieSBjb3B5aW5nIGEgdmFsaWQgV0FMIGZpbGUgYW5kCisJIyBvdmVyd3Jp dGluZyBpdHMgbWFnaWMgbnVtYmVyIHdpdGggMDAwMC4KKwlteSAkYnJva2VuX3dhbF9kaXIgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcl9zaG9ydCgpOworCW15ICRicm9rZW5fd2Fs ID0gIiRicm9rZW5fd2FsX2Rpci8kc3RhcnRfd2FsZmlsZSI7CisJY29weSgkbm9kZS0+ZGF0YV9k aXIgLiAnL3BnX3dhbC8nIC4gJHN0YXJ0X3dhbGZpbGUsICRicm9rZW5fd2FsKQorCQl8fCBkaWUg ImNvcHlpbmcgJHN0YXJ0X3dhbGZpbGUgJCEiOworCisJbXkgJGZoOworCW9wZW4oJGZoLCAnKzwn LCAkYnJva2VuX3dhbCkKKwkgIG9yIEJBSUxfT1VUKCJvcGVuIGZhaWxlZDogJCEiKTsKKwliaW5t b2RlICRmaDsKKwlzeXNzZWVrKCRmaCwgMCwgMCkKKwkJb3IgQkFJTF9PVVQoInN5c3NlZWsgZmFp bGVkOiAkISIpOworCXN5c3dyaXRlKCRmaCwgcGFjaygiUyIsIDApKQorCQlvciBCQUlMX09VVCgi c3lzd3JpdGUgZmFpbGVkOiAkISIpOworCWNsb3NlKCRmaCkKKwkgIG9yIEJBSUxfT1VUKCJjbG9z ZSBmYWlsZWQ6ICQhIik7CisKKwljb21tYW5kX2ZhaWxzX2xpa2UoCisJCVsgJ3BnX3dhbGR1bXAn LCAkYnJva2VuX3dhbCBdLAorCQkJcXIvaW52YWxpZCBtYWdpYyBudW1iZXIgMDAwMC9pLAorCQkJ J2RldGFpbGVkIGVycm9yIG1lc3NhZ2Ugc2hvd24gZm9yIGludmFsaWQgV0FMIHBhZ2UgbWFnaWMn CisJKTsKK30KKwogIyBUZXN0IGZvcjogRGlzcGxheSBhIG1lc3NhZ2UgdGhhdCB3ZSdyZSBza2lw cGluZyBkYXRhIGlmIGBmcm9tYAogIyB3YXNuJ3QgYSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiBh IHJlY29yZC4KIHN1YiB0ZXN0X3BnX3dhbGR1bXBfc2tpcF9ieXRlcwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3hsb2dyZWFkZXIuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVh ZGVyLmgKaW5kZXggODBmMWE1NDhlMDguLmMyYTQ4YmZlODA5IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3MveGxvZ3JlYWRlci5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVh ZGVyLmgKQEAgLTM0Miw3ICszNDIsOCBAQCBleHRlcm4gdm9pZCBYTG9nUmVhZGVyU2V0RGVjb2Rl QnVmZmVyKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsCiAKIC8qIFBvc2l0aW9uIHRoZSBYTG9nUmVh ZGVyIHRvIGdpdmVuIHJlY29yZCAqLwogZXh0ZXJuIHZvaWQgWExvZ0JlZ2luUmVhZChYTG9nUmVh ZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIFJlY1B0cik7Ci1leHRlcm4gWExvZ1JlY1B0ciBY TG9nRmluZE5leHRSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciBSZWNQ dHIpOworZXh0ZXJuIFhMb2dSZWNQdHIgWExvZ0ZpbmROZXh0UmVjb3JkKFhMb2dSZWFkZXJTdGF0 ZSAqc3RhdGUsIFhMb2dSZWNQdHIgUmVjUHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNoYXIgKiplcnJvcm1zZyk7CiAKIC8qIFJldHVybiB2YWx1ZXMgZnJvbSBYTG9n UGFnZVJlYWRDQi4gKi8KIHR5cGVkZWYgZW51bSBYTG9nUGFnZVJlYWRSZXN1bHQKLS0gCjIuNTMu MAoK --000000000000ff9cba064daca20d--