Skip to content

Commit cf2c7a7

Browse files
committed
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.
1 parent 3a06a79 commit cf2c7a7

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

src/test/modules/libpq_pipeline/libpq_pipeline.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626

2727

2828
static void exit_nicely(PGconn *conn);
29+
static void pg_attribute_noreturn() pg_fatal_impl(int line, const char *fmt,...)
30+
pg_attribute_printf(2, 3);
2931
static bool process_result(PGconn *conn, PGresult *res, int results,
3032
int numsent);
3133

@@ -914,7 +916,7 @@ test_prepared(PGconn *conn)
914916
if (PQresultStatus(res) != PGRES_COMMAND_OK)
915917
pg_fatal("expected COMMAND_OK, got %s", PQresStatus(PQresultStatus(res)));
916918
if (PQnfields(res) != lengthof(expected_oids))
917-
pg_fatal("expected %d columns, got %d",
919+
pg_fatal("expected %zd columns, got %d",
918920
lengthof(expected_oids), PQnfields(res));
919921
for (int i = 0; i < PQnfields(res); i++)
920922
{

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy