about summary refs log tree commit diff
path: root/lib/util
diff options
context:
space:
mode:
authorgiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2007-02-25 01:57:33 +0000
committergiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2007-02-25 01:57:33 +0000
commit84b03c4a38ade9c100ae40e9d5b3fabfceb59913 (patch)
treeb628e26380d2e5cfd90154b8d384aafed7cc6513 /lib/util
parentdbc66e47d15be07a4de0a944624f1535f5ab23b3 (diff)
downloadnetpbm-mirror-84b03c4a38ade9c100ae40e9d5b3fabfceb59913.tar.gz
netpbm-mirror-84b03c4a38ade9c100ae40e9d5b3fabfceb59913.tar.xz
netpbm-mirror-84b03c4a38ade9c100ae40e9d5b3fabfceb59913.zip
shhopt rejects signed value for OPT_UINT option
git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@237 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'lib/util')
-rw-r--r--lib/util/shhopt.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/util/shhopt.c b/lib/util/shhopt.c
index efb9b794..718186fa 100644
--- a/lib/util/shhopt.c
+++ b/lib/util/shhopt.c
@@ -430,13 +430,17 @@ optExecute(optEntry  const opt, char *arg, int lng)
     case OPT_UINT:
     case OPT_ULONG: {
         unsigned long tmp;
-        char *e;
+        char * tailPtr;
         
         if (arg == NULL)
             optFatal("internal error: optExecute() called with NULL argument "
                      "'%s'", optString(opt, lng));
-        tmp = strtoul(arg, &e, 10);
-        if (*e)
+
+        if (arg[0] == '-' || arg[1] == '+')
+            optFatal("unsigned number '%s' has a sign ('%c')",
+                     arg, arg[0]);
+        tmp = strtoul(arg, &tailPtr, 10);
+        if (*tailPtr)
             optFatal("invalid number `%s'", arg);
         if (errno == ERANGE
             || (opt.type == OPT_UINT && tmp > UINT_MAX))