Mercurial > libjeffpc
changeset 669:83493acbd279
int: str2XX should fail with -EINVAL if the input isn't nul-terminated
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Thu, 21 Feb 2019 18:33:10 -0500 |
parents | 81b0f68b1185 |
children | e114cae635b0 |
files | include/jeffpc/int.h tests/test_str2uint.c |
diffstat | 2 files changed, 17 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/include/jeffpc/int.h Thu Feb 21 18:25:21 2019 -0500 +++ b/include/jeffpc/int.h Thu Feb 21 18:33:10 2019 -0500 @@ -51,9 +51,14 @@ if (errno) \ return -errno; \ \ + /* parsed nothing or input is empty */ \ if (endptr == s) \ return -EINVAL; \ \ + /* nul-terminated? */ \ + if (*endptr != '\0') \ + return -EINVAL; \ + \ if (tmp > imax) \ return -ERANGE; \ \
--- a/tests/test_str2uint.c Thu Feb 21 18:25:21 2019 -0500 +++ b/tests/test_str2uint.c Thu Feb 21 18:33:10 2019 -0500 @@ -84,9 +84,8 @@ }, { .in = "0x0", - /* FIXME: base 8 & 10 should return -EINVAL */ - .out[B8] = ENT(0, 0, 0, 0, 0, 0), - .out[B10] = ENT(0, 0, 0, 0, 0, 0), + .out[B8] = ENT(0, 0, 0, -EINVAL, -EINVAL, -EINVAL), + .out[B10] = ENT(0, 0, 0, -EINVAL, -EINVAL, -EINVAL), .out[B16] = ENT(0, 0, 0, 0, 0, 0), }, { @@ -103,9 +102,8 @@ }, { .in = "0x8", - /* FIXME: base 8 & 10 should return -EINVAL */ - .out[B8] = ENT(0, 0, 0, 0, 0, 0), - .out[B10] = ENT(0, 0, 0, 0, 0, 0), + .out[B8] = ENT(0, 0, 0, -EINVAL, -EINVAL, -EINVAL), + .out[B10] = ENT(0, 0, 0, -EINVAL, -EINVAL, -EINVAL), .out[B16] = ENT(8, 8, 8, 0, 0, 0), }, { @@ -122,30 +120,26 @@ }, { .in = "0XA", - /* FIXME: base 8 & 10 should return -EINVAL */ - .out[B8] = ENT(0, 0, 0, 0, 0, 0), - .out[B10] = ENT(0, 0, 0, 0, 0, 0), + .out[B8] = ENT(0, 0, 0, -EINVAL, -EINVAL, -EINVAL), + .out[B10] = ENT(0, 0, 0, -EINVAL, -EINVAL, -EINVAL), .out[B16] = ENT(0xa, 0xa, 0xa, 0, 0, 0), }, { .in = "0Xa", - /* FIXME: base 8 & 10 should return -EINVAL */ - .out[B8] = ENT(0, 0, 0, 0, 0, 0), - .out[B10] = ENT(0, 0, 0, 0, 0, 0), + .out[B8] = ENT(0, 0, 0, -EINVAL, -EINVAL, -EINVAL), + .out[B10] = ENT(0, 0, 0, -EINVAL, -EINVAL, -EINVAL), .out[B16] = ENT(0xa, 0xa, 0xa, 0, 0, 0), }, { .in = "0xA", - /* FIXME: base 8 & 10 should return -EINVAL */ - .out[B8] = ENT(0, 0, 0, 0, 0, 0), - .out[B10] = ENT(0, 0, 0, 0, 0, 0), + .out[B8] = ENT(0, 0, 0, -EINVAL, -EINVAL, -EINVAL), + .out[B10] = ENT(0, 0, 0, -EINVAL, -EINVAL, -EINVAL), .out[B16] = ENT(0xa, 0xa, 0xa, 0, 0, 0), }, { .in = "0xa", - /* FIXME: base 8 & 10 should return -EINVAL */ - .out[B8] = ENT(0, 0, 0, 0, 0, 0), - .out[B10] = ENT(0, 0, 0, 0, 0, 0), + .out[B8] = ENT(0, 0, 0, -EINVAL, -EINVAL, -EINVAL), + .out[B10] = ENT(0, 0, 0, -EINVAL, -EINVAL, -EINVAL), .out[B16] = ENT(0xa, 0xa, 0xa, 0, 0, 0), }, /*