)]}'
{
  "commit": "5848893344ab7ff2932909957953bbc2b9011379",
  "tree": "3b2b53437ac7c45f8f223042558e42629f55a92a",
  "parents": [
    "d409d1853233ede6b69d25c6fd4529fd59791b6d"
  ],
  "author": {
    "name": "Rudolf Polzer",
    "email": "rpolzer@google.com",
    "time": "Fri Nov 07 02:05:16 2025 -0800"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Fri Nov 14 01:18:16 2025 -0800"
  },
  "message": "Make `bssl::Span::subspan` behave like `std::span::subspan`.\n\nThis means it will no longer clip requested sizes to what is available,\nbut instead `abort()` the process. In comparison, `std::span::subspan`\nwould throw a contract violation, whereas `absl::Span` clips.\n\nThis enables compile-time sizing of `std::span::subspan` return values\neven if the input span is runtime sized.\n\nAlso, a bunch of places have been changed to perform desired clipping at\nthe call site; `subspan` use has previously been audited and marked in\nI5d37c730fd6ea131f3b3bfafe7ea0fe690906a22.\n\nAudited all potential new `abort()` calls with Ghidriff; found the\nfollowing two places of interest:\n\n- https://boringssl.googlesource.com/boringssl/+/4c2a6a5467e4abea270877740b5975cac772802d/ssl/d1_both.cc#775\n  uses offsets and lengths from `range` and indexes into `body` with\n  them. `body` is 12 bytes less than `msg.data`, and `range` is\n  initialized to precisely that size, so things should be fine.\n- https://boringssl.googlesource.com/boringssl/+/4c2a6a5467e4abea270877740b5975cac772802d/ssl/tls13_enc.cc#668\n  assumes `msg` is at least `full_header_len` large, and that\n  `offset \u003e\u003d full_header_len`. In the former case it\u0027d already be\n  failing anyway; the latter case would be obvious nonsense and indicate\n  a clear bug of the caller. I checked all callers, and none can cause\n  this condition right now.\n\nUpdate-Note: `bssl::Span::subspan` method now fails when second argument\npoints beyond span length. Previous `sp.subspan(pos, len)` can be\nrewritten as `sp.subspan(pos, std::min(len, sp.size() - pos))` if\nnecessary.\n\nBug: 453872746\nChange-Id: I68d031abc0d8d5a602d9913bcd88cde659fb1956\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/83707\nReviewed-by: David Benjamin \u003cdavidben@google.com\u003e\nAuto-Submit: Rudolf Polzer \u003crpolzer@google.com\u003e\nCommit-Queue: Rudolf Polzer \u003crpolzer@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1e4adc595a0219843320e06ce8adc79d0592c216",
      "old_mode": 33188,
      "old_path": "include/openssl/span.h",
      "new_id": "85d84e4f47204de3a15a6dc1ce63b4ef6db1a89b",
      "new_mode": 33188,
      "new_path": "include/openssl/span.h"
    },
    {
      "type": "modify",
      "old_id": "a4a84b301f75ee21677bc83c740201072948168c",
      "old_mode": 33188,
      "old_path": "ssl/d1_both.cc",
      "new_id": "07cbe83599b10423643f407fc43cc09187ca4a08",
      "new_mode": 33188,
      "new_path": "ssl/d1_both.cc"
    },
    {
      "type": "modify",
      "old_id": "abdad9255fab3ddfc72a8894e1d4b127b26bab66",
      "old_mode": 33188,
      "old_path": "ssl/internal.h",
      "new_id": "33a5c0a84682e736b7ab28426aeac5d31c4cf16c",
      "new_mode": 33188,
      "new_path": "ssl/internal.h"
    },
    {
      "type": "modify",
      "old_id": "898b5490ec343105b443aca00b75fbd2779a6490",
      "old_mode": 33188,
      "old_path": "ssl/s3_both.cc",
      "new_id": "8ef1a26e76a3f30105dfdcf3bdba127a57b11f54",
      "new_mode": 33188,
      "new_path": "ssl/s3_both.cc"
    },
    {
      "type": "modify",
      "old_id": "61deb5889a577bc7287373593827464004c09fe4",
      "old_mode": 33188,
      "old_path": "ssl/span_test.cc",
      "new_id": "5245db62a2e6b22a26ba9368f4908f74d6273506",
      "new_mode": 33188,
      "new_path": "ssl/span_test.cc"
    }
  ]
}
