9 #include "lib/util/talloc_keep_secret.h"
11 int rep_memset_s(void *dest
, size_t destsz
, int ch
, size_t count
);
13 int rep_memset_s(void *dest
, size_t destsz
, int ch
, size_t count
)
15 check_expected_ptr(dest
);
16 check_expected(destsz
);
18 check_expected(count
);
23 static void test_talloc_keep_secret(void ** state
)
25 TALLOC_CTX
*pool
= NULL
;
28 const char *ptr1_talloc_name
= NULL
;
32 pool
= talloc_pool(NULL
, 256);
33 assert_non_null(pool
);
35 ptr1
= talloc_strdup(pool
, "secret");
36 assert_non_null(ptr1
);
37 assert_string_equal(ptr1
, "secret");
39 talloc_keep_secret(ptr1
);
41 ptr1_talloc_name
= talloc_get_name(ptr1
);
42 assert_string_equal(ptr1_talloc_name
, "ptr1");
44 ptr1_size
= talloc_get_size(ptr1
);
45 assert_int_equal(ptr1_size
, strlen(ptr1
) + 1);
47 expect_string(rep_memset_s
, dest
, "secret");
48 expect_value(rep_memset_s
, destsz
, strlen(ptr1
) + 1);
49 expect_value(rep_memset_s
, ch
, (int)'\0');
50 expect_value(rep_memset_s
, count
, strlen(ptr1
) + 1);
54 ptr2
= talloc_size(pool
, ptr1_size
);
55 assert_ptr_equal(ptr1
, ptr2
);
57 for (i
= 1; i
< ptr1_size
; i
++) {
58 assert_int_not_equal(ptr2
[0], ptr2
[i
]);
64 static void test_talloc_keep_secret_validate_memset(void **state
)
66 TALLOC_CTX
*mem_ctx
= NULL
;
67 char *password
= NULL
;
69 mem_ctx
= talloc_new(NULL
);
70 assert_non_null(mem_ctx
);
72 password
= talloc_strdup(mem_ctx
, "secret");
73 assert_non_null(password
);
74 talloc_keep_secret(password
);
76 expect_string(rep_memset_s
, dest
, "secret");
77 expect_value(rep_memset_s
, destsz
, strlen(password
) + 1);
78 expect_value(rep_memset_s
, ch
, (int)'\0');
79 expect_value(rep_memset_s
, count
, strlen(password
) + 1);
86 const struct CMUnitTest tests
[] = {
87 cmocka_unit_test(test_talloc_keep_secret
),
88 cmocka_unit_test(test_talloc_keep_secret_validate_memset
),
91 cmocka_set_message_output(CM_OUTPUT_SUBUNIT
);
93 return cmocka_run_group_tests(tests
, NULL
, NULL
);