Skip to content
Snippets Groups Projects
  1. Apr 03, 2009
  2. Apr 02, 2009
  3. Apr 01, 2009
    • Laurent Gregoire's avatar
      libfdt: Fix C++ compile-time cast error on gnu 4.2.1 · 67b89c79
      Laurent Gregoire authored
      
      Allow the inclusion of libfdt.h in C++ source.
      
      Signed-off-by: default avatarLaurent Gregoire <laurent.gregoire@tomtom.com>
      Acked-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      67b89c79
    • Emil Medve's avatar
      Fix a possible overflow case detected by gcc 4.3.2 · 13d93f38
      Emil Medve authored
      
      .../dtc/libfdt/fdt_sw.c: In function 'fdt_end_node':
      .../dtc/libfdt/fdt_sw.c:81: error: assuming signed overflow does not occur when assuming that (X + c) < X is always false
      
      Signed-off-by: default avatarEmil Medve <Emilian.Medve@Freescale.com>
      13d93f38
    • David Gibson's avatar
      libfdt: Rework/cleanup fdt_next_tag() · a22d9cfb
      David Gibson authored
      
      Currently, callers of fdt_next_tag() must usually follow the call with
      some sort of call to fdt_offset_ptr() to verify that the blob isn't
      truncated in the middle of the tag data they're going to process.
      This is a bit silly, since fdt_next_tag() generally has to call
      fdt_offset_ptr() on at least some of the data following the tag for
      its own operation.
      
      This patch alters fdt_next_tag() to always use fdt_offset_ptr() to
      verify the data between its starting offset and the offset it returns
      in nextoffset.  This simplifies fdt_get_property() which no longer has
      to verify itself that the property data is all present.
      
      At the same time, I neaten and clarify the error handling for
      fdt_next_tag().  Previously, fdt_next_tag() could return -1 instead of
      a tag value in some circumstances - which almost none of the callers
      checked for.  Also, fdt_next_tag() could return FDT_END either because
      it encountered an FDT_END tag, or because it reached the end of the
      structure block - no way was provided to tell between these cases.
      
      With this patch, fdt_next_tag() always returns FDT_END with a negative
      value in nextoffset for an error.  This means the several places which
      loop looking for FDT_END will still work correctly - they only need to
      check for errors at the end.  The errors which fdt_next_tag() can
      report are:
      	- -FDT_ERR_TRUNCATED if it reached the end of the structure
      	   block instead of finding a tag.
      
      	- -FDT_BADSTRUCTURE if a bad tag was encountered, or if the
                 tag data couldn't be verified with fdt_offset_ptr().
      
      This patch also updates the callers of fdt_next_tag(), where
      appropriate, to make use of the new error reporting.
      
      Finally, the prototype for the long gone _fdt_next_tag() is removed
      from libfdt_internal.h.
      
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      a22d9cfb
Loading