Hi David, On 11 April 2018 at 22:52, David Gibson <david@xxxxxxxxxxxxxxxxxxxxx> wrote: > This new function implements a complete and thorough check of an fdt blob's > structure. Given a buffer containing an fdt, it should return 0 only if > the fdt within is structurally sound in all regards. It doesn't check > anything about the blob's contents (i.e. the actual values of the nodes and > properties), of course. > > Signed-off-by: David Gibson <david@xxxxxxxxxxxxxxxxxxxxx> > --- > libfdt/fdt_ro.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ > libfdt/libfdt.h | 2 ++ > tests/.gitignore | 1 + > tests/Makefile.tests | 2 +- > tests/check_full.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ > tests/dumptrees.c | 2 ++ > tests/run_tests.sh | 9 ++++++++ > 7 files changed, 141 insertions(+), 1 deletion(-) > create mode 100644 tests/check_full.c > Reviewed-by: Simon Glass <sjg@xxxxxxxxxxxx> Please see below [...] > diff --git a/tests/check_full.c b/tests/check_full.c > new file mode 100644 > index 0000000..04c0bc1 > --- /dev/null > +++ b/tests/check_full.c > @@ -0,0 +1,63 @@ > +/* > + * libfdt - Flat Device Tree manipulation > + * Tests if two given dtbs are structurally equal (including order) > + * Copyright (C) 2007 David Gibson, IBM Corporation. > + * > + * This library is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public License > + * as published by the Free Software Foundation; either version 2.1 of > + * the License, or (at your option) any later version. > + * > + * This library is distributed in the hope that it will be useful, but > + * WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with this library; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > + */ > + > +#include <stdlib.h> > +#include <stdio.h> > +#include <string.h> > +#include <stdint.h> > + > +#include <libfdt.h> > + > +#include "tests.h" > +#include "testdata.h" > + > +static int expect_bad; /* = 0 */ It would be good to document the args to this program here. > + > +int main(int argc, char *argv[]) > +{ > + const char *filename; > + char *fdt; > + size_t len; > + int err; > + > + test_init(argc, argv); > + if ((argc != 2) > + && ((argc != 3) || !streq(argv[1], "-n"))) > + CONFIG("Usage: %s [-n] <dtb file>", argv[0]); > + if (argc == 3) > + expect_bad = 1; > + > + filename = argv[argc-1]; > + err = utilfdt_read_err(filename, &fdt, &len); > + if (err) > + CONFIG("Couldn't open blob from \"%s\": %s", > + filename, strerror(err)); > + > + vg_prepare_blob(fdt, len); > + > + err = fdt_check_full(fdt, len); > + > + if (expect_bad && (err == 0)) > + FAIL("fdt_check_full() succeeded unexpectedly"); > + else if (!expect_bad && (err != 0)) > + FAIL("fdt_check_full() failed: %s", fdt_strerror(err)); > + > + PASS(); > +} [..] Regards, Simon -- To unsubscribe from this list: send the line "unsubscribe devicetree-compiler" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html