瀏覽代碼

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.
Rich Felker 8 年之前
父節點
當前提交
809ff8cf90
共有 1 個文件被更改,包括 1 次插入1 次删除
  1. 1 1
      src/internal/intscan.c

+ 1 - 1
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;
 	}