)]}'
{
  "commit": "a22d9cfbb5bcfb3dc6ffd64d391b568e8a0ce383",
  "tree": "83dd65295d64b33daca89502df5c4e28e857112a",
  "parents": [
    "2c0b843e710aa1e2da25c2592e6dbe5d0b0ab7da"
  ],
  "author": {
    "name": "David Gibson",
    "email": "david@gibson.dropbear.id.au",
    "time": "Fri Feb 06 14:03:24 2009 +1100"
  },
  "committer": {
    "name": "Gerald Van Baren",
    "email": "vanbaren@cideas.com",
    "time": "Wed Apr 01 19:29:31 2009 -0400"
  },
  "message": "libfdt: Rework/cleanup fdt_next_tag()\n\nCurrently, callers of fdt_next_tag() must usually follow the call with\nsome sort of call to fdt_offset_ptr() to verify that the blob isn\u0027t\ntruncated in the middle of the tag data they\u0027re going to process.\nThis is a bit silly, since fdt_next_tag() generally has to call\nfdt_offset_ptr() on at least some of the data following the tag for\nits own operation.\n\nThis patch alters fdt_next_tag() to always use fdt_offset_ptr() to\nverify the data between its starting offset and the offset it returns\nin nextoffset.  This simplifies fdt_get_property() which no longer has\nto verify itself that the property data is all present.\n\nAt the same time, I neaten and clarify the error handling for\nfdt_next_tag().  Previously, fdt_next_tag() could return -1 instead of\na tag value in some circumstances - which almost none of the callers\nchecked for.  Also, fdt_next_tag() could return FDT_END either because\nit encountered an FDT_END tag, or because it reached the end of the\nstructure block - no way was provided to tell between these cases.\n\nWith this patch, fdt_next_tag() always returns FDT_END with a negative\nvalue in nextoffset for an error.  This means the several places which\nloop looking for FDT_END will still work correctly - they only need to\ncheck for errors at the end.  The errors which fdt_next_tag() can\nreport are:\n\t- -FDT_ERR_TRUNCATED if it reached the end of the structure\n\t   block instead of finding a tag.\n\n\t- -FDT_BADSTRUCTURE if a bad tag was encountered, or if the\n           tag data couldn\u0027t be verified with fdt_offset_ptr().\n\nThis patch also updates the callers of fdt_next_tag(), where\nappropriate, to make use of the new error reporting.\n\nFinally, the prototype for the long gone _fdt_next_tag() is removed\nfrom libfdt_internal.h.\n\nSigned-off-by: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "940cee8b126b259b40c5aa34e592bcbb8191b7f0",
      "old_mode": 33188,
      "old_path": "libfdt/fdt.c",
      "new_id": "b09ea6f04d0a04abd14d32ab82da329783432b6e",
      "new_mode": 33188,
      "new_path": "libfdt/fdt.c"
    },
    {
      "type": "modify",
      "old_id": "d682a40c1451e5aec7484545d7a32be4cf2a3901",
      "old_mode": 33188,
      "old_path": "libfdt/fdt_ro.c",
      "new_id": "1e1e32209ce71d3087941bde94381f30932c7b23",
      "new_mode": 33188,
      "new_path": "libfdt/fdt_ro.c"
    },
    {
      "type": "modify",
      "old_id": "cd06178e7b023c37ae23d165d1fb6456673a43d1",
      "old_mode": 33188,
      "old_path": "libfdt/fdt_rw.c",
      "new_id": "5c27a677e3536ed7320ee399113666975e5d545b",
      "new_mode": 33188,
      "new_path": "libfdt/fdt_rw.c"
    },
    {
      "type": "modify",
      "old_id": "698329e0ccaf8f94d2e333b277a78ab3dcff9adc",
      "old_mode": 33188,
      "old_path": "libfdt/fdt_sw.c",
      "new_id": "2380b27502c7e65a91219f5c019e5495ad58ada7",
      "new_mode": 33188,
      "new_path": "libfdt/fdt_sw.c"
    },
    {
      "type": "modify",
      "old_id": "46eb93e4af5c471ecac7bc470065c11f6ae6f9e6",
      "old_mode": 33188,
      "old_path": "libfdt/libfdt_internal.h",
      "new_id": "d2dcbd65ee3039dab5f94fb1c15b0e6e915f0e03",
      "new_mode": 33188,
      "new_path": "libfdt/libfdt_internal.h"
    }
  ]
}
