diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2019-04-17 17:30:29 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2019-04-17 17:30:29 -0400 |
commit | 1a75c1d0c5d967ea2adcd7129092687cded4e7bf (patch) | |
tree | ee806987a812678bd66af3309f4b40358ea089d1 | |
parent | 8cde7f49483d7e21569f61108fc80a8fe9e83e56 (diff) | |
download | postgresql-1a75c1d0c5d967ea2adcd7129092687cded4e7bf.tar.gz postgresql-1a75c1d0c5d967ea2adcd7129092687cded4e7bf.zip |
Fix unportable code in pgbench.
The buildfarm points out that UINT64_FORMAT might not work with sscanf;
it's calibrated for our printf implementation, which might not agree
with the platform-supplied sscanf. Fall back to just accepting an
unsigned long, which is already more than the documentation promises.
Oversight in e6c3ba7fb; back-patch to v11, as that was.
-rw-r--r-- | src/bin/pgbench/pgbench.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c index e0ac131a0e2..a03ab281a5f 100644 --- a/src/bin/pgbench/pgbench.c +++ b/src/bin/pgbench/pgbench.c @@ -5019,16 +5019,19 @@ set_random_seed(const char *seed) } else { - /* parse seed unsigned int value */ + /* parse unsigned-int seed value */ + unsigned long ulseed; char garbage; - if (sscanf(seed, UINT64_FORMAT "%c", &iseed, &garbage) != 1) + /* Don't try to use UINT64_FORMAT here; it might not work for sscanf */ + if (sscanf(seed, "%lu%c", &ulseed, &garbage) != 1) { fprintf(stderr, "unrecognized random seed option \"%s\": expecting an unsigned integer, \"time\" or \"rand\"\n", seed); return false; } + iseed = (uint64) ulseed; } if (seed != NULL) |