)]}'
{
  "commit": "82aa28fa81222a4a614ccf43fbc5b6e9bf02b588",
  "tree": "9e473aa847fd1f2decb68381d3d7e0f0b3212b43",
  "parents": [
    "c608d6b02be0d524adc2e5048df81e29da032c00"
  ],
  "author": {
    "name": "Adam Langley",
    "email": "agl@google.com",
    "time": "Tue Oct 06 18:11:33 2015 -0700"
  },
  "committer": {
    "name": "Adam Langley",
    "email": "agl@google.com",
    "time": "Tue Oct 06 18:11:33 2015 -0700"
  },
  "message": "Make |BUF_memdup| look for zero length, not NULL.\n\nBUF_memdup tries to avoid mallocing zero bytes (and thus unduly\nreturning an error for a NULL return value) by testing whether the input\nbuffer is NULL. This goes back to the original OpenSSL code.\n\nHowever, when |ext_npn_parse_serverhello| tries to use |BUF_memdup| to\ncopy an NPN value returned by a callback, some callbacks just set the\noutput /length/ to zero to indicate an empty value. Thus, when\n|BUF_memdup| tests the pointer, it\u0027s an uninitialised value and MSan\nthrows an error.\n\nSince passing a NULL pointer to |BUF_memdup| better imply that the\nlength is zero, while the reverse empirically isn\u0027t true, testing the\nlength seems safer.\n\nChange-Id: I06626f7dfb761de631fd997bda60057b76b8da94\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "13b5cebdaf41a43eb9ec9fa67da9529cfb8ae87c",
      "old_mode": 33188,
      "old_path": "crypto/buf/buf.c",
      "new_id": "b918f01f12d80769d5343202ee6b94e7abe1b423",
      "new_mode": 33188,
      "new_path": "crypto/buf/buf.c"
    }
  ]
}
