From 5b8c09c1240ca0df3d451bb5cb95d88602efd341 Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date: Tue, 19 Jan 2016 13:00:02 +0100
Subject: [PATCH] string2Int: Barf on negative numbers for unsigned types

---
 src/libutil/util.hh | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/libutil/util.hh b/src/libutil/util.hh
index cf93c6378..a889ef2f1 100644
--- a/src/libutil/util.hh
+++ b/src/libutil/util.hh
@@ -8,7 +8,7 @@
 #include <unistd.h>
 #include <signal.h>
 #include <functional>
-
+#include <limits>
 #include <cstdio>
 
 #ifndef HAVE_STRUCT_DIRENT_D_TYPE
@@ -359,6 +359,8 @@ bool statusOk(int status);
 /* Parse a string into an integer. */
 template<class N> bool string2Int(const string & s, N & n)
 {
+    if (string(s, 0, 1) == "-" && !std::numeric_limits<N>::is_signed)
+        return false;
     std::istringstream str(s);
     str >> n;
     return str && str.get() == EOF;
-- 
GitLab