)]}'
{
  "commit": "608becc67282174594fdaf0ec9c96daca9710d2f",
  "tree": "4aa52a455d356139ee9963dc2d25c0084ef19cf8",
  "parents": [
    "56d3ad9d23bc130aa9404bfdd1957fe81b3ba498"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Sat Jan 20 12:10:16 2024 -0500"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Jan 31 23:09:40 2024 +0000"
  },
  "message": "Fix strict aliasing issues with DES_cblock\n\nAfter all, we have to keep this robust, modern cipher conforming to C\nwell-definedness expectations!\n\nThese functions should have simply taken uint8_t* pointers. Make\ninternal _ex variants that fix this. I\u0027ve not bothered updating the\npublic APIs because it will cause a ton of downstream churn and make\nthose APIs even more OpenSSL-incompatible.  (OpenSSL\u0027s APIs take a\nconst-incorrect uint8_t (*in)[8]. Both our struct and their pointers\nexpect callers to call with \u0026foo.) This does not seem worth the trouble.\n\nAlso since the underlying functions now access as uint8_t*, I suspect\nthis broadly fixes strict aliasing issues with callers that cast from a\nbyte array. (Though perhaps in-\u003ebytes should be (const uint8_t*)in?)\n\nIdeally c2l and l2c would be replaced with CRYPTO_load_u32_le and\nCRYPTO_store_u32_le. (It\u0027s a little rude for a header to squat those\nnames, especially when those name often vary in endianness.) I did that\nin a couple places where we\u0027d otherwise increment a pointer declared\nwith the funny array parameter syntax.  Otherwise I left it alone for\nnow.\n\nFixed: 683\nChange-Id: I7b0d8b2a16697095ebf42a71482c4ba805a193e4\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/65690\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\nReviewed-by: Bob Beck \u003cbbe@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "300ec00e6be98bd6dc9133df08445ce78362ce6c",
      "old_mode": 33188,
      "old_path": "crypto/cipher_extra/e_des.c",
      "new_id": "a4a876e028c3b2c0e85bb612488d50d5839aa1b6",
      "new_mode": 33188,
      "new_path": "crypto/cipher_extra/e_des.c"
    },
    {
      "type": "modify",
      "old_id": "9717fe5f1c242a835f6e9d36c47b8666cbdc0b2e",
      "old_mode": 33188,
      "old_path": "crypto/des/des.c",
      "new_id": "07242f22b3b7732e7a786d5fd65712d2f82c615e",
      "new_mode": 33188,
      "new_path": "crypto/des/des.c"
    },
    {
      "type": "modify",
      "old_id": "0d07a1b0265532bc6e2f420c6c19b8ed43508f4d",
      "old_mode": 33188,
      "old_path": "crypto/des/internal.h",
      "new_id": "ac6c71945faf33a96ee1a82626ca173aa67135e5",
      "new_mode": 33188,
      "new_path": "crypto/des/internal.h"
    }
  ]
}
