)]}'
{
  "commit": "167f1760ddfeaea1ee1a671ca88aafcccfe30ee0",
  "tree": "9dde130c5129166732bf6c65790950d4790afed6",
  "parents": [
    "f8f97bfcbb97c8bd14c4cb6942dd7b0c492cb3e0"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Sun Jun 12 13:47:08 2022 -0400"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Jun 14 17:57:23 2022 +0000"
  },
  "message": "Fix build with MSVC 2022.\n\nMSVC 2022\u0027s C4191 warns on most function pointer casts. Fix and/or\nsilence them:\n\nconnect.c is an unavoidable false positive. We\u0027re casting the pointer to\nthe correct type. The problem was that the caller is required to first\ncast it to the wrong type in OpenSSL\u0027s API, due to the BIO_callback_ctrl\ncalling convention. Suppress it.\n\nLHASH_OF(T) and STACK_OF(T)\u0027s defintions also have a false positive.\nSuppress that warning. Calling the functions through the casted types\nwould indeed be UB, but we don\u0027t do that. We use them as goofy\ntype-erased types. The problem is there is no function pointer\nequivalent of void*. (Using actual void* instead trips a GCC warning.)\n\nThe sk_sort instance is a true instance of UB. The problem is qsort\nlacks a context parameter. I\u0027ve made sk_sort call qsort_s on _MSC_VER,\nto silence the warning. Ideally we\u0027d fix it on other platforms, but\nqsort_r and qsort_s are a disaster. See\nhttps://stackoverflow.com/a/39561369\n\nFixed: 495\nChange-Id: I0dca80670c74afaa03fc5c8fd7059b4cfadfac72\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/53005\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\nCommit-Queue: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3b65acfca7102fd399bcf80afca1e3654483f328",
      "old_mode": 33188,
      "old_path": "crypto/bio/connect.c",
      "new_id": "9b86e5138aceaf76d493e4da04e1beaedd5cc14f",
      "new_mode": 33188,
      "new_path": "crypto/bio/connect.c"
    },
    {
      "type": "modify",
      "old_id": "64dca1d3646977d70dcaecf810eb311c64530782",
      "old_mode": 33188,
      "old_path": "crypto/lhash/internal.h",
      "new_id": "512f06df4418522433aa2f44df4e5a4ea390030c",
      "new_mode": 33188,
      "new_path": "crypto/lhash/internal.h"
    },
    {
      "type": "modify",
      "old_id": "6da6e3b232fd82a1a38f65b45f18472eadb9c4af",
      "old_mode": 33188,
      "old_path": "crypto/stack/stack.c",
      "new_id": "6412e07bd10ebe9a253ec4fb084bbfcbba05d43f",
      "new_mode": 33188,
      "new_path": "crypto/stack/stack.c"
    },
    {
      "type": "modify",
      "old_id": "df54713f189ad537c6fc0633fdddd681c093c9c4",
      "old_mode": 33188,
      "old_path": "include/openssl/stack.h",
      "new_id": "87403678a3d56c2b64695f4ebf8189c5def09bc1",
      "new_mode": 33188,
      "new_path": "include/openssl/stack.h"
    }
  ]
}
