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 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