pg_waldump: Fix error message for WAL files smaller than XLOG_BLCKSZ.
authorAndres Freund
Fri, 25 Feb 2022 18:30:05 +0000 (10:30 -0800)
committerAndres Freund
Fri, 25 Feb 2022 18:32:38 +0000 (10:32 -0800)
When opening a WAL file smaller than XLOG_BLCKSZ (e.g. 0 bytes long) while
determining the wal_segment_size, pg_waldump checked errno, despite errno not
being set by the short read. Resulting in a bogus error message.

Author: Kyotaro Horiguchi 
Discussion: https://postgr.es/m/20220214.181847.775024684568733277[email protected]
Backpatch: 11-, the bug was introducedin fc49e24fa

src/bin/pg_waldump/pg_waldump.c

index 837f9364b8ccaef0facfe7083d1ad1ad6a61f69e..3730156e100e089cb9e71c0df7b5995a29e12e10 100644 (file)
@@ -204,15 +204,12 @@ search_directory(const char *directory, const char *fname)
                                     WalSegSz),
                            fname, WalSegSz);
        }
+       else if (r < 0)
+           fatal_error("could not read file \"%s\": %m",
+                       fname);
        else
-       {
-           if (errno != 0)
-               fatal_error("could not read file \"%s\": %m",
-                           fname);
-           else
-               fatal_error("could not read file \"%s\": read %d of %zu",
-                           fname, r, (Size) XLOG_BLCKSZ);
-       }
+           fatal_error("could not read file \"%s\": read %d of %zu",
+                       fname, r, (Size) XLOG_BLCKSZ);
        close(fd);
        return true;
    }