xref: /netbsd-src/external/gpl2/dtc/dist/tests/extra-terminating-null.c (revision cc7d2833ecf67da5a5ddc470841931eb9f6723e4)
1*cc7d2833Sskrll /*	$NetBSD: extra-terminating-null.c,v 1.1.1.3 2019/12/22 12:34:06 skrll Exp $	*/
2d89652e2Sskrll 
3*cc7d2833Sskrll // SPDX-License-Identifier: LGPL-2.1-or-later
4b8ae3907Smacallan /*
5b8ae3907Smacallan  * libfdt - Flat Device Tree manipulation
6b8ae3907Smacallan  *	Testcase for properties with more than one terminating null
7b8ae3907Smacallan  * Copyright (C) 2009 David Gibson, IBM Corporation.
8b8ae3907Smacallan  */
9b8ae3907Smacallan #include <stdlib.h>
10b8ae3907Smacallan #include <stdio.h>
11b8ae3907Smacallan #include <string.h>
12b8ae3907Smacallan #include <stdint.h>
13b8ae3907Smacallan 
14b8ae3907Smacallan #include <libfdt.h>
15b8ae3907Smacallan 
16b8ae3907Smacallan #include "tests.h"
17b8ae3907Smacallan #include "testdata.h"
18b8ae3907Smacallan 
check_extranull(void * fdt,const char * prop,const char * str,int numnulls)19b8ae3907Smacallan static void check_extranull(void *fdt, const char *prop, const char *str, int numnulls)
20b8ae3907Smacallan {
21b8ae3907Smacallan 	int len = strlen(str);
22b8ae3907Smacallan 	char checkbuf[len+numnulls];
23b8ae3907Smacallan 
24b8ae3907Smacallan 	memset(checkbuf, 0, sizeof(checkbuf));
25b8ae3907Smacallan 	memcpy(checkbuf, TEST_STRING_1, len);
26b8ae3907Smacallan 
27b8ae3907Smacallan 	check_getprop(fdt, 0, prop, len+numnulls, checkbuf);
28b8ae3907Smacallan }
29b8ae3907Smacallan 
main(int argc,char * argv[])30b8ae3907Smacallan int main(int argc, char *argv[])
31b8ae3907Smacallan {
32b8ae3907Smacallan 	void *fdt;
33b8ae3907Smacallan 
34b8ae3907Smacallan 	test_init(argc, argv);
35b8ae3907Smacallan 
36b8ae3907Smacallan 	fdt = load_blob_arg(argc, argv);
37b8ae3907Smacallan 
38b8ae3907Smacallan 	check_extranull(fdt, "extranull0", TEST_STRING_1, 1);
39b8ae3907Smacallan 	check_extranull(fdt, "extranull1,1", TEST_STRING_1, 2);
40b8ae3907Smacallan 	check_extranull(fdt, "extranull1,2", TEST_STRING_1, 2);
41b8ae3907Smacallan 	check_extranull(fdt, "extranull2,1", TEST_STRING_1, 3);
42b8ae3907Smacallan 	check_extranull(fdt, "extranull2,2", TEST_STRING_1, 3);
43b8ae3907Smacallan 	check_extranull(fdt, "extranull2,3", TEST_STRING_1, 3);
44b8ae3907Smacallan 	check_extranull(fdt, "extranull2,4", TEST_STRING_1, 3);
45b8ae3907Smacallan 
46b8ae3907Smacallan 	PASS();
47b8ae3907Smacallan }
48