From 8988b02ee1d04fdf07b913454b8d4e7b5e3092e5 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Wed, 9 Mar 2011 10:41:44 -0800 Subject: [PATCH] Fix snprintf with non format snprintf was being called with environment variable. If variable had format string (like %s) then program would crash. --- misc/rtacct.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/misc/rtacct.c b/misc/rtacct.c index a247dfd2..ab8fdbb8 100644 --- a/misc/rtacct.c +++ b/misc/rtacct.c @@ -535,7 +535,7 @@ int main(int argc, char *argv[]) } if (getenv("RTACCT_HISTORY")) - snprintf(hist_name, sizeof(hist_name), getenv("RTACCT_HISTORY")); + snprintf(hist_name, sizeof(hist_name), "%s", getenv("RTACCT_HISTORY")); else sprintf(hist_name, "/tmp/.rtacct.u%d", getuid()); @@ -563,7 +563,10 @@ int main(int argc, char *argv[]) exit(-1); } if (stb.st_size != sizeof(*hist_db)) - write(fd, kern_db, sizeof(*hist_db)); + if (write(fd, kern_db, sizeof(*hist_db)) < 0) { + perror("rtacct: write history file"); + exit(-1); + } hist_db = mmap(NULL, sizeof(*hist_db), PROT_READ|PROT_WRITE,