Skip to content

Commit

Permalink
libprc/test: add pull_string_array large array test
Browse files Browse the repository at this point in the history
Signed-off-by: Douglas Bagnall <[email protected]>
Reviewed-by: Andrew Bartlett <[email protected]>

Autobuild-User(master): Douglas Bagnall <[email protected]>
Autobuild-Date(master): Fri Aug  7 04:44:17 UTC 2020 on sn-devel-184
  • Loading branch information
douglasbagnall committed Aug 7, 2020
1 parent bf16cd7 commit fc83b47
Showing 1 changed file with 35 additions and 1 deletion.
36 changes: 35 additions & 1 deletion librpc/tests/test_ndr_string.c
Original file line number Diff line number Diff line change
Expand Up @@ -159,13 +159,47 @@ static void test_ndr_string_n_length(void **state)
assert_int_equal(len, 26);
}

static void test_pull_string_array(void **state)
{
/* We try pulling long string arrays without long strings */
const char **r = NULL;
struct ndr_pull ndr = {0};
enum ndr_err_code err;
TALLOC_CTX *mem_ctx = talloc_new(NULL);
size_t len = 1 * 1024 * 1024;
uint8_t *data = talloc_array(mem_ctx, uint8_t, len);
size_t i;

for (i = 0; i < len; i++) {
data[i] = (i & 1) ? '\0' : 'X';
}

ndr.current_mem_ctx = mem_ctx;

ndr.flags = (LIBNDR_FLAG_REF_ALLOC |
LIBNDR_FLAG_REMAINING |
LIBNDR_FLAG_STR_NULLTERM |
LIBNDR_FLAG_STR_RAW8);
ndr.data = data;
ndr.data_size = len;

err = ndr_pull_string_array(&ndr, NDR_SCALARS, &r);
assert_int_equal(err, NDR_ERR_SUCCESS);
assert_string_equal(r[0], "X");
assert_string_equal(r[len / 3], "X");
assert_string_equal(r[len / 2 - 1], "X");
assert_ptr_equal(r[len / 2], NULL);
TALLOC_FREE(mem_ctx);
}

int main(int argc, const char **argv)
{
const struct CMUnitTest tests[] = {
cmocka_unit_test(test_pull_string_zero_len_nul_term),
cmocka_unit_test(test_pull_string_len_1_nul_term),
cmocka_unit_test(test_pull_string_len_2_nul_term),
cmocka_unit_test(test_ndr_string_n_length)
cmocka_unit_test(test_ndr_string_n_length),
cmocka_unit_test(test_pull_string_array)
};

cmocka_set_message_output(CM_OUTPUT_SUBUNIT);
Expand Down

0 comments on commit fc83b47

Please sign in to comment.