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 1w87b9-000ENu-1Y for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Apr 2026 02:15:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w87a9-003MA3-0R for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Apr 2026 02:14:53 +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 1w87a8-003M9v-2j for pgsql-hackers@lists.postgresql.org; Thu, 02 Apr 2026 02:14:53 +0000 Received: from mail-dy1-x1336.google.com ([2607:f8b0:4864:20::1336]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w87a6-000000007aJ-1fAB for pgsql-hackers@lists.postgresql.org; Thu, 02 Apr 2026 02:14:52 +0000 Received: by mail-dy1-x1336.google.com with SMTP id 5a478bee46e88-2bd5658b901so9428eec.3 for ; Wed, 01 Apr 2026 19:14:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775096087; cv=none; d=google.com; s=arc-20240605; b=CLngskFfIWUhMp1ZmlwpPwy/zpjHl4PVeKQJgZRM5kYb6OrmUGAUwxZ7QZ/ZLONsRS UIyVlhiHX4NanlAW63qJYm195sdrX+oLLHxs0tbL2wAoPP1W4Krdy0hnokioZiUkHauH sFaKGP/ls0PJ/WqvuXEL9cbkNeKUFgdRV2NJB7tActDFDZVcEfrd1ZIqagMhqAGuQXLp Z6PTDnaSorHDLpAZaJWCZyXbfbFgpxWTL6LugY1asVdA6DbqyX2ZwcL0k8cZiQG50IME Q51gELEhUZ77Onh5gLPLoqDzGVbxVUNQ6jIriM6VYjhyhyZUdo+k2BjiX4RG+33KHvhd gG0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=3Ox884pa+yjw4r7/KqF0cv6FzQ/08TaRRlbT6/QJ4Gc=; fh=35kx0AfPsycZ8cPrMmjgyt+SvnaOYyycTvhYh4vJBZA=; b=ZCevxYNYyWlwMZu4UDMcBre6uqEpjq3XjK0KF9F2vJlu82XWX5Ou0InAu58KR+fH4F RWwUvbSvZ9Z+m365mZzAOouPlt3P347uyC9EvcVocyTMM6Lk83kBWMGOdMpwqOJty6vD CnTtN66hqjcKs2eocKy16TTJbpD68lXYcdRSlW9dRwFgBCsEgIeP4IZT/Le7F2Ep2QO9 LT3nuBbjDjcO029qORQfQId2Vg4VwRVS4EoLTyG9V5zAYAu1bqX3TsooWV5kOPQRxYxU YlbIQqciEm6RYW8EIs3yM3lXX04MtU/MGyJjd3WeTG55AHlLezt54mmesK3Cb0qoKxx9 NPkg==; 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=1775096087; x=1775700887; darn=lists.postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=3Ox884pa+yjw4r7/KqF0cv6FzQ/08TaRRlbT6/QJ4Gc=; b=ZWM7oy1K44L/WhGDCWYwyB7UlY0M5EAXzXuJFtXR3VUNYIUMoKxuIpOxknJMLSl5j9 7D5kXcOcFHlkmnnFKVaSeEDv52Vzp1LEj3soH0zCxXDBhsxNPJZVdzvi/HYTM6AchEKo cn51c/HvLwGLycleO97SM6l/RjcIWejog56dfRIqi4RWLyLb/zC7HwKKiP/qoHrEf9tp i55EMPssS5QPk6wkB3R36nXUQvlTKuYb7kbCrALZQwDzcpabN9f7H3SXgOkqJJTL9kpG UyTLnVfxokNlw6vHRyeuoatk5u5Oh+prKH974huvZ0hBEh8RNSNT2jFYvAfqAAq4c2HA sDww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775096087; x=1775700887; h=content-transfer-encoding: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=3Ox884pa+yjw4r7/KqF0cv6FzQ/08TaRRlbT6/QJ4Gc=; b=DV4fb4CyGoxpDLhGuqaI8LSoK0dwq2iNEJVejDxxK/G5sGt+wEoHQFSBRdb+r6WgF8 cCBXjwIbdaxhd8TovQFOxK5KdcSbMSS2PUPern86yHdC5NRvKX8vRRw6Alzp5cxppR7g MSMXxyexjDdicbxD2PLWzzev+dmQ3Tnzc0khFdoAhrE9bvu7LtIt1jpPBoDpe1Nf3u/i 9azSD2SakD7yZ60lqiL6Qh7j2Nhn8eYiAx3dQ+iWHEFaRQu7c3S0wEyE2cktUaBmScvt nRVGiobGinHsZVSW0yfOjB5lT4T2wcJ4mKF/2LiZUXeci6T3b9wsLq98ibmPT2e0QwkX Wg8g== X-Forwarded-Encrypted: i=1; AJvYcCVKQBL98uOU+3DWiedbNuumnU/4xpSl36sKMQX6mkSwvDOB5jtI+S1F46L5fCj5Wm0wds/3SwUcqSMy3Sn8@lists.postgresql.org X-Gm-Message-State: AOJu0Yz51bu/ya/ifvvbvOp90oYIiW6QAkrwXRi7lGSvGV3sRLeLXmaD YJfgGM0R+uRvmiT3GE8uWMWEkr2xWSDD/HWWucjuYjO772nKbjFSB8sXpthyu4vBoJHWuLZ+7rU Ue+UpiK/drCGdDUKvU74QZ4YETOph7wQ= X-Gm-Gg: ATEYQzxtp8DQqbFblSS2DPFF0WCfZRK4La5bTPkgfV9NqLu0cQ92B13XOFxnjKAgmZ3 IljJ1f+KiUq0G38wUNMDbfXXvyI+SoNVrwltOhwfbJoWjNPfTFUMtqsaEH3c+03WNkj6dCOVSBn nUgRSbDbELbGhcoUMBCOaHfuH+C+793Ey8A7hOYxir4QelfVOnlKuAHaZDElk3yvSUhyP1Pt09W frFHZzY9J+QnI8Mpntg3tmCMYPHYzrRLohoQBdt0JQrZAjMnGH1mMisCAGluCKjqKWeCN1BfFxu 1aYglec1f54grlqw7/y5KIgY/8NqtiChYsUGKtYUvlCinNuEQpM3LF5mKtroS9fE X-Received: by 2002:a05:7300:7fa4:b0:2be:298c:a11 with SMTP id 5a478bee46e88-2c9321b8915mr1403768eec.3.1775096087115; Wed, 01 Apr 2026 19:14:47 -0700 (PDT) MIME-Version: 1.0 References: <2250061.1774104346@sss.pgh.pa.us> <2555285.1774131847@sss.pgh.pa.us> <2609460.1774153487@sss.pgh.pa.us> <2790913.1774200584@sss.pgh.pa.us> <2880042.1774203473@sss.pgh!!.pa.us> <3341199.1774221191@sss.pgh.pa.us> <3424809.1774234940@sss.pgh.pa.us> <1624716.1774736283@sss.pgh.pa.us> <1626907.1774737417@sss.pgh.pa.us> <97a382c0-1f19-4ea0-951f-e37e6abc34a3@vondra.me> <1630755.1774739531@sss.pgh.pa.us> <1873141.1774823011@sss.pgh.pa.us> <3049460.1775067940@sss.pgh.pa.us> <3118179.1775092964@sss.pgh.pa.us> In-Reply-To: <3118179.1775092964@sss.pgh.pa.us> From: Thomas Munro Date: Thu, 2 Apr 2026 15:14:09 +1300 X-Gm-Features: AQROBzCMNI1rJRuTjq-kO24BO5R_Rtcq44Wb3lPQJlOTl9I7Bg3yPMTtL736pmI Message-ID: Subject: Re: pg_waldump: support decoding of WAL inside tarfile To: Tom Lane Cc: Tomas Vondra , Andres Freund , Michael Paquier , Andrew Dunstan , Amul Sul , Zsolt Parragi , Robert Haas , Chao Li , Anthonin Bonnefoy , Fujii Masao , Jakub Wartak , PostgreSQL Hackers Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Thu, Apr 2, 2026 at 2:22=E2=80=AFPM Tom Lane wrote: > Looking again at astreamer_tar.c, I suddenly realized that it doesn't > do any meaningful input validation. So if you feed it junk input, > you get garbage errors that aren't even predictable: Wow. > So I think we need something like the attached, in addition > to what I sent before. This just makes astreamer_tar.c use > the isValidTarHeader function that pg_dump already had. > (I decided to const-ify isValidTarHeader's argument while > moving it to a shared location, which in turn requires > const-ifying tarChecksum.) LGTM. $ echo -n x | dd of=3Dfoo.tar bs=3D1 seek=3D257 count=3D1 conv=3Dnotrunc $ strings foo.tar | grep tar | head -1 xstar $ pg_waldump --path=3Dfoo.tar -s 0/1 -e 0/100 pg_waldump: error: input file does not appear to be a valid tar archive $ echo -n u | dd of=3Dfoo.tar bs=3D1 seek=3D257 count=3D1 conv=3Dnotrunc $ strings foo.tar | grep tar | head -1 ustar $ pg_waldump --path=3Dfoo.tar -s 0/1 -e 0/100 ... other output...