Просто ты кинул ссылку на какую-то функцию реализации одной из функций std, а там даже не ясно что это за функция и как её надо вызывать чтобы получить гонки. Ясно только, что это что-то связанное с file system и путями
я ж два линка кинул. ну идея в том что remove_all не должна ходить по симлинкам, а гонка в том что мы меняем "root/a/b/c" с не симнлинка на симлинк между проверкой и использованием.
исправил опечатку.
if (is_directory(st)) { for (directory_iterator it(p, ec); тут также разрывается связь между прошлой директорией st и путём p
Мне кажется здесь нет проблемы, так как здесь используется file_status полученный ранее.
а в следующей строке? Итератор же из пути создаётся
Похоже на TOUCOU
Да, кажется, я не прав. directory_iterator использует opendir для того открыть директорию.
Оговорился, https://en.m.wikipedia.org/wiki/Time_of_check_to_time_of_use
Обсуждают сегодня