)]}'
{
  "commit": "ce8c9d2b41442abf25132144b220a90670d4e733",
  "tree": "cbcf37ca8a19ac8fbcc7fc9096f38ddadacd6eab",
  "parents": [
    "7d7597840fdfc3821196e928242f06463837662f"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Mon Nov 14 10:45:16 2016 +0900"
  },
  "committer": {
    "name": "CQ bot account: commit-bot@chromium.org",
    "email": "commit-bot@chromium.org",
    "time": "Tue Dec 06 19:36:27 2016 +0000"
  },
  "message": "Maintain SSL_HANDSHAKE lifetime outside of handshake_func.\n\nWe currently look up SSL_HANDSHAKE off of ssl-\u003es3-\u003ehs everywhere, but\nthis is a little dangerous. Unlike ssl-\u003es3-\u003etmp, ssl-\u003es3-\u003ehs may not be\npresent. Right now we just know not to call some functions outside the\nhandshake.\n\nInstead, code which expects to only be called during a handshake should\ntake an explicit SSL_HANDSHAKE * parameter and can assume it non-NULL.\nThis replaces the SSL * parameter. Instead, that is looked up from\nhs-\u003essl.\n\nCode which is called in both cases, reads from ssl-\u003es3-\u003ehs. Ultimately,\nwe should get to the point that all direct access of ssl-\u003es3-\u003ehs needs\nto be NULL-checked.\n\nAs a start, manage the lifetime of the ssl-\u003es3-\u003ehs in SSL_do_handshake.\nThis allows the top-level handshake_func hooks to be passed in the\nSSL_HANDSHAKE *. Later work will route it through the stack. False Start\nis a little wonky, but I think this is cleaner overall.\n\nChange-Id: I26dfeb95f1bc5a0a630b5c442c90c26a6b9e2efe\nReviewed-on: https://boringssl-review.googlesource.com/12236\nReviewed-by: Steven Valdez \u003csvaldez@google.com\u003e\nReviewed-by: David Benjamin \u003cdavidben@google.com\u003e\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\nCQ-Verified: CQ bot account: commit-bot@chromium.org \u003ccommit-bot@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "796949d8d88b8def3e386a220e358547819ada94",
      "old_mode": 33188,
      "old_path": "include/openssl/ssl.h",
      "new_id": "62c12d97feb3748cec280e5700c01a17ba00ba64",
      "new_mode": 33188,
      "new_path": "include/openssl/ssl.h"
    },
    {
      "type": "modify",
      "old_id": "70d8d96d8f33a99c946f58266363815fd9ff342f",
      "old_mode": 33188,
      "old_path": "ssl/handshake_client.c",
      "new_id": "8d503a555c57ef827cd4aeb4a8df3568934587ed",
      "new_mode": 33188,
      "new_path": "ssl/handshake_client.c"
    },
    {
      "type": "modify",
      "old_id": "3b66ab7d6923fa7e98d8bc0a192d0f4ab327e54d",
      "old_mode": 33188,
      "old_path": "ssl/handshake_server.c",
      "new_id": "ccf0e8b0414c678b7f6c0ab6a292f1cf3f2a2a1e",
      "new_mode": 33188,
      "new_path": "ssl/handshake_server.c"
    },
    {
      "type": "modify",
      "old_id": "5893d4da6f7d5810574a0e1d79951ae64dab0ed7",
      "old_mode": 33188,
      "old_path": "ssl/internal.h",
      "new_id": "af833fbbd51a62c1e858df516654e3bef1efcd9e",
      "new_mode": 33188,
      "new_path": "ssl/internal.h"
    },
    {
      "type": "modify",
      "old_id": "d8720205545f7c9cb71966b4692604f3c8b95303",
      "old_mode": 33188,
      "old_path": "ssl/s3_both.c",
      "new_id": "b27938a0a8359f8561dd5939d1194ff95293596b",
      "new_mode": 33188,
      "new_path": "ssl/s3_both.c"
    },
    {
      "type": "modify",
      "old_id": "aafad333669606bf0a22f33f7b02fb0d923326ed",
      "old_mode": 33188,
      "old_path": "ssl/ssl_lib.c",
      "new_id": "76a9de05985a741483eb99f0d2b50390f1e7060b",
      "new_mode": 33188,
      "new_path": "ssl/ssl_lib.c"
    },
    {
      "type": "modify",
      "old_id": "17f7161e7fed59960d55ed6b11a1c3bdcd4229ce",
      "old_mode": 33188,
      "old_path": "ssl/tls13_both.c",
      "new_id": "c8d32a1e3d6b2ac20bf72c161a1b20aa4e9f069d",
      "new_mode": 33188,
      "new_path": "ssl/tls13_both.c"
    }
  ]
}
