From 761b3d557e28d6bb4df7544fdeffd68b34da9f95 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 14 Apr 2014 14:53:06 +0200 Subject: [PATCH] BUILD/MEDIUM: standard: get rid of sprintf() OpenBSD complains about the use of sprintf in human_time() : src/standard.o(.text+0x1c40): In function `human_time': src/standard.c:2067: warning: sprintf() is often misused, please use snprintf() We can easily get around this by having a pointer to the end of the string and using snprintf() instead. --- src/standard.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/standard.c b/src/standard.c index f4f8b2af1..75a0389b8 100644 --- a/src/standard.c +++ b/src/standard.c @@ -2038,10 +2038,11 @@ int v6tov4(struct in_addr *sin_addr, struct in6_addr *sin6_addr) char *human_time(int t, short hz_div) { static char rv[sizeof("24855d23h")+1]; // longest of "23h59m" and "59m59s" char *p = rv; + char *end = rv + sizeof(rv); int cnt=2; // print two numbers if (unlikely(t < 0 || hz_div <= 0)) { - sprintf(p, "?"); + snprintf(p, end - p, "?"); return rv; } @@ -2049,22 +2050,22 @@ char *human_time(int t, short hz_div) { t /= hz_div; if (t >= DAY) { - p += sprintf(p, "%dd", t / DAY); + p += snprintf(p, end - p, "%dd", t / DAY); cnt--; } if (cnt && t % DAY / HOUR) { - p += sprintf(p, "%dh", t % DAY / HOUR); + p += snprintf(p, end - p, "%dh", t % DAY / HOUR); cnt--; } if (cnt && t % HOUR / MINUTE) { - p += sprintf(p, "%dm", t % HOUR / MINUTE); + p += snprintf(p, end - p, "%dm", t % HOUR / MINUTE); cnt--; } if ((cnt && t % MINUTE) || !t) // also display '0s' - p += sprintf(p, "%ds", t % MINUTE / SEC); + p += snprintf(p, end - p, "%ds", t % MINUTE / SEC); return rv; }