)]}'
{
  "commit": "34b51faf3a58fe36e3ab1db99a2a441d0f69c754",
  "tree": "eab096e78e264f0956366a985bf910de8a05f194",
  "parents": [
    "79123ca9c0f9ae1532427f704fa626dbaebbdbe9"
  ],
  "author": {
    "name": "Bob Beck",
    "email": "bbe@google.com",
    "time": "Tue Feb 06 14:43:26 2024 -0700"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Feb 07 22:54:26 2024 +0000"
  },
  "message": "Avoid conversion overflow from struct tm.\n\nSee discussion in\nhttps://boringssl-review.googlesource.com/c/boringssl/+/65967/comment/4b0fb2a6_78bfab3a/\n\nstruct tm is defined with tm_ values as all ints.\n\nConversion inside this code is all bounds checked around valid\ntimes and can\u0027t overflow, but because struct tm uses 1 based months\nand 1900 based years, we need to modify the input values when\nconverting a struct tm.\n\nRather than do awkward bounds checks, just accept an int64_t on\ninput and we don\u0027t have to care.\n\nOPENSSL_gmtime_adj gains checks to ensure the cumulative days\nand seconds values passed in may not overflow.\n\nWhile we are here we also ensure that OPENSSL_gmtime_adj does\nnot modify the output struct tm in the failure case.\n\nAlso while we are here, just make the offset_seconds value of\nOPENSSL_gmtime_adj an int64_t - because long was never the\ncorrect type.\n\nAdd tests for all this.\n\nChange-Id: I40ac019c4274b5388c97736cf85cede951d8b7ae\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/66047\nCommit-Queue: Bob Beck \u003cbbe@google.com\u003e\nReviewed-by: David Benjamin \u003cdavidben@google.com\u003e\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\nAuto-Submit: Bob Beck \u003cbbe@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "76d6889e28ac752e46b6ca9aa21070763c573ae1",
      "old_mode": 33188,
      "old_path": "crypto/asn1/asn1_test.cc",
      "new_id": "314ac3d2f0a00911461ee08e6601cacfe7e5db17",
      "new_mode": 33188,
      "new_path": "crypto/asn1/asn1_test.cc"
    },
    {
      "type": "modify",
      "old_id": "57e69668d33607972ad69304106ad03199eb6887",
      "old_mode": 33188,
      "old_path": "crypto/asn1/internal.h",
      "new_id": "601a3ca8bf3db65a2eadf6496beb33f27849d6fb",
      "new_mode": 33188,
      "new_path": "crypto/asn1/internal.h"
    },
    {
      "type": "modify",
      "old_id": "2422bd395e3811189afce5a53fd3828965946b67",
      "old_mode": 33188,
      "old_path": "crypto/asn1/posix_time.c",
      "new_id": "ff95cca9c063192daf85ac8a1d40fb5442c3b5a7",
      "new_mode": 33188,
      "new_path": "crypto/asn1/posix_time.c"
    }
  ]
}
