)]}'
{
  "commit": "468cde90ca58421d63f4dfeaebcf8bb3fccb4127",
  "tree": "1ab85c5443cfbaf5fab9c8abfab238b6e6e2d7ae",
  "parents": [
    "2f3958a4156d95c7e9778979acda4e43c7d15979"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Fri Apr 16 15:31:16 2021 -0400"
  },
  "committer": {
    "name": "CQ bot account: commit-bot@chromium.org",
    "email": "commit-bot@chromium.org",
    "time": "Fri Apr 16 20:15:15 2021 +0000"
  },
  "message": "Always encode booleans as DER.\n\nThe ASN1_BOOLEAN representation is a mess. ASN1_BOOLEAN is an int\nand if non-negative (negative values mean omitted or default), gets cast\nto uint8_t and encoded as the value. This means callers are simply\nexpected to know true is 0xff, not 1. Fix this by only encoding 0 or\n0xff.\n\nThis also fixes a bug where values like 0x100 are interpreted as true\n(e.g. in the tasn_enc.c logic to handle default values), but encoded as\nfalse because the cast only looks at the least significant byte.\n\nThis CL does not change the parsing behavior, which is to allow any BER\nencoding and preserve the value in the in-memory representation (though\nwe should tighten that). However the BER encode will no longer be\npreserved when re-encoding.\n\nUpdate-Note: Callers setting ASN1_BOOLEANs to a positive value other\nthan 0xff will now encode 0xff. This probably fixes a bug, but if anyone\nwas attaching significance to incorrectly-encoded booleans, that will\nbreak.\n\nChange-Id: I5bb53e068d5900daca07299a27c0551e78ffa91d\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/46924\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "34bbd155121043a821a9eef2f9594c429ee9a439",
      "old_mode": 33188,
      "old_path": "crypto/asn1/a_bool.c",
      "new_id": "64ae9e52b63707ec3527738fea705a8004534d02",
      "new_mode": 33188,
      "new_path": "crypto/asn1/a_bool.c"
    },
    {
      "type": "modify",
      "old_id": "058e07a1164af1bffc5e7d00dc4af82ae880959b",
      "old_mode": 33188,
      "old_path": "crypto/asn1/asn1_test.cc",
      "new_id": "90a6d7c821e2f16445a077fe4e391bc418eb00f8",
      "new_mode": 33188,
      "new_path": "crypto/asn1/asn1_test.cc"
    },
    {
      "type": "modify",
      "old_id": "13234390dc1276b23ee92a6de3204cdc07043254",
      "old_mode": 33188,
      "old_path": "crypto/asn1/tasn_enc.c",
      "new_id": "5ec57a40468ce3f04eb3fd7a5f344dac6e42174e",
      "new_mode": 33188,
      "new_path": "crypto/asn1/tasn_enc.c"
    }
  ]
}
