summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libc/stdlib/strtoimax.c16
-rw-r--r--src/lib/libc/stdlib/strtol.c7
-rw-r--r--src/lib/libc/stdlib/strtoll.c15
-rw-r--r--src/lib/libc/stdlib/strtoul.c11
-rw-r--r--src/lib/libc/stdlib/strtoull.c15
-rw-r--r--src/lib/libc/stdlib/strtoumax.c16
6 files changed, 60 insertions, 20 deletions
diff --git a/src/lib/libc/stdlib/strtoimax.c b/src/lib/libc/stdlib/strtoimax.c
index 2c77f41650..2fc04e4850 100644
--- a/src/lib/libc/stdlib/strtoimax.c
+++ b/src/lib/libc/stdlib/strtoimax.c
@@ -1,6 +1,5 @@
1/* $OpenBSD: strtoimax.c,v 1.1 2006/01/13 17:58:09 millert Exp $ */ 1/* $OpenBSD: strtoimax.c,v 1.2 2014/09/13 20:10:12 schwarze Exp $ */
2 2/*
3/*-
4 * Copyright (c) 1992 The Regents of the University of California. 3 * Copyright (c) 1992 The Regents of the University of California.
5 * All rights reserved. 4 * All rights reserved.
6 * 5 *
@@ -48,6 +47,17 @@ strtoimax(const char *nptr, char **endptr, int base)
48 int neg, any, cutlim; 47 int neg, any, cutlim;
49 48
50 /* 49 /*
50 * Ensure that base is between 2 and 36 inclusive, or the special
51 * value of 0.
52 */
53 if (base < 0 || base == 1 || base > 36) {
54 if (endptr != 0)
55 *endptr = (char *)nptr;
56 errno = EINVAL;
57 return 0;
58 }
59
60 /*
51 * Skip white space and pick up leading +/- sign if any. 61 * Skip white space and pick up leading +/- sign if any.
52 * If base is 0, allow 0x for hex and 0 for octal, else 62 * If base is 0, allow 0x for hex and 0 for octal, else
53 * assume decimal; if base is already 16, allow 0x. 63 * assume decimal; if base is already 16, allow 0x.
diff --git a/src/lib/libc/stdlib/strtol.c b/src/lib/libc/stdlib/strtol.c
index dc2cf8871c..86cec35086 100644
--- a/src/lib/libc/stdlib/strtol.c
+++ b/src/lib/libc/stdlib/strtol.c
@@ -1,5 +1,5 @@
1/* $OpenBSD: strtol.c,v 1.9 2013/04/17 17:40:35 tedu Exp $ */ 1/* $OpenBSD: strtol.c,v 1.10 2014/09/13 20:10:12 schwarze Exp $ */
2/*- 2/*
3 * Copyright (c) 1990 The Regents of the University of California. 3 * Copyright (c) 1990 The Regents of the University of California.
4 * All rights reserved. 4 * All rights reserved.
5 * 5 *
@@ -33,7 +33,6 @@
33#include <limits.h> 33#include <limits.h>
34#include <stdlib.h> 34#include <stdlib.h>
35 35
36
37/* 36/*
38 * Convert a string to a long integer. 37 * Convert a string to a long integer.
39 * 38 *
@@ -52,7 +51,7 @@ strtol(const char *nptr, char **endptr, int base)
52 * Ensure that base is between 2 and 36 inclusive, or the special 51 * Ensure that base is between 2 and 36 inclusive, or the special
53 * value of 0. 52 * value of 0.
54 */ 53 */
55 if (base != 0 && (base < 2 || base > 36)) { 54 if (base < 0 || base == 1 || base > 36) {
56 if (endptr != 0) 55 if (endptr != 0)
57 *endptr = (char *)nptr; 56 *endptr = (char *)nptr;
58 errno = EINVAL; 57 errno = EINVAL;
diff --git a/src/lib/libc/stdlib/strtoll.c b/src/lib/libc/stdlib/strtoll.c
index 4bcc5565be..cf82c8e1a6 100644
--- a/src/lib/libc/stdlib/strtoll.c
+++ b/src/lib/libc/stdlib/strtoll.c
@@ -1,5 +1,5 @@
1/* $OpenBSD: strtoll.c,v 1.7 2013/03/28 18:09:38 martynas Exp $ */ 1/* $OpenBSD: strtoll.c,v 1.8 2014/09/13 20:10:12 schwarze Exp $ */
2/*- 2/*
3 * Copyright (c) 1992 The Regents of the University of California. 3 * Copyright (c) 1992 The Regents of the University of California.
4 * All rights reserved. 4 * All rights reserved.
5 * 5 *
@@ -50,6 +50,17 @@ strtoll(const char *nptr, char **endptr, int base)
50 int neg, any, cutlim; 50 int neg, any, cutlim;
51 51
52 /* 52 /*
53 * Ensure that base is between 2 and 36 inclusive, or the special
54 * value of 0.
55 */
56 if (base < 0 || base == 1 || base > 36) {
57 if (endptr != 0)
58 *endptr = (char *)nptr;
59 errno = EINVAL;
60 return 0;
61 }
62
63 /*
53 * Skip white space and pick up leading +/- sign if any. 64 * Skip white space and pick up leading +/- sign if any.
54 * If base is 0, allow 0x for hex and 0 for octal, else 65 * If base is 0, allow 0x for hex and 0 for octal, else
55 * assume decimal; if base is already 16, allow 0x. 66 * assume decimal; if base is already 16, allow 0x.
diff --git a/src/lib/libc/stdlib/strtoul.c b/src/lib/libc/stdlib/strtoul.c
index a236365d2f..2aa41b76e4 100644
--- a/src/lib/libc/stdlib/strtoul.c
+++ b/src/lib/libc/stdlib/strtoul.c
@@ -1,6 +1,6 @@
1/* $OpenBSD: strtoul.c,v 1.8 2013/04/17 17:40:35 tedu Exp $ */ 1/* $OpenBSD: strtoul.c,v 1.9 2014/09/13 20:10:12 schwarze Exp $ */
2/* 2/*
3 * Copyright (c) 1990 Regents of the University of California. 3 * Copyright (c) 1990 The Regents of the University of California.
4 * All rights reserved. 4 * All rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
@@ -50,6 +50,13 @@ strtoul(const char *nptr, char **endptr, int base)
50 /* 50 /*
51 * See strtol for comments as to the logic used. 51 * See strtol for comments as to the logic used.
52 */ 52 */
53 if (base < 0 || base == 1 || base > 36) {
54 if (endptr != 0)
55 *endptr = (char *)nptr;
56 errno = EINVAL;
57 return 0;
58 }
59
53 s = nptr; 60 s = nptr;
54 do { 61 do {
55 c = (unsigned char) *s++; 62 c = (unsigned char) *s++;
diff --git a/src/lib/libc/stdlib/strtoull.c b/src/lib/libc/stdlib/strtoull.c
index 28f613a087..846417630f 100644
--- a/src/lib/libc/stdlib/strtoull.c
+++ b/src/lib/libc/stdlib/strtoull.c
@@ -1,5 +1,5 @@
1/* $OpenBSD: strtoull.c,v 1.6 2013/03/28 18:09:38 martynas Exp $ */ 1/* $OpenBSD: strtoull.c,v 1.7 2014/09/13 20:10:12 schwarze Exp $ */
2/*- 2/*
3 * Copyright (c) 1992 The Regents of the University of California. 3 * Copyright (c) 1992 The Regents of the University of California.
4 * All rights reserved. 4 * All rights reserved.
5 * 5 *
@@ -50,8 +50,15 @@ strtoull(const char *nptr, char **endptr, int base)
50 int neg, any, cutlim; 50 int neg, any, cutlim;
51 51
52 /* 52 /*
53 * See strtoq for comments as to the logic used. 53 * See strtoll for comments as to the logic used.
54 */ 54 */
55 if (base < 0 || base == 1 || base > 36) {
56 if (endptr != 0)
57 *endptr = (char *)nptr;
58 errno = EINVAL;
59 return 0;
60 }
61
55 s = nptr; 62 s = nptr;
56 do { 63 do {
57 c = (unsigned char) *s++; 64 c = (unsigned char) *s++;
@@ -59,7 +66,7 @@ strtoull(const char *nptr, char **endptr, int base)
59 if (c == '-') { 66 if (c == '-') {
60 neg = 1; 67 neg = 1;
61 c = *s++; 68 c = *s++;
62 } else { 69 } else {
63 neg = 0; 70 neg = 0;
64 if (c == '+') 71 if (c == '+')
65 c = *s++; 72 c = *s++;
diff --git a/src/lib/libc/stdlib/strtoumax.c b/src/lib/libc/stdlib/strtoumax.c
index ce6e2c00f1..c73f7e507c 100644
--- a/src/lib/libc/stdlib/strtoumax.c
+++ b/src/lib/libc/stdlib/strtoumax.c
@@ -1,6 +1,5 @@
1/* $OpenBSD: strtoumax.c,v 1.1 2006/01/13 17:58:09 millert Exp $ */ 1/* $OpenBSD: strtoumax.c,v 1.2 2014/09/13 20:10:12 schwarze Exp $ */
2 2/*
3/*-
4 * Copyright (c) 1992 The Regents of the University of California. 3 * Copyright (c) 1992 The Regents of the University of California.
5 * All rights reserved. 4 * All rights reserved.
6 * 5 *
@@ -48,8 +47,15 @@ strtoumax(const char *nptr, char **endptr, int base)
48 int neg, any, cutlim; 47 int neg, any, cutlim;
49 48
50 /* 49 /*
51 * See strtoq for comments as to the logic used. 50 * See strtoimax for comments as to the logic used.
52 */ 51 */
52 if (base < 0 || base == 1 || base > 36) {
53 if (endptr != 0)
54 *endptr = (char *)nptr;
55 errno = EINVAL;
56 return 0;
57 }
58
53 s = nptr; 59 s = nptr;
54 do { 60 do {
55 c = (unsigned char) *s++; 61 c = (unsigned char) *s++;
@@ -57,7 +63,7 @@ strtoumax(const char *nptr, char **endptr, int base)
57 if (c == '-') { 63 if (c == '-') {
58 neg = 1; 64 neg = 1;
59 c = *s++; 65 c = *s++;
60 } else { 66 } else {
61 neg = 0; 67 neg = 0;
62 if (c == '+') 68 if (c == '+')
63 c = *s++; 69 c = *s++;