aboutsummaryrefslogtreecommitdiff
path: root/src/bin/pg_rewind/libpq_source.c
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2024-08-10 08:12:44 +0200
committerPeter Eisentraut <peter@eisentraut.org>2024-08-10 08:22:31 +0200
commitf5a1311fccd2ed24a9fb42aa47a17d1df7126039 (patch)
tree9bc268b94cdcbd9ffb882057117a8abb136f68ea /src/bin/pg_rewind/libpq_source.c
parent7adec2d5fc29036a6ce78c4f4e95f85466cb5d9a (diff)
downloadpostgresql-f5a1311fccd2ed24a9fb42aa47a17d1df7126039.tar.gz
postgresql-f5a1311fccd2ed24a9fb42aa47a17d1df7126039.zip
Fix inappropriate uses of atol()
Some code using atol() would not work correctly if sizeof(long)==4: - src/bin/pg_basebackup/pg_basebackup.c: Would miscount size of a tablespace over 2 TB. - src/bin/pg_basebackup/streamutil.c: Would truncate a timeline ID beyond INT32_MAX. - src/bin/pg_rewind/libpq_source.c: Would miscount size of files larger than 2 GB (but this currently cannot happen). Replace these with atoll(). In one case, the use of atol() did not result in incorrect behavior but seems inconsistent with related code: - src/interfaces/ecpg/ecpglib/execute.c: Gratuitous, since it processes a value from pg_type.typlen, which is int16. Replace this with atoi(). Reviewed-by: Heikki Linnakangas <hlinnaka@iki.fi> Discussion: https://www.postgresql.org/message-id/flat/a52738ad-06bc-4d45-b59f-b38a8a89de49%40eisentraut.org
Diffstat (limited to 'src/bin/pg_rewind/libpq_source.c')
-rw-r--r--src/bin/pg_rewind/libpq_source.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/bin/pg_rewind/libpq_source.c b/src/bin/pg_rewind/libpq_source.c
index 9378266d28e..0239fb47644 100644
--- a/src/bin/pg_rewind/libpq_source.c
+++ b/src/bin/pg_rewind/libpq_source.c
@@ -294,7 +294,7 @@ libpq_traverse_files(rewind_source *source, process_file_callback_t callback)
}
path = PQgetvalue(res, i, 0);
- filesize = atol(PQgetvalue(res, i, 1));
+ filesize = atoll(PQgetvalue(res, i, 1));
isdir = (strcmp(PQgetvalue(res, i, 2), "t") == 0);
link_target = PQgetvalue(res, i, 3);