]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
strparse: make Curl_str_number() return error for no digits
authorDaniel Stenberg <daniel@haxx.se>
Fri, 14 Feb 2025 07:46:26 +0000 (08:46 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 14 Feb 2025 09:38:56 +0000 (10:38 +0100)
Closes #16319

lib/strparse.c
lib/strparse.h

index b43b5415af35d7867c06b4e8df417d002bd4d8d1..c540148c9a30288ac56c1978615b4cfe2b26155c 100644 (file)
@@ -110,7 +110,9 @@ int Curl_str_number(const char **linep, size_t *nump, size_t max)
   size_t num = 0;
   DEBUGASSERT(linep && *linep && nump);
   *nump = 0;
-  while(ISDIGIT(**linep)) {
+  if(!ISDIGIT(**linep))
+    return STRE_NO_NUM;
+  do {
     int n = **linep - '0';
     if(num > ((SIZE_T_MAX - n) / 10))
       return STRE_OVERFLOW;
@@ -118,7 +120,7 @@ int Curl_str_number(const char **linep, size_t *nump, size_t max)
     if(num > max)
       return STRE_BIG; /** too big */
     (*linep)++;
-  }
+  } while(ISDIGIT(**linep));
   *nump = num;
   return STRE_OK;
 }
index dfae898f5b5dcfda9c855c14416ba9334edf4344..77171f59a1f49636704c6532d30d143834160d57 100644 (file)
@@ -33,6 +33,7 @@
 #define STRE_BYTE     5
 #define STRE_NEWLINE  6
 #define STRE_OVERFLOW 7
+#define STRE_NO_NUM   8
 
 struct Curl_str {
   const char *str;