0.167.36
Fixed
- Symlink-проверка dst при watchdog-rollback (A-022 — P2, defence-in-depth).
defaultCopyFileвinternal/tray/watchdog.goпроверял черезos.Lstatтолько src (backup), а dst (путь целевого бинарника) открывалсяOpenFile(O_CREATE|O_WRONLY|O_TRUNC)без проверок — если dst успел стать symlink, open следовал по нему и записал backup-содержимое в произвольное место. Теперь dst тоже проверяется черезos.Lstatперед open: symlink → отказ (refusing to overwrite symlink target); отсутствие dst — штатный случай создания. Выбран кросс-платформенный Lstat вместо POSIX-onlyO_NOFOLLOW(недоступен на Windows/darwin-сборке). Требует write-доступа к директории бинарника (что уже game-over) — мера именно «в глубину». Тесты (unix): dst=symlink → ошибка, файл за symlink не тронут; src=symlink → ошибка, dst не создаётся (регрессионный); регулярный dst перезаписывается как раньше.