Re: pg_verifybackup: TAR format backup verification - Mailing list pgsql-hackers
From | Tom Lane |
---|---|
Subject | Re: pg_verifybackup: TAR format backup verification |
Date | |
Msg-id | 1240823.1727629418@sss.pgh.pa.us Whole thread Raw |
In response to | Re: pg_verifybackup: TAR format backup verification (Tom Lane <tgl@sss.pgh.pa.us>) |
List | pgsql-hackers |
Piling on a bit ... Coverity reported the following issues in this new code. I have not analyzed them to see if they're real problems. ________________________________________________________________________________________________________ *** CID 1620458: Resource leaks (RESOURCE_LEAK) /srv/coverity/git/pgsql-git/postgresql/src/bin/pg_verifybackup/pg_verifybackup.c: 1025 in verify_tar_file() 1019 relpath); 1020 1021 /* Close the file. */ 1022 if (close(fd) != 0) 1023 report_backup_error(context, "could not close file \"%s\": %m", 1024 relpath); >>> CID 1620458: Resource leaks (RESOURCE_LEAK) >>> Variable "buffer" going out of scope leaks the storage it points to. 1025 } 1026 1027 /* 1028 * Scan the hash table for entries where the 'matched' flag is not set; report 1029 * that such files are present in the manifest but not on disk. 1030 */ ________________________________________________________________________________________________________ *** CID 1620457: Memory - illegal accesses (OVERRUN) /srv/coverity/git/pgsql-git/postgresql/src/bin/pg_verifybackup/astreamer_verify.c: 349 in member_copy_control_data() 343 */ 344 if (mystreamer->control_file_bytes <= sizeof(ControlFileData)) 345 { 346 int remaining; 347 348 remaining = sizeof(ControlFileData) - mystreamer->control_file_bytes; >>> CID 1620457: Memory - illegal accesses (OVERRUN) >>> Overrunning array of 296 bytes at byte offset 296 by dereferencing pointer "(char *)&mystreamer->control_file + mystreamer->control_file_bytes". 349 memcpy(((char *) &mystreamer->control_file) 350 + mystreamer->control_file_bytes, 351 data, Min(len, remaining)); 352 } 353 354 /* Remember how many bytes we saw, even if we didn't buffer them. */ ________________________________________________________________________________________________________ *** CID 1620456: Null pointer dereferences (FORWARD_NULL) /srv/coverity/git/pgsql-git/postgresql/src/bin/pg_verifybackup/pg_verifybackup.c: 939 in precheck_tar_backup_file() 933 "file \"%s\" is not expected in a tar format backup", 934 relpath); 935 tblspc_oid = (Oid) num; 936 } 937 938 /* Now, check the compression type of the tar */ >>> CID 1620456: Null pointer dereferences (FORWARD_NULL) >>> Passing null pointer "suffix" to "strcmp", which dereferences it. 939 if (strcmp(suffix, ".tar") == 0) 940 compress_algorithm = PG_COMPRESSION_NONE; 941 else if (strcmp(suffix, ".tgz") == 0) 942 compress_algorithm = PG_COMPRESSION_GZIP; 943 else if (strcmp(suffix, ".tar.gz") == 0) 944 compress_algorithm = PG_COMPRESSION_GZIP; regards, tom lane
pgsql-hackers by date: