# HG changeset patch # User Josef 'Jeff' Sipek # Date 1550791990 18000 # Node ID 83493acbd279e379524e7722d2ffbbb80b17935a # Parent 81b0f68b118528ff40479f292c8d1f3f8b57bf8b int: str2XX should fail with -EINVAL if the input isn't nul-terminated Signed-off-by: Josef 'Jeff' Sipek diff -r 81b0f68b1185 -r 83493acbd279 include/jeffpc/int.h --- 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; \ \ diff -r 81b0f68b1185 -r 83493acbd279 tests/test_str2uint.c --- 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), }, /*