)]}'
{
  "commit": "92b7c89e6e8ba82924b57153bea68241cc45f658",
  "tree": "dfb07ffb2849bec2e5866c3afd26313ed74a9b14",
  "parents": [
    "12d9ed670da3edd64ce8175cfe0e091982989c18"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Mon Jun 17 20:26:24 2019 +0000"
  },
  "committer": {
    "name": "Adam Langley",
    "email": "agl@google.com",
    "time": "Wed Jun 19 17:19:13 2019 +0000"
  },
  "message": "Add a value barrier to constant-time selects.\n\nClang recognizes the (mask \u0026 a) | (~mask \u0026 b) pattern as a select. While\nit often optimizes this into a cmov, it sometimes inserts branches\ninstead, particularly when it detects a string of cmovs with the same\ncondition.\n\nIn the long term, we need language-level support for expressing our\nconstraints. In the short term, introduce value barriers to prevent the\ncompiler from reasoning about our bit tricks. Thanks to Chandler Carruth\nfor suggesting this pattern. It should be reasonably robust, short of\nvalue-based PGO or the compiler learning to reason about empty inline\nassembly blocks.\n\nApply barriers to our various constant-time selects. We should invest\nmore in the valgrind-based tooling to figure out if there are other\ninstances.\n\nChange-Id: Icc24ce36a61f7fec021a762c27197b9c5bd28c5d\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/36484\nReviewed-by: Chandler Carruth \u003cchandlerc@google.com\u003e\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "59a7bb187208497966ec5f9c44584e3015126a85",
      "old_mode": 33188,
      "old_path": "crypto/constant_time_test.cc",
      "new_id": "ae80003eb3db1cd85044a903e805f971d4354fc0",
      "new_mode": 33188,
      "new_path": "crypto/constant_time_test.cc"
    },
    {
      "type": "modify",
      "old_id": "b80f065ffd09f1ef502ef9451cefebd3f97ce029",
      "old_mode": 33188,
      "old_path": "crypto/internal.h",
      "new_id": "76a317aae96a393a42a6bc3ada9bc36b6fdcdcb2",
      "new_mode": 33188,
      "new_path": "crypto/internal.h"
    },
    {
      "type": "modify",
      "old_id": "820a5c9bb07e7887793fed8b22d0cb5e11762ed4",
      "old_mode": 33188,
      "old_path": "third_party/fiat/curve25519_32.h",
      "new_id": "53772421dc4d96d5c7e0903cfe9381833b6a2ee8",
      "new_mode": 33188,
      "new_path": "third_party/fiat/curve25519_32.h"
    },
    {
      "type": "modify",
      "old_id": "23bf361d8a94e78f36419a0d3578a9a93ff94ec0",
      "old_mode": 33188,
      "old_path": "third_party/fiat/curve25519_64.h",
      "new_id": "7c31ff99cff5d64429e58853715ea1e0e5556705",
      "new_mode": 33188,
      "new_path": "third_party/fiat/curve25519_64.h"
    },
    {
      "type": "modify",
      "old_id": "faaa0b04e4127eb777079d642253430e9f12733f",
      "old_mode": 33188,
      "old_path": "third_party/fiat/p256_32.h",
      "new_id": "638eb5d9ced74cc7b067af38642c9257d5dbe077",
      "new_mode": 33188,
      "new_path": "third_party/fiat/p256_32.h"
    },
    {
      "type": "modify",
      "old_id": "8e449c6b9c2802f1f990f8b44aedde35cf9c2323",
      "old_mode": 33188,
      "old_path": "third_party/fiat/p256_64.h",
      "new_id": "7d97e0a09e702bb0a7f4ced325db4e0cfecab0ef",
      "new_mode": 33188,
      "new_path": "third_party/fiat/p256_64.h"
    }
  ]
}
