Re: [PATCHv2 13/13] libfdt: Add fdt_check_full() function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



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



[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux