/* lameprogram.c – Hal Flynn /* does not perform sufficient checks for a */
/* file before opening it and storing data */
#include
#include
int main
{
char a[] = “This is my own special junk data
storage.\n”;
char junkpath[] = “/tmp/junktmp”;
FILE *fp;
fp = fopen(junkpath, “w”);
fputs(a, fp);
fclose(fp);
unlink(junkpath);
return(0);
}Эта программа создает файл /tmp/junktmp без первоначальной проверки его существования.
Пусть во время выполнения программы, создающей небезопасный временный файл, создаваемый файл уже существует. Тогда файл, указанный в символической связи, будет или перезаписан, или в конец этого файла будут добавлены новые данные при условии, если пользователь, выполняющий потенциально опасную программу, имеет право на запись в файл. Рисунки 3.5 и 3.6 демонстрируют пример использования подобной программы пользователем