aboutsummaryrefslogtreecommitdiff
path: root/src/bin/pg_verifybackup/astreamer_verify.c
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2024-10-01 08:31:33 -0400
committerRobert Haas <rhaas@postgresql.org>2024-10-01 08:36:54 -0400
commitfc1b2ce0ee9c9745c5c562b692e021344a3f719a (patch)
tree41c4cb8e62e734e999aa485259e2b4fba9fcfe96 /src/bin/pg_verifybackup/astreamer_verify.c
parent9c2a6c5a5f4b94a93120009e623ae8bd153e6dbb (diff)
downloadpostgresql-fc1b2ce0ee9c9745c5c562b692e021344a3f719a.tar.gz
postgresql-fc1b2ce0ee9c9745c5c562b692e021344a3f719a.zip
Fix some pg_verifybackup issues reported by Coverity.
Commit 8dfd3129027969fdd2d9d294220c867d2efd84aa introduced a few problems. verify_tar_file() forgot to free a buffer; the leak can't add up to anything material, but might as well fix it. precheck_tar_backup_file() intended to return after reporting an error but didn't actually do so. member_copy_control_data() could try to copy zero bytes (and maybe Coverity thinks it can even be trying to copy a negative number of bytes). Per discussion with Tom Lane. Discussion: http://postgr.es/m/1240823.1727629418@sss.pgh.pa.us
Diffstat (limited to 'src/bin/pg_verifybackup/astreamer_verify.c')
-rw-r--r--src/bin/pg_verifybackup/astreamer_verify.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/bin/pg_verifybackup/astreamer_verify.c b/src/bin/pg_verifybackup/astreamer_verify.c
index 57072fdfe04..f7ecdc1f655 100644
--- a/src/bin/pg_verifybackup/astreamer_verify.c
+++ b/src/bin/pg_verifybackup/astreamer_verify.c
@@ -341,14 +341,14 @@ member_copy_control_data(astreamer *streamer, astreamer_member *member,
* be PG_CONTROL_FILE_SIZE, but the part that fits in our buffer is
* shorter, just sizeof(ControlFileData).
*/
- if (mystreamer->control_file_bytes <= sizeof(ControlFileData))
+ if (mystreamer->control_file_bytes < sizeof(ControlFileData))
{
- int remaining;
+ size_t remaining;
remaining = sizeof(ControlFileData) - mystreamer->control_file_bytes;
memcpy(((char *) &mystreamer->control_file)
+ mystreamer->control_file_bytes,
- data, Min(len, remaining));
+ data, Min((size_t) len, remaining));
}
/* Remember how many bytes we saw, even if we didn't buffer them. */