Commit 041dc8f
committed
Harden atomicWriteGitattributes writability check against TOCTOU symlink swap
Add fstatFn injectable and compare lstat vs fstat via os.SameFile after
opening the existing target file. If the path is swapped to a symlink
between lstatFile and os.OpenFile, the opened fd's inode will differ from
the lstat result, and the function returns an error rather than silently
writing through the link.
Add TestAtomicWriteGitattributes_FstatFails and
TestAtomicWriteGitattributes_LstatFdMismatch tests covering the new paths.
https://claude.ai/code/session_01UFDupDRxvbPgETqngjCta71 parent 207e8b1 commit 041dc8f
2 files changed
Lines changed: 53 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
798 | 798 | | |
799 | 799 | | |
800 | 800 | | |
801 | | - | |
802 | | - | |
| 801 | + | |
| 802 | + | |
803 | 803 | | |
804 | 804 | | |
805 | 805 | | |
806 | 806 | | |
| 807 | + | |
807 | 808 | | |
808 | 809 | | |
809 | 810 | | |
810 | 811 | | |
811 | 812 | | |
812 | 813 | | |
813 | | - | |
814 | | - | |
815 | | - | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
816 | 819 | | |
817 | 820 | | |
818 | 821 | | |
819 | 822 | | |
| 823 | + | |
820 | 824 | | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
821 | 831 | | |
822 | 832 | | |
823 | 833 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1224 | 1224 | | |
1225 | 1225 | | |
1226 | 1226 | | |
| 1227 | + | |
| 1228 | + | |
| 1229 | + | |
| 1230 | + | |
| 1231 | + | |
| 1232 | + | |
| 1233 | + | |
| 1234 | + | |
| 1235 | + | |
| 1236 | + | |
| 1237 | + | |
| 1238 | + | |
| 1239 | + | |
| 1240 | + | |
| 1241 | + | |
| 1242 | + | |
| 1243 | + | |
| 1244 | + | |
| 1245 | + | |
| 1246 | + | |
| 1247 | + | |
| 1248 | + | |
| 1249 | + | |
| 1250 | + | |
| 1251 | + | |
| 1252 | + | |
| 1253 | + | |
| 1254 | + | |
| 1255 | + | |
| 1256 | + | |
| 1257 | + | |
| 1258 | + | |
| 1259 | + | |
| 1260 | + | |
| 1261 | + | |
| 1262 | + | |
| 1263 | + | |
| 1264 | + | |
1227 | 1265 | | |
1228 | 1266 | | |
1229 | 1267 | | |
| |||
0 commit comments