]> Kevux Git Server - fll/commitdiff
Bugfix: string to number conversions should handle leading 0's as a valid number
authorKevin Day <thekevinday@gmail.com>
Thu, 14 Nov 2019 03:04:55 +0000 (21:04 -0600)
committerKevin Day <thekevinday@gmail.com>
Thu, 14 Nov 2019 03:04:55 +0000 (21:04 -0600)
level_0/f_conversion/c/conversion.c

index 6cbf5fcbe479ebaf58b43ad91e7080cc03002efe..ed2b7f0b275ed7a61d0dec921ea56035b943e28c 100644 (file)
@@ -776,12 +776,12 @@ extern "C" {
       if (string[i] == 0x30) {
         j = i + 1;
 
-        // immediate next value must be either '0', 'x', 'X', 'd', 'D', 'o', 'O', 'b', or 'B'.
+        // Immediate next value must be either a number, 'x', 'X', 'd', 'D', 'o', 'O', 'b', or 'B'.
         if (j > location.stop) {
           *number = 0;
           return f_none;
         }
-        else if (string[j] == 0x30) {
+        else if (string[j] > 0x29 || string[j] < 0x3a) {
           mode = 10;
         }
         else if (string[j] == 0x78 || string[j] == 0x58) {
@@ -925,12 +925,12 @@ extern "C" {
       if (string[i] == 0x30) {
         j = i + 1;
 
-        // immediate next value must be either '0', 'x', 'X', 'd', 'D', 'o', 'O', 'b', or 'B'.
+        // Immediate next value must be either a number, 'x', 'X', 'd', 'D', 'o', 'O', 'b', or 'B'.
         if (j > location.stop) {
           *number = 0;
           return f_none;
         }
-        else if (string[j] == 0x30) {
+        else if (string[j] > 0x29 || string[j] < 0x3a) {
           mode = 10;
         }
         else if (string[j] == 0x78 || string[j] == 0x58) {