]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
lib/atoi/strtoi/, tests/: strto[iu]_(): 1 is an invalid base
authorAlejandro Colomar <alx@kernel.org>
Sun, 30 Jun 2024 01:00:40 +0000 (03:00 +0200)
committerSerge Hallyn <serge@hallyn.com>
Fri, 12 Jul 2024 03:42:58 +0000 (22:42 -0500)
Signed-off-by: Alejandro Colomar <alx@kernel.org>
lib/atoi/strtoi/strtoi.h
lib/atoi/strtoi/strtou.h
tests/unit/test_atoi_strtoi.c

index a8f6f540819c4d2f30cd5f4f6eea5f3cd91d4578..8fa6b62f11a24c7c7cced7396c5a6ede87f46d38 100644 (file)
@@ -36,7 +36,7 @@ strtoi_(const char *s, char **restrict endp, int base,
        if (status == NULL)
                status = &st;
 
-       if (base != 0 && (base < 0 || base > 36)) {
+       if (base != 0 && (base < 2 || base > 36)) {
                *status = EINVAL;
                return MAX(min, MIN(max, 0));
        }
index 5ce7bd6a11e48dab450b19d7032461e0c556d0e1..7ca6b346f9c7bfbbcab544b7df7da1618ef68f99 100644 (file)
@@ -36,7 +36,7 @@ strtou_(const char *s, char **restrict endp, int base,
        if (status == NULL)
                status = &st;
 
-       if (base != 0 && (base < 0 || base > 36)) {
+       if (base != 0 && (base < 2 || base > 36)) {
                *status = EINVAL;
                return MAX(min, 0);
        }
index 02d62cf3d2ac22ff89be5f828b131dfcf7cc039a..782c8a4c6b596dc00e5e6653b5d63c4ec6288b25 100644 (file)
@@ -46,6 +46,9 @@ test_strtoi(void **state)
        assert_true(strtoi_("42", NULL, -1, 1, 2, &status) == 1);
        assert_true(status == EINVAL);
 
+       assert_true(strtoi_("42", NULL, 1, 1, 2, &status) == 1);
+       assert_true(status == EINVAL);
+
        assert_true(strtoi_("40", &end, 5, INTMAX_MIN, INTMAX_MAX, &status) == 20);
        assert_true(status == 0);
        assert_true(strcmp(end, "") == 0);
@@ -84,6 +87,9 @@ test_strtou(void **state)
        assert_true(strtou_("42", NULL, -1, 1, 2, &status) == 1);
        assert_true(status == EINVAL);
 
+       assert_true(strtou_("42", NULL, 1, 1, 2, &status) == 1);
+       assert_true(status == EINVAL);
+
        assert_true(strtou_("40", &end, 5, 0, UINTMAX_MAX, &status) == 20);
        assert_true(status == 0);
        assert_true(strcmp(end, "") == 0);
@@ -123,6 +129,10 @@ test_strtou_noneg(void **state)
                    == 1);
        assert_true(status == EINVAL);
 
+       assert_true(strtou_noneg("42", NULL, 1, 1, 2, &status)
+                   == 1);
+       assert_true(status == EINVAL);
+
        assert_true(strtou_noneg("40", &end, 5, 0, UINTMAX_MAX, &status)
                    == 20);
        assert_true(status == 0);