)]}'
{
  "commit": "f9dd2e7f80b7de8e6aaf3063efddf2bbecb3cc4c",
  "tree": "e4ef565aaa999acea73d00a08e705fabde3b1920",
  "parents": [
    "526b987888fbeb5c952912d41265156d53e9e849"
  ],
  "author": {
    "name": "Nicolas Capens",
    "email": "capn@google.com",
    "time": "Fri Aug 13 17:06:50 2021 -0400"
  },
  "committer": {
    "name": "Nicolas Capens",
    "email": "nicolascapens@google.com",
    "time": "Mon Aug 16 14:48:59 2021 +0000"
  },
  "message": "Fix integer overflow in vertex buffer access robustness check\n\nThe spec states that \"vertex input attributes are considered out of\nbounds if the offset of the attribute in the bound vertex buffer range\nplus the size of the attribute is greater than ...\". This addition can\ncause integer overflow and make us fail to detect out of bounds\naccesses.\n\nNote there aren\u0027t x86 SIMD instructions for 32-bit arithmetic with\nsaturation. But we can cheaply prevent this overflow by first clamping\nthe offset to the range, and then doing the addition. Even for an\nattribute size of 1, we would detect the out-of-bounds access.\n\nNote that this relies on the range itself not being close to 4 GiB. We\ncurrently limit all device memory allocations to 1 GiB, which ought to\nbe enough for anyone.\n\nBug: b/195684837\nBug: chromium:1234701\nChange-Id: Ie8ec0859566e3aafb7a592bc4e92119a79016eb1\nReviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/56271\nPresubmit-Ready: Nicolas Capens \u003cnicolascapens@google.com\u003e\nKokoro-Result: kokoro \u003cnoreply+kokoro@google.com\u003e\nTested-by: Nicolas Capens \u003cnicolascapens@google.com\u003e\nReviewed-by: Alexis Hétu \u003csugoi@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8905fa8e93c4124bd6ff1f653691d43945f9beab",
      "old_mode": 33188,
      "old_path": "src/Pipeline/VertexRoutine.cpp",
      "new_id": "aff1bc407682d3aea2389a9474eb52160524a604",
      "new_mode": 33188,
      "new_path": "src/Pipeline/VertexRoutine.cpp"
    },
    {
      "type": "modify",
      "old_id": "f18a3a7c37f148475e296d6f798644c636206a27",
      "old_mode": 33188,
      "old_path": "src/Vulkan/VkDescriptorSetLayout.cpp",
      "new_id": "7a1079f6caaece6cf3b3ce2ba2bae1ba77c486eb",
      "new_mode": 33188,
      "new_path": "src/Vulkan/VkDescriptorSetLayout.cpp"
    }
  ]
}
