)]}'
{
  "commit": "882336a4b83cba9bf475b312dad410b7e642a2aa",
  "tree": "31ed3467b5443b261642b658bdb208401758024b",
  "parents": [
    "eedbb493587ca8f91ff9ea8d2d7e27f6ba0e9214"
  ],
  "author": {
    "name": "Sidhartha kumar",
    "email": "siddharthtiwari155@yahoo.com",
    "time": "Tue Jun 30 22:54:18 2026 +0530"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jun 30 18:24:18 2026 +0100"
  },
  "message": "rust bindings: keep argv[0] alive across benchmark reporting (#2237)\n\nThe Rust binding\u0027s initialize() creates temporary CString buffers that are freed on return, but benchmark::Initialize() stores argv[0] as a raw pointer in BenchmarkReporter::Context::executable_name. Later reporter calls dereference freed heap memory (use-after-free).\n\nCopy argv[0] into static storage in the C++ bridge before calling benchmark::Initialize(), ensuring the retained pointer remains valid for the process lifetime.\n\nAI assistance disclosure: AI tooling was used to assist with auditing, reproducer design, patch drafting, and PR text preparation.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5efc5fac69d1a36cfdfa5f2bbcdb17f3647bbfd0",
      "old_mode": 33188,
      "old_path": "bindings/rust/src/rust_api.cc",
      "new_id": "c85997e3908e9bfc523cc55e9c02f68291e5c701",
      "new_mode": 33188,
      "new_path": "bindings/rust/src/rust_api.cc"
    }
  ]
}
