sgwdynspeed: fix strto* result checking for out-of-range situations
authorFerry Huberts <ferry.huberts@pelagic.nl>
Tue, 21 Oct 2014 11:35:33 +0000 (13:35 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Tue, 21 Oct 2014 11:37:31 +0000 (13:37 +0200)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
lib/sgwdynspeed/src/configuration.c
lib/sgwdynspeed/src/speedFile.c

index 32a0fc6..363aa67 100644 (file)
@@ -39,7 +39,7 @@ static bool readULL(const char * valueName, const char * value, unsigned long lo
        errno = 0;
        valueNew = strtoull(value, &endPtr, 10);
 
-       if (!((endPtr != value) && (*value != '\0') && (*endPtr == '\0'))) {
+       if (!((endPtr != value) && (*value != '\0') && (*endPtr == '\0')) || (errno == ERANGE)) {
                /* invalid conversion */
                sgwDynSpeedError(true, "Configured %s (%s) could not be converted to a number", valueName, value);
                return false;
index ef9a8df..bf3a246 100644 (file)
@@ -76,7 +76,7 @@ static bool readUL(const char * valueName, const char * value, unsigned long * v
        errno = 0;
        valueNew = strtoul(value, &endPtr, 10);
 
-       if (!((endPtr != value) && (*value != '\0') && (*endPtr == '\0'))) {
+       if (!((endPtr != value) && (*value != '\0') && (*endPtr == '\0')) || (errno == ERANGE)) {
                /* invalid conversion */
                sgwDynSpeedError(false, "Value of parameter %s (%s) could not be converted to a number", valueName, value);
                return false;