]> granicus.if.org Git - postgresql/commitdiff
Add additional safety check against invalid backup label file
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 14 Mar 2012 20:41:50 +0000 (22:41 +0200)
committerPeter Eisentraut <peter_e@gmx.net>
Wed, 14 Mar 2012 20:41:50 +0000 (22:41 +0200)
It was already checking for invalid data after "BACKUP FROM", but
would possibly crash if "BACKUP FROM" was missing altogether.

found by Coverity

src/backend/access/transam/xlog.c

index 18fc23286aa30fa2534b6d0fa56365a6f790195e..ff7f521a1b1bb33b010221c0deef1a7ec8591266 100644 (file)
@@ -9481,7 +9481,7 @@ do_pg_stop_backup(char *labelfile, bool waitforarchive)
         * during the backup.
         */
        ptr = strstr(remaining, "BACKUP FROM:");
-       if (sscanf(ptr, "BACKUP FROM: %19s\n", backupfrom) != 1)
+       if (!ptr || sscanf(ptr, "BACKUP FROM: %19s\n", backupfrom) != 1)
                ereport(ERROR,
                                (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
                                 errmsg("invalid data in file \"%s\"", BACKUP_LABEL_FILE)));