Added restriction on supported base value

Message ID 1534008468-6381-1-git-send-email-aadit0402@gmail.com
State Superseded
Headers show
Series
  • Added restriction on supported base value
Related show

Commit Message

Aditya Upadhyay Aug. 11, 2018, 5:27 p.m.
From: Your Name <you@example.com>


---
 newlib/libc/stdlib/strtoimax.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

-- 
2.7.4

Comments

Joel Sherrill Aug. 11, 2018, 7:51 p.m. | #1
Your git configuration appears to be incorrectly configured.

On Sat, Aug 11, 2018, 1:28 PM Aditya Upadhyay <aadit0402@gmail.com> wrote:

> From: Your Name <you@example.com>

>

> ---

>  newlib/libc/stdlib/strtoimax.c | 4 +++-

>  1 file changed, 3 insertions(+), 1 deletion(-)

>

> diff --git a/newlib/libc/stdlib/strtoimax.c

> b/newlib/libc/stdlib/strtoimax.c

> index 6901612..1779d3b 100644

> --- a/newlib/libc/stdlib/strtoimax.c

> +++ b/newlib/libc/stdlib/strtoimax.c

> @@ -90,7 +90,8 @@ _strtoimax_l(struct _reent *rptr, const char *

> __restrict nptr,

>         }

>         if (base == 0)

>                 base = c == '0' ? 8 : 10;

> -

> +        if (base < 2 || base > 36)

> +               goto noconv;

>         /*

>          * Compute the cutoff value between legal numbers and illegal

>          * numbers.  That is the largest legal value, divided by the

> @@ -135,6 +136,7 @@ _strtoimax_l(struct _reent *rptr, const char *

> __restrict nptr,

>                 acc = neg ? INTMAX_MIN : INTMAX_MAX;

>                 rptr->_errno = ERANGE;

>         } else if (!any) {

> +noconv:

>                 rptr->_errno = EINVAL;

>         } else if (neg)

>                 acc = -acc;

> --

> 2.7.4

>

>

Patch

diff --git a/newlib/libc/stdlib/strtoimax.c b/newlib/libc/stdlib/strtoimax.c
index 6901612..1779d3b 100644
--- a/newlib/libc/stdlib/strtoimax.c
+++ b/newlib/libc/stdlib/strtoimax.c
@@ -90,7 +90,8 @@  _strtoimax_l(struct _reent *rptr, const char * __restrict nptr,
 	}
 	if (base == 0)
 		base = c == '0' ? 8 : 10;
-
+        if (base < 2 || base > 36)
+		goto noconv;
 	/*
 	 * Compute the cutoff value between legal numbers and illegal
 	 * numbers.  That is the largest legal value, divided by the
@@ -135,6 +136,7 @@  _strtoimax_l(struct _reent *rptr, const char * __restrict nptr,
 		acc = neg ? INTMAX_MIN : INTMAX_MAX;
 		rptr->_errno = ERANGE;
 	} else if (!any) {
+noconv: 
 		rptr->_errno = EINVAL;
 	} else if (neg)
 		acc = -acc;