)]}'
{
  "commit": "ecce2942ed92ae833ffc8f60a699e63ece181dcd",
  "tree": "9995237b7fd343a3c99bdd6aa18f3ed8d928f812",
  "parents": [
    "f6cd30a44e18464a104f916d69bc0d4292a05a9e"
  ],
  "author": {
    "name": "Protobuf Team Bot",
    "email": "protobuf-github-bot@google.com",
    "time": "Thu Aug 20 09:13:32 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Thu Aug 20 09:22:16 2026 -0700"
  },
  "message": "Fix Java CodedInputStream ArrayDecoder out-of-bounds read on truncated varint\n\nEnsure ArrayDecoder in Java CodedInputStream enforces logical slice limits when handling truncated varints in shared backing arrays.\nSpecifically:\n1. In `readRawVarint32()`, check `pos \u003e\u003d limit` before reading, and align `pos \u003d limit` when speculative reading in `readRawVarint32Fast()` overshoots `limit` before throwing `InvalidProtocolBufferException.truncatedMessage()`.\n2. Update `isAtEnd()` and `readRawByte()` to check `pos \u003e\u003d limit` instead of `pos \u003d\u003d limit`, preventing poisoned stream cursors from reading beyond slice bounds into adjacent memory.\n3. Add regression tests in `CodedInputStreamTest.java` verifying that truncated varints across shared-backing decoders (`byte[]`, `ByteBuffer`, slices, duplicates) do not leak adjacent bytes.\nPiperOrigin-RevId: 967864097\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "76e5cafd0f1420cccf7813d852c5c4ae26e022ba",
      "old_mode": 33188,
      "old_path": "java/core/src/main/java/com/google/protobuf/CodedInputStream.java",
      "new_id": "c97d6eed4b893f47d38e5449462929a14de8322b",
      "new_mode": 33188,
      "new_path": "java/core/src/main/java/com/google/protobuf/CodedInputStream.java"
    },
    {
      "type": "modify",
      "old_id": "6607585af2a8ec4474a3ea06a8a53abedea4bb61",
      "old_mode": 33188,
      "old_path": "java/core/src/test/java/com/google/protobuf/CodedInputStreamTest.java",
      "new_id": "a7e192bbc1b8cd535e35cb7311f61139a3a236f4",
      "new_mode": 33188,
      "new_path": "java/core/src/test/java/com/google/protobuf/CodedInputStreamTest.java"
    }
  ]
}
