diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2022-09-15 17:17:53 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2022-09-15 17:17:53 -0400 |
commit | 4e2a88905d7c05066a3caddc1f6ee76864e24c38 (patch) | |
tree | b78f31078348af8c63ba161bb4b5a556925d334e /src | |
parent | bfa58a679a577bffa58cd122b77483f508ed5933 (diff) | |
download | postgresql-4e2a88905d7c05066a3caddc1f6ee76864e24c38.tar.gz postgresql-4e2a88905d7c05066a3caddc1f6ee76864e24c38.zip |
Detect format-string mistakes in the libpq_pipeline test module.
I happened to notice that libpq_pipeline's private implementation
of pg_fatal lacked any pg_attribute_printf decoration. Indeed,
adding that turned up a mistake! We'd likely never have noticed
because the error exits in this code are unlikely to get hit,
but still, it's a bug.
We're so used to having the compiler check this stuff for us that
a printf-like function without pg_attribute_printf is a land mine.
I wonder if there is a way to detect such omissions.
Back-patch to v14 where this code came in.
Diffstat (limited to 'src')
-rw-r--r-- | src/test/modules/libpq_pipeline/libpq_pipeline.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/test/modules/libpq_pipeline/libpq_pipeline.c b/src/test/modules/libpq_pipeline/libpq_pipeline.c index dc17898a617..04a56ca505c 100644 --- a/src/test/modules/libpq_pipeline/libpq_pipeline.c +++ b/src/test/modules/libpq_pipeline/libpq_pipeline.c @@ -28,6 +28,8 @@ static void exit_nicely(PGconn *conn); +static void pg_attribute_noreturn() pg_fatal_impl(int line, const char *fmt,...) + pg_attribute_printf(2, 3); static bool process_result(PGconn *conn, PGresult *res, int results, int numsent); @@ -916,7 +918,7 @@ test_prepared(PGconn *conn) if (PQresultStatus(res) != PGRES_COMMAND_OK) pg_fatal("expected COMMAND_OK, got %s", PQresStatus(PQresultStatus(res))); if (PQnfields(res) != lengthof(expected_oids)) - pg_fatal("expected %d columns, got %d", + pg_fatal("expected %zd columns, got %d", lengthof(expected_oids), PQnfields(res)); for (int i = 0; i < PQnfields(res); i++) { |