)]}'
{
  "commit": "6868dd1a51f5a66c96fb9a0deb32087aab7515a8",
  "tree": "d1106c1285c8600ccbf6092a5be3ce40ec712db9",
  "parents": [
    "d1db0c1d1b9c7bb3568ab0fd334291d188f089c1"
  ],
  "author": {
    "name": "Nexory",
    "email": "St4yl3r30@hotmail.de",
    "time": "Wed Aug 12 11:29:16 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Aug 12 11:29:16 2026 +0200"
  },
  "message": "Parse \u0027iref\u0027 and \u0027grpl\u0027 children within their own box size (#3321)\n\navifParseItemReferenceBox() and avifParseGroupsListBox() read the child\nbox header, then read the child\u0027s fields straight from the parent stream\nand never use the size they just read. Every other child box loop in\nread.c parses the child inside a stream bounded by the child\u0027s size and\nthen skips the parent stream by that size.\n\nOn \u0027grpl\u0027 this is visible with a real file. An EntityToGroupBox may\ncarry grouping-type-specific data after the entity_id array; the MPEG\nreference software has a field for exactly that, and the \u0027prsl\u0027 group\nof ISO/IEC 14496-12 uses it. libavif consumes only the generic fields,\nthen reads the first bytes of that data as the size of the next\nEntityToGroupBox and rejects the whole file.\n\nOn \u0027iref\u0027 it is the mirror case: a reference_count that reaches past\nthe child box end is satisfied from the bytes after the box. ffmpeg and\nGPAC both reject that input.\n\nBound both loops to the child box size and skip the parent stream by it.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "703cad41314aadd8d612f374a63d7e5b5aa273c4",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "472f710e88d991c905197d3479f38bc46cfe26a7",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "4e4ed05d375f1b66e6369084b14d3ece321109f9",
      "old_mode": 33188,
      "old_path": "src/read.c",
      "new_id": "480eac322828c642c7851d272fca1ba07eaed0e3",
      "new_mode": 33188,
      "new_path": "src/read.c"
    },
    {
      "type": "modify",
      "old_id": "bb1199b7c838eb6902d93cbfa3f71d9342ccbc69",
      "old_mode": 33188,
      "old_path": "tests/CMakeLists.txt",
      "new_id": "96ca5d74d654fe5c19d6a86c5851ab592ab4b839",
      "new_mode": 33188,
      "new_path": "tests/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "8c7ede2c3ae4af386b9fd0d4f936605f921aa390",
      "old_mode": 33188,
      "old_path": "tests/data/README.md",
      "new_id": "2b59153177f45c9a9731ba9c02d2abf32eff6d32",
      "new_mode": 33188,
      "new_path": "tests/data/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3fc31ff11f25b49889b804e262cd15d7a494825e",
      "new_mode": 33188,
      "new_path": "tests/data/pyramid_pymd.avif"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "722af74b36f4fa7255a75032ae92a25915736a64",
      "new_mode": 33188,
      "new_path": "tests/gtest/avifchildboxsizetest.cc"
    }
  ]
}
