On Wed, Aug 17, 2005 at 03:30:12AM +0400, Alexey Tourbin wrote: > On Wed, Aug 17, 2005 at 03:20:30AM +0400, Alexey Tourbin wrote: > > > Да, tmpfile(3) удаляет созданный файл сразу, и возвращает дескриптор на > > > файл, имени которому уже нет. Если кто-то не переименовал его между > > > open(2) и unlink(2). :) > > > > Нужно возвращать дескриптор *только* если сработал unlink. Тогда > > не будет смысла переименовывать, потому что до данных таким образом > > всё равно не добраться. > > С другой стороны, после переименования временного файла потенциальный > злоумышленник может создать ещё один файл с таким же именем, чтобы > unlink таки сработал. Но вероятность успешной атаки уменьшается > примерно вдвое. С другой стороны, если потенциальный злоумышленник будет делать link(2) на временный файл, то проверка результата unlink(2) ничего не даст.