diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2007-02-25 01:57:33 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2007-02-25 01:57:33 +0000 |
commit | 84b03c4a38ade9c100ae40e9d5b3fabfceb59913 (patch) | |
tree | b628e26380d2e5cfd90154b8d384aafed7cc6513 /lib/util | |
parent | dbc66e47d15be07a4de0a944624f1535f5ab23b3 (diff) | |
download | netpbm-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.c | 10 |
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)) |