diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2021-03-31 17:00:30 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2021-03-31 17:00:30 -0400 |
commit | f1be740a991406d7885047beb971e1ff5dbe8b71 (patch) | |
tree | ad5014a0c27149149e033a8fd8c27e431bde569b /src | |
parent | 8998e3cafa23632790787b8cc726998e84067259 (diff) |
Fix portability and safety issues in pqTraceFormatTimestamp.
Remove confusion between time_t and pg_time_t; neither
gettimeofday() nor localtime() deal in the latter.
libpq indeed has no business using <pgtime.h> at all.
Use snprintf not sprintf, to ensure we can't overrun the
supplied buffer. (Unlikely, but let's be safe.)
Per buildfarm.
Diffstat (limited to 'src')
-rw-r--r-- | src/interfaces/libpq/fe-trace.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/src/interfaces/libpq/fe-trace.c b/src/interfaces/libpq/fe-trace.c index 0bfae12a450..5faeee74519 100644 --- a/src/interfaces/libpq/fe-trace.c +++ b/src/interfaces/libpq/fe-trace.c @@ -26,7 +26,6 @@ #include "libpq-fe.h" #include "libpq-int.h" -#include "pgtime.h" #include "port/pg_bswap.h" /* Enable tracing */ @@ -81,16 +80,14 @@ static void pqTraceFormatTimestamp(char *timestr, size_t ts_len) { struct timeval tval; - pg_time_t stamp_time; gettimeofday(&tval, NULL); - stamp_time = (pg_time_t) tval.tv_sec; - strftime(timestr, ts_len, "%Y-%m-%d %H:%M:%S", - localtime(&stamp_time)); + localtime(&tval.tv_sec)); /* append microseconds */ - sprintf(timestr + strlen(timestr), ".%06d", (int) (tval.tv_usec)); + snprintf(timestr + strlen(timestr), ts_len - strlen(timestr), + ".%06u", (unsigned int) (tval.tv_usec)); } /* |