From: Zbigniew Jędrzejewski-Szmek Date: Fri, 19 May 2017 18:37:48 +0000 (-0400) Subject: test-parse-util: verify that ato[ui] actually rejects trailing garbage X-Git-Tag: chiark/234.4-1+devuan1.1+iwj1~120 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=3ce9747fbed0ffcdff4e907feea01f5269e5d103;p=elogind.git test-parse-util: verify that ato[ui] actually rejects trailing garbage --- diff --git a/src/test/test-parse-util.c b/src/test/test-parse-util.c index 83f16da27..0175f3c19 100644 --- a/src/test/test-parse-util.c +++ b/src/test/test-parse-util.c @@ -397,6 +397,9 @@ static void test_safe_atou16(void) { r = safe_atou16("junk", &l); assert_se(r == -EINVAL); + + r = safe_atou16("123x", &l); + assert_se(r == -EINVAL); } static void test_safe_atoi16(void) { @@ -427,6 +430,70 @@ static void test_safe_atoi16(void) { r = safe_atoi16("junk", &l); assert_se(r == -EINVAL); + + r = safe_atoi16("123x", &l); + assert_se(r == -EINVAL); +} + +static void test_safe_atou64(void) { + int r; + uint64_t l; + + r = safe_atou64("12345", &l); + assert_se(r == 0); + assert_se(l == 12345); + + r = safe_atou64(" 12345", &l); + assert_se(r == 0); + assert_se(l == 12345); + + r = safe_atou64("18446744073709551617", &l); + assert_se(r == -ERANGE); + + r = safe_atou64("-1", &l); + assert_se(r == -ERANGE); + + r = safe_atou64(" -1", &l); + assert_se(r == -ERANGE); + + r = safe_atou64("junk", &l); + assert_se(r == -EINVAL); + + r = safe_atou64("123x", &l); + assert_se(r == -EINVAL); +} + +static void test_safe_atoi64(void) { + int r; + int64_t l; + + r = safe_atoi64("-12345", &l); + assert_se(r == 0); + assert_se(l == -12345); + + r = safe_atoi64(" -12345", &l); + assert_se(r == 0); + assert_se(l == -12345); + + r = safe_atoi64("32767", &l); + assert_se(r == 0); + assert_se(l == 32767); + + r = safe_atoi64(" 32767", &l); + assert_se(r == 0); + assert_se(l == 32767); + + r = safe_atoi64("9223372036854775813", &l); + assert_se(r == -ERANGE); + + r = safe_atoi64("-9223372036854775813", &l); + assert_se(r == -ERANGE); + + r = safe_atoi64("junk", &l); + assert_se(r == -EINVAL); + + r = safe_atoi64("123x", &l); + assert_se(r == -EINVAL); } static void test_safe_atod(void) { @@ -557,6 +624,8 @@ int main(int argc, char *argv[]) { test_safe_atolli(); test_safe_atou16(); test_safe_atoi16(); + test_safe_atou64(); + test_safe_atoi64(); test_safe_atod(); test_parse_percent(); test_parse_percent_unbounded();