1 /* $NetBSD: truncated_memrsv.c,v 1.1.1.1 2019/12/22 12:34:07 skrll Exp $ */
2
3 // SPDX-License-Identifier: LGPL-2.1-or-later
4 /*
5 * libfdt - Flat Device Tree manipulation
6 * Testcase for misbehaviour on a truncated string
7 * Copyright (C) 2018 David Gibson, IBM Corporation.
8 */
9
10 #include <stdlib.h>
11 #include <stdio.h>
12 #include <string.h>
13 #include <stdint.h>
14
15 #include <libfdt.h>
16
17 #include "tests.h"
18 #include "testdata.h"
19
main(int argc,char * argv[])20 int main(int argc, char *argv[])
21 {
22 void *fdt = &truncated_memrsv;
23 int err;
24 uint64_t addr, size;
25
26 test_init(argc, argv);
27
28 err = fdt_check_header(fdt);
29 if (err != 0)
30 FAIL("Bad header: %s", fdt_strerror(err));
31
32 err = fdt_num_mem_rsv(fdt);
33 if (err != -FDT_ERR_TRUNCATED)
34 FAIL("fdt_num_mem_rsv() returned %d instead of -FDT_ERR_TRUNCATED",
35 err);
36
37 err = fdt_get_mem_rsv(fdt, 0, &addr, &size);
38 if (err != 0)
39 FAIL("fdt_get_mem_rsv() failed on first entry: %s",
40 fdt_strerror(err));
41 if ((addr != TEST_ADDR_1) || (size != TEST_SIZE_1))
42 FAIL("Entry doesn't match: (0x%llx, 0x%llx) != (0x%llx, 0x%llx)",
43 (unsigned long long)addr, (unsigned long long)size,
44 TEST_ADDR_1, TEST_SIZE_1);
45
46 err = fdt_get_mem_rsv(fdt, 1, &addr, &size);
47 if (err != -FDT_ERR_BADOFFSET)
48 FAIL("fdt_get_mem_rsv(1) returned %d instead of -FDT_ERR_BADOFFSET",
49 err);
50
51 PASS();
52 }
53