]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
tests: lxc_safe_{u}int() add corner-case tests 1551/head
authorChristian Brauner <christian.brauner@ubuntu.com>
Thu, 11 May 2017 23:16:18 +0000 (01:16 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Fri, 12 May 2017 00:26:20 +0000 (02:26 +0200)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/tests/lxc-test-utils.c

index d4363b8b418258ba217c0cf9e5172bde498d861b..01d8cd6eb67b4e96840521d63f495353d68bd3a0 100644 (file)
@@ -228,7 +228,22 @@ non_test_error:
 
 void test_lxc_safe_uint(void)
 {
+       int ret;
        unsigned int n;
+       char numstr[LXC_NUMSTRLEN64];
+
+       lxc_test_assert_abort((-EINVAL == lxc_safe_uint("    -123", &n)));
+       lxc_test_assert_abort((-EINVAL == lxc_safe_uint("-123", &n)));
+
+       ret = snprintf(numstr, LXC_NUMSTRLEN64, "%" PRIu64, (uint64_t)UINT_MAX);
+       if (ret < 0 || ret >= LXC_NUMSTRLEN64)
+               exit(EXIT_FAILURE);
+       lxc_test_assert_abort((0 == lxc_safe_uint(numstr, &n)) && n == UINT_MAX);
+
+       ret = snprintf(numstr, LXC_NUMSTRLEN64, "%" PRIu64, (uint64_t)UINT_MAX + 1);
+       if (ret < 0 || ret >= LXC_NUMSTRLEN64)
+               exit(EXIT_FAILURE);
+       lxc_test_assert_abort((-ERANGE == lxc_safe_uint(numstr, &n)));
 
        lxc_test_assert_abort((0 == lxc_safe_uint("1234345", &n)) && n == 1234345);
        lxc_test_assert_abort((0 == lxc_safe_uint("   345", &n)) && n == 345);
@@ -247,7 +262,29 @@ void test_lxc_safe_uint(void)
 
 void test_lxc_safe_int(void)
 {
+       int ret;
        signed int n;
+       char numstr[LXC_NUMSTRLEN64];
+
+       ret = snprintf(numstr, LXC_NUMSTRLEN64, "%" PRIu64, (uint64_t)INT_MAX);
+       if (ret < 0 || ret >= LXC_NUMSTRLEN64)
+               exit(EXIT_FAILURE);
+       lxc_test_assert_abort((0 == lxc_safe_int(numstr, &n)) && n == INT_MAX);
+
+       ret = snprintf(numstr, LXC_NUMSTRLEN64, "%" PRIu64, (uint64_t)INT_MAX + 1);
+       if (ret < 0 || ret >= LXC_NUMSTRLEN64)
+               exit(EXIT_FAILURE);
+       lxc_test_assert_abort((-ERANGE == lxc_safe_int(numstr, &n)));
+
+       ret = snprintf(numstr, LXC_NUMSTRLEN64, "%" PRId64, (int64_t)INT_MIN);
+       if (ret < 0 || ret >= LXC_NUMSTRLEN64)
+               exit(EXIT_FAILURE);
+       lxc_test_assert_abort((0 == lxc_safe_int(numstr, &n)) && n == INT_MIN);
+
+       ret = snprintf(numstr, LXC_NUMSTRLEN64, "%" PRId64, (int64_t)INT_MIN - 1);
+       if (ret < 0 || ret >= LXC_NUMSTRLEN64)
+               exit(EXIT_FAILURE);
+       lxc_test_assert_abort((-ERANGE == lxc_safe_int(numstr, &n)));
 
        lxc_test_assert_abort((0 == lxc_safe_int("1234345", &n)) && n == 1234345);
        lxc_test_assert_abort((0 == lxc_safe_int("   345", &n)) && n == 345);