public inbox for newlib@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Return EINVAL for illegal base in strtol
@ 2019-12-16 21:55 Keith Packard
  2019-12-17  9:09 ` Corinna Vinschen
  0 siblings, 1 reply; 2+ messages in thread
From: Keith Packard @ 2019-12-16 21:55 UTC (permalink / raw)
  To: newlib; +Cc: Keith Packard

Signed-off-by: Keith Packard <keithp@keithp.com>
---
 newlib/libc/stdlib/strtol.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/newlib/libc/stdlib/strtol.c b/newlib/libc/stdlib/strtol.c
index f7572b169..897890fe0 100644
--- a/newlib/libc/stdlib/strtol.c
+++ b/newlib/libc/stdlib/strtol.c
@@ -140,6 +140,11 @@ _strtol_l (struct _reent *rptr, const char *__restrict nptr,
 	register unsigned long cutoff;
 	register int neg = 0, any, cutlim;
 
+	if (base < 0 || base == 1 || base > 36) {
+		errno = EINVAL;
+		return 0;
+	}
+
 	/*
 	 * Skip white space and pick up leading +/- sign if any.
 	 * If base is 0, allow 0x for hex and 0 for octal, else
@@ -193,9 +198,9 @@ _strtol_l (struct _reent *rptr, const char *__restrict nptr,
 			break;
 		if (c >= base)
 			break;
-               if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
+		if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim)) {
 			any = -1;
-		else {
+		} else {
 			any = 1;
 			acc *= base;
 			acc += c;
-- 
2.24.0

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] Return EINVAL for illegal base in strtol
  2019-12-16 21:55 [PATCH] Return EINVAL for illegal base in strtol Keith Packard
@ 2019-12-17  9:09 ` Corinna Vinschen
  0 siblings, 0 replies; 2+ messages in thread
From: Corinna Vinschen @ 2019-12-17  9:09 UTC (permalink / raw)
  To: Keith Packard; +Cc: newlib

[-- Attachment #1: Type: text/plain, Size: 1264 bytes --]

On Dec 16 13:55, Keith Packard wrote:
> Signed-off-by: Keith Packard <keithp@keithp.com>
> ---
>  newlib/libc/stdlib/strtol.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/newlib/libc/stdlib/strtol.c b/newlib/libc/stdlib/strtol.c
> index f7572b169..897890fe0 100644
> --- a/newlib/libc/stdlib/strtol.c
> +++ b/newlib/libc/stdlib/strtol.c
> @@ -140,6 +140,11 @@ _strtol_l (struct _reent *rptr, const char *__restrict nptr,
>  	register unsigned long cutoff;
>  	register int neg = 0, any, cutlim;
>  
> +	if (base < 0 || base == 1 || base > 36) {
> +		errno = EINVAL;
> +		return 0;
> +	}
> +
>  	/*
>  	 * Skip white space and pick up leading +/- sign if any.
>  	 * If base is 0, allow 0x for hex and 0 for octal, else
> @@ -193,9 +198,9 @@ _strtol_l (struct _reent *rptr, const char *__restrict nptr,
>  			break;
>  		if (c >= base)
>  			break;
> -               if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
> +		if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim)) {
>  			any = -1;
> -		else {
> +		} else {
>  			any = 1;
>  			acc *= base;
>  			acc += c;
> -- 
> 2.24.0

Pushed.


Thanks,
Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
Red Hat

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-12-17  9:09 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-16 21:55 [PATCH] Return EINVAL for illegal base in strtol Keith Packard
2019-12-17  9:09 ` Corinna Vinschen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).