)]}'
{
  "commit": "aadcce380fe9e5e17ff38f8471e956463fc4df21",
  "tree": "cd9dfa3ab095e2a0da242ddeadaa4874be9ab541",
  "parents": [
    "35941f2923155664bd9fa5d897cb336a0ab729a1"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Wed Mar 13 13:44:31 2019 -0500"
  },
  "committer": {
    "name": "Adam Langley",
    "email": "agl@google.com",
    "time": "Thu Mar 14 15:21:48 2019 +0000"
  },
  "message": "Implement sk_find manually.\n\nglibc inlines bsearch, so CFI does observe the function pointer mishap.\nBinary search is easy enough, aside from thinking through the edge case\nat the end, so just implement it by hand. As a bonus, it actually gives\nO(lg N) behavior.\n\nsk_*_find needs to return the *first* match, while bsearch does not\npromise a particular one. sk_find thus performs a fixup step to find the\nfirst one, but this is linear in the number of matching elements.\nInstead, the binary search should take this into account.\n\nThis still leaves qsort, but it\u0027s not inlined, so hopefully we can leave\nit alone.\n\nBug: chromium:941463\nChange-Id: I5c94d6b15423beea3bdb389639466f8b3ff0dc5d\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/35304\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ec557c02a8c6a62d1a04a80ab6d23f4f37f802b8",
      "old_mode": 33188,
      "old_path": "crypto/stack/stack.c",
      "new_id": "599bd7b1beb3fc261801f1357b834236db4772d2",
      "new_mode": 33188,
      "new_path": "crypto/stack/stack.c"
    }
  ]
}
