From a914a0414232e30943f7b2ffd997d74bd018a7b1 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Thu, 18 Feb 2016 20:12:38 -0500 Subject: [PATCH] pg_dump: Fix inconsistent sscanf() conversions It was using %u to read a string that was earlier produced by snprintf with %d into a signed integer variable. This seems to work in practice but is incorrect. found by cppcheck --- src/bin/pg_dump/pg_backup_custom.c | 2 +- src/bin/pg_dump/pg_backup_directory.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bin/pg_dump/pg_backup_custom.c b/src/bin/pg_dump/pg_backup_custom.c index be6dbca056..66329dc90c 100644 --- a/src/bin/pg_dump/pg_backup_custom.c +++ b/src/bin/pg_dump/pg_backup_custom.c @@ -871,7 +871,7 @@ _MasterEndParallelItem(ArchiveHandle *AH, TocEntry *te, const char *str, T_Actio /* no parallel dump in the custom archive */ Assert(act == ACT_RESTORE); - sscanf(str, "%u %u %u%n", &dumpId, &status, &n_errors, &nBytes); + sscanf(str, "%d %d %d%n", &dumpId, &status, &n_errors, &nBytes); Assert(nBytes == strlen(str)); Assert(dumpId == te->dumpId); diff --git a/src/bin/pg_dump/pg_backup_directory.c b/src/bin/pg_dump/pg_backup_directory.c index 727a7fe06f..1d7b0cc66a 100644 --- a/src/bin/pg_dump/pg_backup_directory.c +++ b/src/bin/pg_dump/pg_backup_directory.c @@ -859,14 +859,14 @@ _MasterEndParallelItem(ArchiveHandle *AH, TocEntry *te, const char *str, T_Actio if (act == ACT_DUMP) { - sscanf(str, "%u%n", &dumpId, &nBytes); + sscanf(str, "%d%n", &dumpId, &nBytes); Assert(dumpId == te->dumpId); Assert(nBytes == strlen(str)); } else if (act == ACT_RESTORE) { - sscanf(str, "%u %u %u%n", &dumpId, &status, &n_errors, &nBytes); + sscanf(str, "%d %d %d%n", &dumpId, &status, &n_errors, &nBytes); Assert(dumpId == te->dumpId); Assert(nBytes == strlen(str)); -- 2.40.0