From 3fe0a04cc50648061f5ce1f510d9715cfb2b1df7 Mon Sep 17 00:00:00 2001 From: Doug MacEachern Date: Thu, 10 May 2007 13:49:03 +0000 Subject: [PATCH] Fix integer overflow in sigar_uptime_string --- src/sigar.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/sigar.c b/src/sigar.c index 621fb719..ac8081a8 100644 --- a/src/sigar.c +++ b/src/sigar.c @@ -279,17 +279,18 @@ SIGAR_DECLARE(int) sigar_uptime_string(sigar_t *sigar, int buflen) { char *ptr = buffer; + int time = (int)uptime->uptime; int minutes, hours, days, offset = 0; /* XXX: get rid of sprintf and/or check for overflow */ - days = uptime->uptime / (60*60*24); + days = time / (60*60*24); if (days) { offset += sprintf(ptr + offset, "%d day%s, ", days, (days > 1) ? "s" : ""); } - minutes = (int)uptime->uptime / 60; + minutes = time / 60; hours = minutes / 60; hours = hours % 24; minutes = minutes % 60;