Fix unchecked return value from strdup
authorDaniel Gustafsson <dgustafsson@postgresql.org>
Wed, 20 Dec 2023 21:37:28 +0000 (22:37 +0100)
committerDaniel Gustafsson <dgustafsson@postgresql.org>
Wed, 20 Dec 2023 21:37:28 +0000 (22:37 +0100)
The pg_dump compression was using strdup() instead of pg_strdup()
and failed to check the returned pointer for out-of-memory before
dereferencing it. Fix by using pg_strdup() instead which probably
was the intention here in the original patch.

Backpatch to v16 where pg_dump compression was introduced.

Reviewed-by: Tristan Partin <tristan@neon.tech>
Reviewed-by: Nathan Bossart <nathandbossart@gmail.com>
Discussion: https://postgr.es/m/CC661D60-6F4C-474D-B9CF-E789ACA3CEFC@yesql.se
Backpatch-through: 16

src/bin/pg_dump/compress_io.c

index 4fee6e24348cc53183e354d8cdeb40bfc97557aa..efedc53a173a5a4545f04662f934150cb6fd8ee3 100644 (file)
@@ -249,7 +249,7 @@ InitDiscoverCompressFileHandle(const char *path, const char *mode)
 
    Assert(strcmp(mode, PG_BINARY_R) == 0);
 
-   fname = strdup(path);
+   fname = pg_strdup(path);
 
    if (hasSuffix(fname, ".gz"))
        compression_spec.algorithm = PG_COMPRESSION_GZIP;