diff options
author | Lennart Poettering <lennart@poettering.net> | 2020-06-01 17:48:41 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2020-06-05 15:56:32 +0200 |
commit | 53c6db99fa4b52f97e19977f21d3133f8ceb3dcd (patch) | |
tree | 45fe4f6422865b32b07ddd10c17d11be35a81d86 | |
parent | fc80cabcf584a8b486bdff5be0c074fec4059cdc (diff) | |
download | systemd-53c6db99fa4b52f97e19977f21d3133f8ceb3dcd.tar.gz |
tests: beef up integer parsing tests
-rw-r--r-- | src/test/test-parse-util.c | 58 | ||||
-rw-r--r-- | src/test/test-user-util.c | 40 |
2 files changed, 98 insertions, 0 deletions
diff --git a/src/test/test-parse-util.c b/src/test/test-parse-util.c index 1627bc747d..3ca5e1e639 100644 --- a/src/test/test-parse-util.c +++ b/src/test/test-parse-util.c @@ -75,14 +75,22 @@ static void test_parse_mode(void) { mode_t m; assert_se(parse_mode("-1", &m) < 0); + assert_se(parse_mode("+1", &m) < 0); assert_se(parse_mode("", &m) < 0); assert_se(parse_mode("888", &m) < 0); assert_se(parse_mode("77777", &m) < 0); assert_se(parse_mode("544", &m) >= 0 && m == 0544); + assert_se(parse_mode("0544", &m) >= 0 && m == 0544); + assert_se(parse_mode("00544", &m) >= 0 && m == 0544); assert_se(parse_mode("777", &m) >= 0 && m == 0777); + assert_se(parse_mode("0777", &m) >= 0 && m == 0777); + assert_se(parse_mode("00777", &m) >= 0 && m == 0777); assert_se(parse_mode("7777", &m) >= 0 && m == 07777); + assert_se(parse_mode("07777", &m) >= 0 && m == 07777); + assert_se(parse_mode("007777", &m) >= 0 && m == 07777); assert_se(parse_mode("0", &m) >= 0 && m == 0); + assert_se(parse_mode(" 1", &m) >= 0 && m == 1); } static void test_parse_size(void) { @@ -358,6 +366,18 @@ static void test_safe_atolli(void) { assert_se(r == 0); assert_se(l == -12345); + r = safe_atolli("0x5", &l); + assert_se(r == 0); + assert_se(l == 5); + + r = safe_atolli("0o6", &l); + assert_se(r == 0); + assert_se(l == 6); + + r = safe_atolli("0B101", &l); + assert_se(r == 0); + assert_se(l == 5); + r = safe_atolli("12345678901234567890", &l); assert_se(r == -ERANGE); @@ -431,6 +451,14 @@ static void test_safe_atoi16(void) { assert_se(r == 0); assert_se(l == 32767); + r = safe_atoi16("0o11", &l); + assert_se(r == 0); + assert_se(l == 9); + + r = safe_atoi16("0B110", &l); + assert_se(r == 0); + assert_se(l == 6); + r = safe_atoi16("36536", &l); assert_se(r == -ERANGE); @@ -475,6 +503,13 @@ static void test_safe_atoux16(void) { r = safe_atoux16(" -1", &l); assert_se(r == -ERANGE); + r = safe_atoux16("0b1", &l); + assert_se(r == 0); + assert_se(l == 177); + + r = safe_atoux16("0o70", &l); + assert_se(r == -EINVAL); + r = safe_atoux16("junk", &l); assert_se(r == -EINVAL); @@ -500,6 +535,14 @@ static void test_safe_atou64(void) { assert_se(r == 0); assert_se(l == 12345); + r = safe_atou64("0o11", &l); + assert_se(r == 0); + assert_se(l == 9); + + r = safe_atou64("0b11", &l); + assert_se(r == 0); + assert_se(l == 3); + r = safe_atou64("18446744073709551617", &l); assert_se(r == -ERANGE); @@ -542,6 +585,14 @@ static void test_safe_atoi64(void) { assert_se(r == 0); assert_se(l == 32767); + r = safe_atoi64(" 0o20", &l); + assert_se(r == 0); + assert_se(l == 16); + + r = safe_atoi64(" 0b01010", &l); + assert_se(r == 0); + assert_se(l == 10); + r = safe_atoi64("9223372036854775813", &l); assert_se(r == -ERANGE); @@ -577,6 +628,13 @@ static void test_safe_atoux64(void) { assert_se(r == 0); assert_se(l == 0x12345); + r = safe_atoux64("0b11011", &l); + assert_se(r == 0); + assert_se(l == 11603985); + + r = safe_atoux64("0o11011", &l); + assert_se(r == -EINVAL); + r = safe_atoux64("18446744073709551617", &l); assert_se(r == -ERANGE); diff --git a/src/test/test-user-util.c b/src/test/test-user-util.c index 7d2efc8c59..905b0f475f 100644 --- a/src/test/test-user-util.c +++ b/src/test/test-user-util.c @@ -42,6 +42,22 @@ static void test_parse_uid(void) { log_info("/* %s */", __func__); + r = parse_uid("0", &uid); + assert_se(r == 0); + assert_se(uid == 0); + + r = parse_uid("1", &uid); + assert_se(r == 0); + assert_se(uid == 1); + + r = parse_uid("01", &uid); + assert_se(r == -EINVAL); + assert_se(uid == 1); + + r = parse_uid("001", &uid); + assert_se(r == -EINVAL); + assert_se(uid == 1); + r = parse_uid("100", &uid); assert_se(r == 0); assert_se(uid == 100); @@ -54,6 +70,14 @@ static void test_parse_uid(void) { assert_se(r == -EINVAL); assert_se(uid == 100); + r = parse_uid("0o1234", &uid); + assert_se(r == -EINVAL); + assert_se(uid == 100); + + r = parse_uid("0b1234", &uid); + assert_se(r == -EINVAL); + assert_se(uid == 100); + r = parse_uid("+1234", &uid); assert_se(r == -EINVAL); assert_se(uid == 100); @@ -70,6 +94,14 @@ static void test_parse_uid(void) { assert_se(r == -EINVAL); assert_se(uid == 100); + r = parse_uid("001234", &uid); + assert_se(r == -EINVAL); + assert_se(uid == 100); + + r = parse_uid("0001234", &uid); + assert_se(r == -EINVAL); + assert_se(uid == 100); + r = parse_uid("-0", &uid); assert_se(r == -EINVAL); assert_se(uid == 100); @@ -78,6 +110,14 @@ static void test_parse_uid(void) { assert_se(r == -EINVAL); assert_se(uid == 100); + r = parse_uid("00", &uid); + assert_se(r == -EINVAL); + assert_se(uid == 100); + + r = parse_uid("000", &uid); + assert_se(r == -EINVAL); + assert_se(uid == 100); + r = parse_uid("asdsdas", &uid); assert_se(r == -EINVAL); assert_se(uid == 100); |