Blob Blame History Raw
From d41715fc9f0050b18b8e976b92e02e86041ee448 Mon Sep 17 00:00:00 2001
From: Dave Love <dave.love@manchester.ac.uk>
Date: Sun, 14 May 2017 23:14:09 +0100
Subject: [PATCH 16/30] Use strtol, not atoi

---
 src/lib/message.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/lib/message.c b/src/lib/message.c
index 502cb454..f84537c7 100644
--- a/src/lib/message.c
+++ b/src/lib/message.c
@@ -26,6 +26,7 @@
 #include <string.h>
 #include <stdarg.h>
 #include <syslog.h>
+#include <limits.h>
 
 #include "config.h"
 #include "util/util.h"
@@ -37,13 +38,20 @@ extern const char *__progname;
 
 void init(void) {
     char *messagelevel_string = getenv("MESSAGELEVEL"); // Flawfinder: ignore (need to get string, validation in atol())
+    char **endptr = &messagelevel_string;
+    long l;
 
     openlog("Singularity", LOG_CONS | LOG_NDELAY, LOG_LOCAL0);
 
     if ( messagelevel_string == NULL ) {
         messagelevel = 1;
     } else {
-        messagelevel = atoi(messagelevel_string); // Flawfinder: ignore
+      l = strtol(messagelevel_string, endptr, 10);
+        if (LONG_MIN == l || LONG_MAX == l || l < 0 || l > 9
+            || (*messagelevel_string != '\0' && **endptr != '\0')) {
+            singularity_message(VERBOSE, "Bad MESSAGELEVEL: %s\n", messagelevel_string);
+        }
+        messagelevel = l;
         if ( messagelevel < 0 ) {
             messagelevel = 0;
         } else if ( messagelevel > 9 ) {
-- 
2.11.0