]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
audit_logging:tests: Add big_int test for `json_add_int`
authorLi Yuxuan <liyuxuan.darfux@bytedance.com>
Tue, 7 Mar 2023 02:52:47 +0000 (10:52 +0800)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 9 Mar 2023 20:38:31 +0000 (20:38 +0000)
Show that `json_add_int` can't handle value larger than int32 due to
overflow.

Add knownfail.

Signed-off-by: Li Yuxuan <liyuxuan.darfux@bytedance.com>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
lib/audit_logging/tests/audit_logging_test.c
selftest/knownfail.d/json_add_int [new file with mode: 0644]

index 1f871c2e5f4901f9c058177f7385fab396bebc79..d393b986cf0a34bb7525a7dc491274d115d71dc3 100644 (file)
@@ -63,8 +63,10 @@ static void test_json_add_int(_UNUSED_ void **state)
 {
        struct json_object object;
        struct json_t *value = NULL;
+       json_int_t m;
        double n;
        int rc = 0;
+       intmax_t big_int = ((intmax_t)1)<<33;
 
        object = json_new_object();
        rc = json_add_int(&object, "positive_one", 1);
@@ -73,8 +75,10 @@ static void test_json_add_int(_UNUSED_ void **state)
        assert_int_equal(0, rc);
        rc = json_add_int(&object, "negative_one", -1);
        assert_int_equal(0, rc);
+       rc = json_add_int(&object, "big_int", big_int);
+       assert_int_equal(0, rc);
 
-       assert_int_equal(3, json_object_size(object.root));
+       assert_int_equal(4, json_object_size(object.root));
 
        value = json_object_get(object.root, "positive_one");
        assert_true(json_is_integer(value));
@@ -91,6 +95,11 @@ static void test_json_add_int(_UNUSED_ void **state)
        n = json_number_value(value);
        assert_true(n == -1.0);
 
+       value = json_object_get(object.root, "big_int");
+       assert_true(json_is_integer(value));
+       m = json_integer_value(value);
+       assert_int_equal(m, big_int);
+
        object.valid = false;
        rc = json_add_int(&object, "should fail 1", 0xf1);
        assert_int_equal(JSON_ERROR, rc);
diff --git a/selftest/knownfail.d/json_add_int b/selftest/knownfail.d/json_add_int
new file mode 100644 (file)
index 0000000..0ccf8c0
--- /dev/null
@@ -0,0 +1 @@
+lib.audit_logging.audit_logging.test_json_add_int\(none\)