)]}'
{
  "commit": "dd81bf770793e16352072cf397be030f0fd540e0",
  "tree": "819604b2c4ee4581a72469bf195b0680fbd299ee",
  "parents": [
    "41eb357d05e1603a15b23c4c7f21b5240664453a"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Tue Oct 18 21:41:30 2022 -0400"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Nov 14 18:10:26 2022 +0000"
  },
  "message": "Introduce ossl_ssize_t and use it in ASN1_STRING_set.\n\nWe have a number of APIs that cannot migrate to size_t because OpenSSL\nused negative numbers as some special indicator. This makes it hard to\nbecome size_t-clean.\n\nHowever, in reality, the largest buffer size is SSIZE_MAX, or, more\naccurately PTRDIFF_MAX. But every platform I\u0027ve ever seen make ptrdiff_t\nand size_t the same size. malloc is just obligated to fail allocations\nthat don\u0027t fit in ssize_t. ssize_t itself is not portable (Windows\ndoesn\u0027t have it), but we can define ossl_ssize_t to be ptrdiff_t.\nOpenSSL also has an ossl_ssize_t (though they don\u0027t use it much), so\nwe\u0027re also improving compatibility.\n\nStart this out with ASN1_STRING_set. It still internally refuses to\nconstruct a string bigger than INT_MAX; the struct can\u0027t hold this and\neven if we fix the struct, no other code, inside or outside the library,\ncan tolerate it. But now code which passes in a size_t (including our\nown) can do so without overflow.\n\nBug: 428, 516\nChange-Id: I17aa6971733f34dfda7d971882d0f062e92340e9\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/54953\nCommit-Queue: Bob Beck \u003cbbe@google.com\u003e\nAuto-Submit: David Benjamin \u003cdavidben@google.com\u003e\nReviewed-by: Bob Beck \u003cbbe@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c67efeb234d85cf25958bd33fac62acaf8a986ef",
      "old_mode": 33188,
      "old_path": "crypto/asn1/a_bitstr.c",
      "new_id": "3d60d3bd8e4ffa08fc7cefc99d2e2763dff9f56c",
      "new_mode": 33188,
      "new_path": "crypto/asn1/a_bitstr.c"
    },
    {
      "type": "modify",
      "old_id": "98061db37fc34ce61bc86bbb131d20f78ab3da62",
      "old_mode": 33188,
      "old_path": "crypto/asn1/asn1_lib.c",
      "new_id": "a0e8f48b6784aafecba5d6a79b9e14bde59ac2f5",
      "new_mode": 33188,
      "new_path": "crypto/asn1/asn1_lib.c"
    },
    {
      "type": "modify",
      "old_id": "af7e560afcb303c36054952468e28baa60278726",
      "old_mode": 33188,
      "old_path": "crypto/crypto.c",
      "new_id": "12cbb88842f46677a070abc27bfecaffc01d3e0c",
      "new_mode": 33188,
      "new_path": "crypto/crypto.c"
    },
    {
      "type": "modify",
      "old_id": "693b38e80f6f6e39e75dccc94800173172984a31",
      "old_mode": 33188,
      "old_path": "include/openssl/asn1.h",
      "new_id": "c7e294bda2a10f0b8728af110761b2176e828b6b",
      "new_mode": 33188,
      "new_path": "include/openssl/asn1.h"
    },
    {
      "type": "modify",
      "old_id": "7afcc4fc95b6ad08b9c5cea06f623e0e321d5e06",
      "old_mode": 33188,
      "old_path": "include/openssl/base.h",
      "new_id": "1e61e9817dc2d20e2dc0fc4801f1bc7ae9b7be4d",
      "new_mode": 33188,
      "new_path": "include/openssl/base.h"
    }
  ]
}
