aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-12-06 19:52:34 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2016-12-06 19:52:44 -0500
commit81f3c20a65e683ee235a5d3aa6146db84eb75ebf (patch)
tree676103c8bcc11e50fab3feab6aa3abc8f5dfdb26
parentebe5dc9e02a6464713bd48e266eee48351d23062 (diff)
downloadpostgresql-81f3c20a65e683ee235a5d3aa6146db84eb75ebf.tar.gz
postgresql-81f3c20a65e683ee235a5d3aa6146db84eb75ebf.zip
Fix unsafe assumption that struct timeval.tv_sec is a "long".
It typically is a "long", but it seems possible that on some platforms it wouldn't be. In any case, this silences a compiler warning on OpenBSD (cf buildfarm member curculio). While at it, use snprintf not sprintf. This format string couldn't possibly overrun the supplied buffer, but that doesn't seem like a good reason not to use the safer style. Oversight in commit f828654e1. Back-patch to 9.6 where that came in.
-rw-r--r--src/backend/utils/error/elog.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index 224ee7801c1..69649290da2 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -2484,8 +2484,9 @@ log_line_prefix(StringInfo buf, ErrorData *edata)
saved_timeval_set = true;
}
- sprintf(strfbuf, "%ld.%03d", saved_timeval.tv_sec,
- (int) (saved_timeval.tv_usec / 1000));
+ snprintf(strfbuf, sizeof(strfbuf), "%ld.%03d",
+ (long) saved_timeval.tv_sec,
+ (int) (saved_timeval.tv_usec / 1000));
if (padding != 0)
appendStringInfo(buf, "%*s", padding, strfbuf);