aboutsummaryrefslogtreecommitdiffstats
path: root/main/musl/0005-treat-base-1-as-an-error-in-strtol-family-functions.patch
blob: 77c72a68e0c2b50db41b0dc0a6adc5b5295bbe30 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
From 809ff8cf90254921ea38eb6fa1ce326d9008513b Mon Sep 17 00:00:00 2001
From: Rich Felker <dalias@aerifal.cx>
Date: Wed, 4 Jan 2017 19:48:21 -0500
Subject: [PATCH] treat base 1 as an error in strtol-family functions

ISO C and POSIX only specify behavior for base arguments of 0 and
2-36; POSIX mandates an EINVAL error for unsupported bases. it's not
clear that there's a requirement for implementations not to "support"
additional bases as an extension, but "base 1" did not work in any
meaningful way anyway, so it should be considered unsupported and thus
an error.
---
 src/internal/intscan.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/internal/intscan.c b/src/internal/intscan.c
index 65d497ec..a4a5ae86 100644
--- a/src/internal/intscan.c
+++ b/src/internal/intscan.c
@@ -29,7 +29,7 @@ unsigned long long __intscan(FILE *f, unsigned base, int pok, unsigned long long
 	int c, neg=0;
 	unsigned x;
 	unsigned long long y;
-	if (base > 36) {
+	if (base > 36 || base == 1) {
 		errno = EINVAL;
 		return 0;
 	}
-- 
2.11.0