)]}'
{
  "commit": "f61997b4d70e3ef3836e9f16b30a4a6bfae5de56",
  "tree": "14d9aaef0b5cc8bb15ccb3c6c6cd85084c38ae8a",
  "parents": [
    "38890fdef40e3491ce93124825ebea2e63ef2328"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Sat Oct 02 10:57:24 2021 -0400"
  },
  "committer": {
    "name": "Adam Langley",
    "email": "agl@google.com",
    "time": "Tue Oct 05 17:56:37 2021 +0000"
  },
  "message": "Make ASN1_STRING_TABLE_add thread-safe and document.\n\nThis function is a little awkward. It mutates global data, so if two\nlibraries in the address space both attempt to define a custom OID, they\nwill conflict. But some existing code uses it so, as long as it does so,\nwe should make it thread-safe.\n\nAlong the way, I\u0027ve switched it to a hash table and removed the ability\nto overwrite existing entries. Previously, overwriting a built-in table\nwould crash (on platforms where const structures are write-protected).\nOverwriting a dynamic table implemented this weird merging algorithm.\nThe one caller I\u0027ve seen does not appear to need this feature.\n\nI\u0027ve also switched ASN1_STRING_TABLE_cleanup to a no-op, matching our\nother global cleanup functions. This function is not safe to call\nwithout global knowledge of all other uses of the library.\n\nUpdate-Note: ASN1_STRING_TABLE_add no longer allows overwrite existing\nentries. In most cases, this would crash or trigger a race condition\nanyway.\n\nBug: 426\nChange-Id: Ie024cca87feaef3ff10064b452f3a860844544da\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/49769\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "62c2f5d25d30334fe44e3d5456b54a7755120fd0",
      "old_mode": 33188,
      "old_path": "crypto/asn1/a_strnid.c",
      "new_id": "bc9226a3a6508ae4e5addc4d9d95d5a02859e1c5",
      "new_mode": 33188,
      "new_path": "crypto/asn1/a_strnid.c"
    },
    {
      "type": "modify",
      "old_id": "439afc6e77ceb744c0abc854b1517650ef772a84",
      "old_mode": 33188,
      "old_path": "crypto/asn1/asn1_test.cc",
      "new_id": "7c37cb6c8fdc313c24e5e4dd232b7c560b2051cb",
      "new_mode": 33188,
      "new_path": "crypto/asn1/asn1_test.cc"
    },
    {
      "type": "modify",
      "old_id": "cab0c7735dd0ee69f4b7fa7ea6a0c73f63fd3742",
      "old_mode": 33188,
      "old_path": "crypto/asn1/internal.h",
      "new_id": "dcb6fcf7b45c93f0b4ec4b281f0fefeb280b409c",
      "new_mode": 33188,
      "new_path": "crypto/asn1/internal.h"
    },
    {
      "type": "modify",
      "old_id": "4f6fb3b4bb8da48103229f9bba700c4dfc3544f2",
      "old_mode": 33188,
      "old_path": "include/openssl/asn1.h",
      "new_id": "0f22de196236536f082e02a2c643b430a80921db",
      "new_mode": 33188,
      "new_path": "include/openssl/asn1.h"
    }
  ]
}
