)]}'
{
  "commit": "dbad745811195c00b729efd0ee0a09b7d9fce1d2",
  "tree": "8e23997ad589cb02fa009b8e2757d1fd2d506489",
  "parents": [
    "5ee4e9512e9a99f97c4a3fad397034028b3457c2"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Tue Feb 20 15:06:57 2024 -0500"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Mar 11 23:26:13 2024 +0000"
  },
  "message": "Add ERR_lib_symbol_name and ERR_reason_symbol_name\n\nCPython needs this operation. See\nhttps://github.com/openssl/openssl/issues/19848 and\nhttps://discuss.python.org/t/error-tables-in-the-ssl-module/25431 for\ndetails.\n\nIn principle, our functions already return the symbol names. The\ndifferences are:\n\n- Our library strings say \"common libcrypto routines\" instead of\n  \"CRYPTO\".\n- The global reason codes say \"internal error\" instead of\n  \"INTERNAL_ERROR\". (We should consider changing this.)\n- The library forwarding reason codes (ERR_R_BN_LIB) say the library\n  string instead of \"BN_LIB\". (We should consider changing this.)\n- errnos report strerror\n- Unknown errors return \"unknown error\" because we\u0027ve found that\n  projects tend to crash when these APIs return NULL.\n\nThe new APIs consistently return the symbol name, when available. If\nunavailable (ERR_LIB_SYS\u0027s errno reasons), it returns NULL because I\nassume callers would rather be able to handle that case themselves.\nHopefully this will not be as common so callers can take on this one.\n\nChange-Id: Idd9e4b1cb5a4f64513310d8066d6bf3970722c23\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/66807\nReviewed-by: Bob Beck \u003cbbe@google.com\u003e\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e8cf11408b6a5ff58168e642b18bcff183e1fe2c",
      "old_mode": 33188,
      "old_path": "crypto/err/err.c",
      "new_id": "d74144fe6520d028bfbb4f8bb1519721668bb41a",
      "new_mode": 33188,
      "new_path": "crypto/err/err.c"
    },
    {
      "type": "modify",
      "old_id": "8e9f03c62b055991866f0e092040668245aa31e0",
      "old_mode": 33188,
      "old_path": "crypto/err/err_test.cc",
      "new_id": "75270e4be88d57f093b310e26859b8da0e9e44eb",
      "new_mode": 33188,
      "new_path": "crypto/err/err_test.cc"
    },
    {
      "type": "modify",
      "old_id": "0ec71b171fd0e40ad9e7981ed12c440a694fa237",
      "old_mode": 33188,
      "old_path": "include/openssl/err.h",
      "new_id": "ab181f93d566d373a525b47ebfe6f35eba585009",
      "new_mode": 33188,
      "new_path": "include/openssl/err.h"
    }
  ]
}
