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 1vU0ZE-00FPX5-0j for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Dec 2025 10:40:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vU0ZB-007g0j-2r for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Dec 2025 10:40:06 +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 1vU0ZB-007g0b-1N for pgsql-hackers@lists.postgresql.org; Fri, 12 Dec 2025 10:40:06 +0000 Received: from mail-yw1-x1132.google.com ([2607:f8b0:4864:20::1132]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vU0ZA-000IV1-04 for pgsql-hackers@postgresql.org; Fri, 12 Dec 2025 10:40:04 +0000 Received: by mail-yw1-x1132.google.com with SMTP id 00721157ae682-78c4d112cd8so10191457b3.2 for ; Fri, 12 Dec 2025 02:40:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datadoghq.com; s=google; t=1765536003; x=1766140803; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=u9Z8AygYOzMv4P2yaHNP8MbfvAzogoPKDAqbb7vPmn4=; b=G3T3q23gN2jucwUJ1vHXxZB0FeVki+3NvNBmR2o3n6ycb09w6C9Gh3eRH05FQ28I1A HdvHVwXzX5tjl5w4F4skqniVm9T+3v8GIXVGdEpqruq75WJvXhtoTelHSbNEP28UejyR E2mgnNA2GmcZuPIlIJBsBGQL/vNATo2Vi7o/k= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765536003; x=1766140803; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=u9Z8AygYOzMv4P2yaHNP8MbfvAzogoPKDAqbb7vPmn4=; b=v7UoWPqUZk4qsJ7b7u6lQUEZqow0GrJtVPx03oCAp8JxWSjoQtiOxC19GPAhs6zk1/ HSt34YFCdzHkmwAarvTJ45yQ0ZO3hHs7oNMaYp2x+zeY7giaSuzd71ngJWV2eKgY2FZ7 9hddnT2Pkn+4D2jPh7PEgGyqhK5Dm8ZL1O0bP6w2fTtdPwXKxI7sCsD4HYCmV4rRlymr 6hONHLtFCJHEmdwgb0dMiBsxaeQkdLd6OeAMU1uGORNLPJYiuwPO0I4+j6OrxlwJGT2w ol4tiJJoyQDYbhROKuZv7mVdzwzRFdQOE7Eta//QYarrMNLY7MLFz4FgVQSeV7oasMur 4xOw== X-Gm-Message-State: AOJu0Yyc7rrPdQjD1ATAflquy1u7/ANTmGQu0G/HYLnFQaCnz4lF/I0Y H/TtiD7lDTLnzlncAkQNcGhpTtds7nWN/HOMMyOgyn6FPo7BpwPrwcA9uM2qFYerJ/ZWD5Y0WQU ox4qmsaLLdQ+8AXpLg8DHzCzCKQZ1f7ZbeZqg36+CqRUMW6QoU0uNyzqYdA== X-Gm-Gg: AY/fxX60atH8tdXypK2bEVIEY71LOZxt5+ulNWJRm9zBdHkRxvLJIZWSHBHG7FiCdNm eghXrRTiovRuZsh1G+2/Nqj4bUsK7yS9eGWj7qdY8K7wg0I1mHqDRACs27/FroJ07FlQPE4ILTt Ez0S/wqNK/BuA2nkj1G7jhGVOmmcAOcwpMYMqpf8UFjXeuambfNCO3kh0cKlnPmEyDdt8hiG8i2 Djbo1onSs139sul3QF/wiKmxGBkD7oPwb2F5NssfWSVFD2f3FkBFWgDI5WEHmZ0GjQX6Q== X-Google-Smtp-Source: AGHT+IGmwTnb0+ft3gmfOFZeTraDAG10rw+vYH340MlgcmM0LAhzooAlHF403LHTJ5nYRqZSMVvkx1mHqhU9Rs6nbpw= X-Received: by 2002:a05:690c:6001:b0:787:cddb:ec2d with SMTP id 00721157ae682-78e66cded24mr28677797b3.19.1765536002095; Fri, 12 Dec 2025 02:40:02 -0800 (PST) MIME-Version: 1.0 From: Anthonin Bonnefoy Date: Fri, 12 Dec 2025 11:39:50 +0100 X-Gm-Features: AQt7F2q22zLvn-WZpD9-ZkgNRzMHCCQZxMwoyD0tGwy2PE96rqPWyPEtz2mO5bc Message-ID: Subject: Propagate XLogFindNextRecord error to callers To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000003f34730645bee24e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003f34730645bee24e Content-Type: multipart/alternative; boundary="0000000000003f34720645bee24c" --0000000000003f34720645bee24c Content-Type: text/plain; charset="UTF-8" Hi, Currently, XLogFindNextRecord errormsg is ignored and callers will only output a generic 'could not find a valid record' message without details. Additionally, invalid page header won't go through XLogReadRecord, leaving the error in state->errormsg_buf. This patch propagates XLogFindNextRecord's error message to the callers and displays it. In case of an invalid page header, the errormsg is filled with errormsg_buf content. With this patch, pg_waldump will now have the following output when reading a file with an invalid header: pg_waldump: error: could not find a valid record after D80/5C000000: invalid magic number D116 in WAL segment 0000001400000D8000000017, LSN D80/5C000000, offset 0 Regards, Anthonin Bonnefoy --0000000000003f34720645bee24c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Currently, XLogFindNextRecord error= msg is ignored and callers will only output a generic 'could not find a= valid record' message without details.
Additionally, invalid= page header won't go through XLogReadRecord, leaving the error in stat= e->errormsg_buf.

This patch propagates XLogFindNextRecord's e= rror message to the callers and displays it. In case of an invalid page hea= der, the errormsg is filled with errormsg_buf content.

=
With this patch, pg_waldump will now have the following output when re= ading a file with an invalid header:
pg_waldump: error: could not= find a valid record after D80/5C000000: invalid magic number D116 in WAL s= egment 0000001400000D8000000017, LSN D80/5C000000, offset 0=C2=A0

Regards,
Anthonin Bonnefoy
--0000000000003f34720645bee24c-- --0000000000003f34730645bee24e Content-Type: application/octet-stream; name="v1-0001-Propage-errormsg-to-XLogFindNextRecord-caller.patch" Content-Disposition: attachment; filename="v1-0001-Propage-errormsg-to-XLogFindNextRecord-caller.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj2qfhjd0 RnJvbSBmODA3YWQ0ZTlhYWY1ZTY4NjAxZjY1NDgyY2ZjZDMzZWVhZWE1ZTBjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRob25pbiBCb25uZWZveSA8YW50aG9uaW4uYm9ubmVmb3lA ZGF0YWRvZ2hxLmNvbT4KRGF0ZTogRnJpLCAxMiBEZWMgMjAyNSAwOTo1NjowMCArMDEwMApTdWJq ZWN0OiBQcm9wYWdlIGVycm9ybXNnIHRvIFhMb2dGaW5kTmV4dFJlY29yZCBjYWxsZXIKCkN1cnJl bnRseSwgWExvZ0ZpbmROZXh0UmVjb3JkIGVycm9ybXNnIGlzIGlnbm9yZWQgYW5kIGNhbGxlcnMg d2lsbCBvbmx5Cm91dHB1dCBhIGdlbmVyaWMgJ2NvdWxkIG5vdCBmaW5kIGEgdmFsaWQgcmVjb3Jk JyBtZXNzYWdlIHdpdGhvdXQKZGV0YWlscy4KQWRkaXRpb25hbGx5LCBpbnZhbGlkIHBhZ2UgaGVh ZGVyIHdvbid0IGdvIHRocm91Z2ggWExvZ1JlYWRSZWNvcmQsCmxlYXZpbmcgdGhlIGVycm9yIGlu IHN0YXRlLT5lcnJvcm1zZ19idWYuCgpUaGlzIHBhdGNoIHByb3BhZ2F0ZXMgWExvZ0ZpbmROZXh0 UmVjb3JkJ3MgZXJyb3IgbWVzc2FnZSB0byB0aGUgY2FsbGVycwphbmQgZGlzcGxheXMgaXQuIElu IGNhc2Ugb2YgYW4gaW52YWxpZCBwYWdlIGhlYWRlciwgdGhlIGVycm9ybXNnIGlzCmZpbGxlZCB3 aXRoIGVycm9ybXNnX2J1ZiBjb250ZW50LgotLS0KIGNvbnRyaWIvcGdfd2FsaW5zcGVjdC9wZ193 YWxpbnNwZWN0LmMgICB8IDE2ICsrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2dyZWFkZXIuYyB8IDE2ICsrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jICB8IDE3ICsrKysrKysrKysrKy0tLS0tCiBzcmMvYmlu L3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jICAgICAgICAgfCAxMiArKysrKysrKystLS0KIHNyYy9p bmNsdWRlL2FjY2Vzcy94bG9ncmVhZGVyLmggICAgICAgICB8ICAyICstCiA1IGZpbGVzIGNoYW5n ZWQsIDQ3IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcGdfd2FsaW5zcGVjdC9wZ193YWxpbnNwZWN0LmMgYi9jb250cmliL3BnX3dhbGluc3BlY3Qv cGdfd2FsaW5zcGVjdC5jCmluZGV4IDY5NDViYWMxMzA2Li5kYTk5N2U0ZmQ4NiAxMDA2NDQKLS0t IGEvY29udHJpYi9wZ193YWxpbnNwZWN0L3BnX3dhbGluc3BlY3QuYworKysgYi9jb250cmliL3Bn X3dhbGluc3BlY3QvcGdfd2FsaW5zcGVjdC5jCkBAIC05Nyw2ICs5Nyw3IEBAIEluaXRYTG9nUmVh ZGVyU3RhdGUoWExvZ1JlY1B0ciBsc24pCiAJWExvZ1JlYWRlclN0YXRlICp4bG9ncmVhZGVyOwog CVJlYWRMb2NhbFhMb2dQYWdlTm9XYWl0UHJpdmF0ZSAqcHJpdmF0ZV9kYXRhOwogCVhMb2dSZWNQ dHIJZmlyc3RfdmFsaWRfcmVjb3JkOworCWNoYXIJICAgKmVycm9ybXNnOwogCiAJLyoKIAkgKiBS ZWFkaW5nIFdBTCBiZWxvdyB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgZmlyc3Qgc2VnbWVudHMgaXNu J3QgYWxsb3dlZC4KQEAgLTEyNCwxMiArMTI1LDE5IEBAIEluaXRYTG9nUmVhZGVyU3RhdGUoWExv Z1JlY1B0ciBsc24pCiAJCQkJIGVycmRldGFpbCgiRmFpbGVkIHdoaWxlIGFsbG9jYXRpbmcgYSBX QUwgcmVhZGluZyBwcm9jZXNzb3IuIikpKTsKIAogCS8qIGZpcnN0IGZpbmQgYSB2YWxpZCByZWNw dHIgdG8gc3RhcnQgZnJvbSAqLwotCWZpcnN0X3ZhbGlkX3JlY29yZCA9IFhMb2dGaW5kTmV4dFJl Y29yZCh4bG9ncmVhZGVyLCBsc24pOworCWZpcnN0X3ZhbGlkX3JlY29yZCA9IFhMb2dGaW5kTmV4 dFJlY29yZCh4bG9ncmVhZGVyLCBsc24sICZlcnJvcm1zZyk7CiAKIAlpZiAoIVhMb2dSZWNQdHJJ c1ZhbGlkKGZpcnN0X3ZhbGlkX3JlY29yZCkpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJZXJybXNn KCJjb3VsZCBub3QgZmluZCBhIHZhbGlkIHJlY29yZCBhZnRlciAlWC8lMDhYIiwKLQkJCQkJICAg TFNOX0ZPUk1BVF9BUkdTKGxzbikpKTsKKwl7CisJCWlmIChlcnJvcm1zZykKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCWVycm1zZygiY291bGQgbm90IGZpbmQgYSB2YWxpZCByZWNvcmQgYWZ0ZXIg JVgvJTA4WDogJXMiLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGxzbiksIGVycm9ybXNnKSk7 CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycm1zZygiY291bGQgbm90IGZpbmQg YSB2YWxpZCByZWNvcmQgYWZ0ZXIgJVgvJTA4WCIsCisJCQkJCQkgICBMU05fRk9STUFUX0FSR1Mo bHNuKSkpOworCX0KIAogCXJldHVybiB4bG9ncmVhZGVyOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlYWRlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZ3JlYWRlci5jCmluZGV4IDVlNTAwMWIyMTAxLi4yNjljMGZmN2Y0NyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlYWRlci5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWFkZXIuYwpAQCAtMTM5MSwxMiArMTM5MSwxMSBA QCBYTG9nUmVhZGVyUmVzZXRFcnJvcihYTG9nUmVhZGVyU3RhdGUgKnN0YXRlKQogICogWExvZ1Jl YWRSZWNvcmQoKSB3aWxsIHJlYWQgdGhlIG5leHQgdmFsaWQgcmVjb3JkLgogICovCiBYTG9nUmVj UHRyCi1YTG9nRmluZE5leHRSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0 ciBSZWNQdHIpCitYTG9nRmluZE5leHRSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExv Z1JlY1B0ciBSZWNQdHIsIGNoYXIgKiplcnJvcm1zZykKIHsKIAlYTG9nUmVjUHRyCXRtcFJlY1B0 cjsKIAlYTG9nUmVjUHRyCWZvdW5kID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJWExvZ1BhZ2VIZWFk ZXIgaGVhZGVyOwotCWNoYXIJICAgKmVycm9ybXNnOwogCiAJQXNzZXJ0KFhMb2dSZWNQdHJJc1Zh bGlkKFJlY1B0cikpOwogCkBAIC0xNDgxLDcgKzE0ODAsNyBAQCBYTG9nRmluZE5leHRSZWNvcmQo WExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciBSZWNQdHIpCiAJICogb3Igd2UganVz dCBqdW1wZWQgb3ZlciB0aGUgcmVtYWluaW5nIGRhdGEgb2YgYSBjb250aW51YXRpb24uCiAJICov CiAJWExvZ0JlZ2luUmVhZChzdGF0ZSwgdG1wUmVjUHRyKTsKLQl3aGlsZSAoWExvZ1JlYWRSZWNv cmQoc3RhdGUsICZlcnJvcm1zZykgIT0gTlVMTCkKKwl3aGlsZSAoWExvZ1JlYWRSZWNvcmQoc3Rh dGUsIGVycm9ybXNnKSAhPSBOVUxMKQogCXsKIAkJLyogcGFzdCB0aGUgcmVjb3JkIHdlJ3ZlIGZv dW5kLCBicmVhayBvdXQgKi8KIAkJaWYgKFJlY1B0ciA8PSBzdGF0ZS0+UmVhZFJlY1B0cikKQEAg LTE0OTYsNiArMTQ5NSwxNyBAQCBYTG9nRmluZE5leHRSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpz dGF0ZSwgWExvZ1JlY1B0ciBSZWNQdHIpCiBlcnI6CiAJWExvZ1JlYWRlckludmFsUmVhZFN0YXRl KHN0YXRlKTsKIAorCS8qCisJICogd2UgbWF5IGhhdmUgcmVwb3J0ZWQgZXJyb3JzIGR1ZSB0byBp bnZhbGlkIFdBTCBoZWFkZXIsIHByb3BhZ2F0ZSB0aGUKKwkgKiBlcnJvciBtZXNzYWdlIHRvIHRo ZSBjYWxsZXIuCisJICovCisJaWYgKHN0YXRlLT5lcnJvcm1zZ19kZWZlcnJlZCkKKwl7CisJCWlm IChzdGF0ZS0+ZXJyb3Jtc2dfYnVmWzBdICE9ICdcMCcpCisJCQkqZXJyb3Jtc2cgPSBzdGF0ZS0+ ZXJyb3Jtc2dfYnVmOworCQlzdGF0ZS0+ZXJyb3Jtc2dfZGVmZXJyZWQgPSBmYWxzZTsKKwl9CisK IAlyZXR1cm4gSW52YWxpZFhMb2dSZWNQdHI7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93YWxz dW1tYXJpemVyLmMKaW5kZXggZTdlNGQ2NTJmOTcuLjNlNzExNGI2OTQyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYworKysgYi9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwpAQCAtOTE4LDYgKzkxOCw3IEBAIFN1bW1hcml6ZVdB TChUaW1lTGluZUlEIHRsaSwgWExvZ1JlY1B0ciBzdGFydF9sc24sIGJvb2wgZXhhY3QsCiAJV2Fs U3VtbWFyeUlPIGlvOwogCUJsb2NrUmVmVGFibGUgKmJydGFiID0gQ3JlYXRlRW1wdHlCbG9ja1Jl ZlRhYmxlKCk7CiAJYm9vbAkJZmFzdF9mb3J3YXJkID0gdHJ1ZTsKKwljaGFyCSAgICplcnJvcm1z ZzsKIAogCS8qIEluaXRpYWxpemUgcHJpdmF0ZSBkYXRhIGZvciB4bG9ncmVhZGVyLiAqLwogCXBy aXZhdGVfZGF0YSA9IHBhbGxvYzBfb2JqZWN0KFN1bW1hcml6ZXJSZWFkTG9jYWxYTG9nUHJpdmF0 ZSk7CkBAIC05NjksNyArOTcwLDcgQEAgU3VtbWFyaXplV0FMKFRpbWVMaW5lSUQgdGxpLCBYTG9n UmVjUHRyIHN0YXJ0X2xzbiwgYm9vbCBleGFjdCwKIAl9CiAJZWxzZQogCXsKLQkJc3VtbWFyeV9z dGFydF9sc24gPSBYTG9nRmluZE5leHRSZWNvcmQoeGxvZ3JlYWRlciwgc3RhcnRfbHNuKTsKKwkJ c3VtbWFyeV9zdGFydF9sc24gPSBYTG9nRmluZE5leHRSZWNvcmQoeGxvZ3JlYWRlciwgc3RhcnRf bHNuLCAmZXJyb3Jtc2cpOwogCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHN1bW1hcnlfc3RhcnRf bHNuKSkKIAkJewogCQkJLyoKQEAgLTk5OCw5ICs5OTksMTYgQEAgU3VtbWFyaXplV0FMKFRpbWVM aW5lSUQgdGxpLCBYTG9nUmVjUHRyIHN0YXJ0X2xzbiwgYm9vbCBleGFjdCwKIAkJCQlzd2l0Y2hf bHNuID0geGxvZ3JlYWRlci0+RW5kUmVjUHRyOwogCQkJfQogCQkJZWxzZQotCQkJCWVyZXBvcnQo RVJST1IsCi0JCQkJCQllcnJtc2coImNvdWxkIG5vdCBmaW5kIGEgdmFsaWQgcmVjb3JkIGFmdGVy ICVYLyUwOFgiLAotCQkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhzdGFydF9sc24pKSk7CisJCQl7 CisJCQkJaWYgKGVycm9ybXNnKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycm1zZygi Y291bGQgbm90IGZpbmQgYSB2YWxpZCByZWNvcmQgYWZ0ZXIgJVgvJTA4WDogJXMiLAorCQkJCQkJ CQkgICBMU05fRk9STUFUX0FSR1Moc3RhcnRfbHNuKSwgZXJyb3Jtc2cpKTsKKwkJCQllbHNlCisJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJybXNnKCJjb3VsZCBub3QgZmluZCBhIHZhbGlk IHJlY29yZCBhZnRlciAlWC8lMDhYIiwKKwkJCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKHN0YXJ0 X2xzbikpKTsKKwkJCX0KIAkJfQogCiAJCS8qIFdlIHNob3VsZG4ndCBnbyBiYWNrd2FyZC4gKi8K QEAgLTEwMTMsNyArMTAyMSw2IEBAIFN1bW1hcml6ZVdBTChUaW1lTGluZUlEIHRsaSwgWExvZ1Jl Y1B0ciBzdGFydF9sc24sIGJvb2wgZXhhY3QsCiAJd2hpbGUgKDEpCiAJewogCQlpbnQJCQlibG9j a19pZDsKLQkJY2hhcgkgICAqZXJyb3Jtc2c7CiAJCVhMb2dSZWNvcmQgKnJlY29yZDsKIAkJdWlu dDgJCXJtaWQ7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMg Yi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCmluZGV4IDFjMWNjZjU5ZjY1Li5kNzNm NDRlNjM5NCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYworKysg Yi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCkBAIC0xMjExLDExICsxMjExLDE3IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQlwZ19mYXRhbCgib3V0IG9mIG1lbW9yeSB3 aGlsZSBhbGxvY2F0aW5nIGEgV0FMIHJlYWRpbmcgcHJvY2Vzc29yIik7CiAKIAkvKiBmaXJzdCBm aW5kIGEgdmFsaWQgcmVjcHRyIHRvIHN0YXJ0IGZyb20gKi8KLQlmaXJzdF9yZWNvcmQgPSBYTG9n RmluZE5leHRSZWNvcmQoeGxvZ3JlYWRlcl9zdGF0ZSwgcHJpdmF0ZS5zdGFydHB0cik7CisJZmly c3RfcmVjb3JkID0gWExvZ0ZpbmROZXh0UmVjb3JkKHhsb2dyZWFkZXJfc3RhdGUsIHByaXZhdGUu c3RhcnRwdHIsICZlcnJvcm1zZyk7CiAKIAlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKGZpcnN0X3Jl Y29yZCkpCi0JCXBnX2ZhdGFsKCJjb3VsZCBub3QgZmluZCBhIHZhbGlkIHJlY29yZCBhZnRlciAl WC8lMDhYIiwKLQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuc3RhcnRwdHIpKTsKKwl7CisJ CWlmIChlcnJvcm1zZykKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgZmluZCBhIHZhbGlkIHJlY29y ZCBhZnRlciAlWC8lWDogJXMiLAorCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuc3RhcnRw dHIpLCBlcnJvcm1zZyk7CisJCWVsc2UKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgZmluZCBhIHZh bGlkIHJlY29yZCBhZnRlciAlWC8lWCIsCisJCQkJCSBMU05fRk9STUFUX0FSR1MocHJpdmF0ZS5z dGFydHB0cikpOworCX0KIAogCS8qCiAJICogRGlzcGxheSBhIG1lc3NhZ2UgdGhhdCB3ZSdyZSBz a2lwcGluZyBkYXRhIGlmIGBmcm9tYCB3YXNuJ3QgYSBwb2ludGVyCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MveGxvZ3JlYWRlci5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWFk ZXIuaAppbmRleCBkZmFiYmJkNTdkNC4uNGY2OGZlMGU0ZWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy94bG9ncmVhZGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWFk ZXIuaApAQCAtMzQyLDcgKzM0Miw3IEBAIGV4dGVybiB2b2lkIFhMb2dSZWFkZXJTZXREZWNvZGVC dWZmZXIoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwKIAogLyogUG9zaXRpb24gdGhlIFhMb2dSZWFk ZXIgdG8gZ2l2ZW4gcmVjb3JkICovCiBleHRlcm4gdm9pZCBYTG9nQmVnaW5SZWFkKFhMb2dSZWFk ZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgUmVjUHRyKTsKLWV4dGVybiBYTG9nUmVjUHRyIFhM b2dGaW5kTmV4dFJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIFJlY1B0 cik7CitleHRlcm4gWExvZ1JlY1B0ciBYTG9nRmluZE5leHRSZWNvcmQoWExvZ1JlYWRlclN0YXRl ICpzdGF0ZSwgWExvZ1JlY1B0ciBSZWNQdHIsIGNoYXIgKiplcnJvcm1zZyk7CiAKIC8qIFJldHVy biB2YWx1ZXMgZnJvbSBYTG9nUGFnZVJlYWRDQi4gKi8KIHR5cGVkZWYgZW51bSBYTG9nUGFnZVJl YWRSZXN1bHQKLS0gCjIuNTEuMAoK --0000000000003f34730645bee24e--