)]}'
{
  "commit": "c042ee3fc019adb2ac2fcbdbbea984fcdea01ad7",
  "tree": "0a190fe45844347118daf4c9e1794aa54a681c64",
  "parents": [
    "04cf7de1434f42a6202eaabfa1416602c920c62c"
  ],
  "author": {
    "name": "Tim Malmström",
    "email": "oreflow@users.noreply.github.com",
    "time": "Wed Aug 19 15:39:51 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Aug 19 16:39:51 2026 +0300"
  },
  "message": "Prevent unwanted path traversal in file writes from buildtools. (#1491)\n\n* Prevent unwanted path traversal in file writes from buildtools.\n\nBuildtools previously allowed file writes through arbitrary symlinks, which could result in unintended path traversal outside of the Bazel workspace.\n\nUse safeopen.WriteFileBeneath to ensure file writes remain confined within the Bazel workspace root. Add the -disable_symlink_safety flag to both buildifier and buildozer to allow opting out of this restriction when modifying files targeted via external symlinks.\n\nNew Behavior:\n- Without flag (default): both tools refused to write and exited with error (invalid cross-device link).\n- With -disable_symlink_safety: both tools successfully formatted/edited the target file.\n\n* Fixing MODULE.bazel\n\n* Disabling Symlink safety for windows\n\n* Only check symlink safety on Linux for now\n\n* Also OS-gating buildozer test\n\n---------\n\nCo-authored-by: Tim Malmström \u003coreflow@google.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a508bb6bb9596b595e721b35576a50bd499ec869",
      "old_mode": 33188,
      "old_path": "MODULE.bazel",
      "new_id": "ec98eafe9b5b219015662b74a7f57bcd249da23b",
      "new_mode": 33188,
      "new_path": "MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "5bf6338e98c0672e870b5572a37f2138c4b63d5e",
      "old_mode": 33188,
      "old_path": "buildifier/BUILD.bazel",
      "new_id": "4b272150ea126fd7d67c6ff5fd1501d12b7bf759",
      "new_mode": 33188,
      "new_path": "buildifier/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "f183c334b65655ac6ea9703163f626113b0d93d7",
      "old_mode": 33188,
      "old_path": "buildifier/README.md",
      "new_id": "faef977a15aa5f5a9e8efd188c280b3da3688785",
      "new_mode": 33188,
      "new_path": "buildifier/README.md"
    },
    {
      "type": "modify",
      "old_id": "60124fc2b21d65421d284ec3a1ceedff106e3bbd",
      "old_mode": 33188,
      "old_path": "buildifier/buildifier.go",
      "new_id": "2ede03fb847c5914f3f71788c93b445a61b2ac94",
      "new_mode": 33188,
      "new_path": "buildifier/buildifier.go"
    },
    {
      "type": "modify",
      "old_id": "e9783b94903f5074656099c042a9a76e5c85385f",
      "old_mode": 33188,
      "old_path": "buildifier/config/config.go",
      "new_id": "825770aa32ea44885a6cf255a85d85f32417da49",
      "new_mode": 33188,
      "new_path": "buildifier/config/config.go"
    },
    {
      "type": "modify",
      "old_id": "c9291769ec1681f2c7483fc4eed41335e699feac",
      "old_mode": 33188,
      "old_path": "buildifier/config/config_test.go",
      "new_id": "6f553adfebfaea49dc239d0810507c8b06f793e4",
      "new_mode": 33188,
      "new_path": "buildifier/config/config_test.go"
    },
    {
      "type": "modify",
      "old_id": "b9a6389c5422f59bd7ba14cfa445fbf1720c0b59",
      "old_mode": 33261,
      "old_path": "buildifier/integration_test.sh",
      "new_id": "a6339f5704abfb631feab8e4a66bf03af81634f6",
      "new_mode": 33261,
      "new_path": "buildifier/integration_test.sh"
    },
    {
      "type": "modify",
      "old_id": "82a93942bf14d5dd8e9b75dd0216462d5560bd75",
      "old_mode": 33188,
      "old_path": "buildozer/README.md",
      "new_id": "f10c9ddc9bcd6d962d0f8447dabf28df49ad2947",
      "new_mode": 33188,
      "new_path": "buildozer/README.md"
    },
    {
      "type": "modify",
      "old_id": "8ed014be212bab33580e7171761a939e40a73952",
      "old_mode": 33261,
      "old_path": "buildozer/buildozer_test.sh",
      "new_id": "ab3815cb648aa197a05bd6dad5e20975c6fd0cb6",
      "new_mode": 33261,
      "new_path": "buildozer/buildozer_test.sh"
    },
    {
      "type": "modify",
      "old_id": "69fe90b1eba3f87a3145078e7fb5173c63392c94",
      "old_mode": 33188,
      "old_path": "buildozer/main.go",
      "new_id": "e802d58546e5ae758a90487343344f002323ff71",
      "new_mode": 33188,
      "new_path": "buildozer/main.go"
    },
    {
      "type": "modify",
      "old_id": "ac7173f123e2e3f4486fea508d90b6072f36d123",
      "old_mode": 33188,
      "old_path": "edit/buildozer.go",
      "new_id": "861cc7ec82b90b652648b0054c9d571cce031e46",
      "new_mode": 33188,
      "new_path": "edit/buildozer.go"
    },
    {
      "type": "modify",
      "old_id": "5b1780f8dab0a25ec1dd197c069f23a8cf14a289",
      "old_mode": 33188,
      "old_path": "edit/buildozer_test.go",
      "new_id": "c382e38ca0bcf2b42b44bbb73109c860e881e181",
      "new_mode": 33188,
      "new_path": "edit/buildozer_test.go"
    },
    {
      "type": "modify",
      "old_id": "cdc722dfef871b11e8c89f8531892eb387ca7597",
      "old_mode": 33188,
      "old_path": "file/BUILD.bazel",
      "new_id": "a358823622a4d0ce202d27d01ca9cb762809bb33",
      "new_mode": 33188,
      "new_path": "file/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "9e6252e720a714fe5fa17db9890c5a74ccf0ec96",
      "old_mode": 33188,
      "old_path": "file/file.go",
      "new_id": "28716d402bf4ca3654c911c98a1c1c87e37dc299",
      "new_mode": 33188,
      "new_path": "file/file.go"
    },
    {
      "type": "modify",
      "old_id": "bf1b5f6745b74756b96729746d187fc4305d4fc6",
      "old_mode": 33188,
      "old_path": "go.mod",
      "new_id": "a29c1ade60222880d79ce45e09605a5460d64fec",
      "new_mode": 33188,
      "new_path": "go.mod"
    },
    {
      "type": "modify",
      "old_id": "3c909c272e2837446c2aa9d78e4c9a27a0f59874",
      "old_mode": 33188,
      "old_path": "go.sum",
      "new_id": "d5a2ba2788144540da8a657d18ebc9ca948da28d",
      "new_mode": 33188,
      "new_path": "go.sum"
    },
    {
      "type": "modify",
      "old_id": "978c4742fbca43bb380e2e439ba8fe3ba31412da",
      "old_mode": 33188,
      "old_path": "unused_deps/BUILD.bazel",
      "new_id": "d1bfd78bd86eabf889b6c7816ca68fc8904c57da",
      "new_mode": 33188,
      "new_path": "unused_deps/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "0f89ad0ca65253bc4e4366d06dcbcd3115878455",
      "old_mode": 33188,
      "old_path": "unused_deps/README.md",
      "new_id": "eeae97f117cb47082d48094e5e2cd336a49013c7",
      "new_mode": 33188,
      "new_path": "unused_deps/README.md"
    },
    {
      "type": "modify",
      "old_id": "42e0c5299d4b87f78b7d9c47e0dc49ce5fe571be",
      "old_mode": 33188,
      "old_path": "unused_deps/unused_deps.go",
      "new_id": "35bbea714539b5ab253324058579225d15a38b92",
      "new_mode": 33188,
      "new_path": "unused_deps/unused_deps.go"
    }
  ]
}
