)]}'
{
  "commit": "7f04c284484dfa0004b9b1da11003546e37990bb",
  "tree": "96710015576b76c40d5334c2ffb4aa86f63a345e",
  "parents": [
    "3931836e556fef41bf75740d99844d058d488e09"
  ],
  "author": {
    "name": "Sayed Nabhan",
    "email": "nabhan@bugqore.com",
    "time": "Wed Jul 08 08:47:36 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Jul 08 08:48:33 2026 -0700"
  },
  "message": "PR #2102: guard size overflow in BytesToHexString and UrlEscape\n\nImported from GitHub PR https://github.com/abseil/abseil-cpp/pull/2102\n\nBytesToHexString sizes its output as 2 * from.size() and UrlEscapeInternal as initial_portion + 3 * (input.size() - initial_portion), neither of which checks for a size_t overflow, so a large enough input wraps the length and StringResizeAndOverwrite allocates a buffer smaller than the number of bytes the following loop writes into it. CEscapedLength and CalculateBase64EscapedLenInternal in this same file already guard their expansions against size_t max with ABSL_INTERNAL_CHECK, so these two newer helpers just add the matching check with the appropriate divisor.\nMerge d08c46485a00ab31af1ef8f06c2d9f7d4fa9d39e into 4890d3073b027fe5b5c541ca8d5b71daaecb2370\n\nMerging this change closes #2102\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/abseil/abseil-cpp/pull/2102 from nabhan06:escaping-size-overflow-guard d08c46485a00ab31af1ef8f06c2d9f7d4fa9d39e\nPiperOrigin-RevId: 944523718\nChange-Id: Ie10b04ed0f7f0aa0fc17aa33c028eba9cf7a0f61\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e9119cac5965bed4d8608647536f463329ee9030",
      "old_mode": 33188,
      "old_path": "absl/strings/escaping.cc",
      "new_id": "bdbc7ce690001cd277b53bfff40449f687b43cb5",
      "new_mode": 33188,
      "new_path": "absl/strings/escaping.cc"
    }
  ]
}
