[sisyphus] Пакет bluemote

Epiphanov Sergei =?iso-8859-1?q?serpiph_=CE=C1_nikiet=2Eru?=
Вт Июн 7 10:36:14 MSD 2005


В сообщении от 7 Июнь 2005 09:59 Epiphanov Sergei написал:
> В сообщении от 6 Июнь 2005 20:05 Dmitry (Mothlike) Marochko написал:
> > Примерно понял. А где взять тот самый n? Использовать в качестве его
> > MAXLEN?
>
> Да. Хотя, насколько мне известно, есть константа максимальной длины пути к
> файлу вместе с именем файла, которая была равна 4096.
>
> Нашёл, в файле linux/limits.h:
>
> #define PATH_MAX        4096    /* # chars in a path name including nul */
>
> Так что посоветовал бы везде MAXLEN заменить на PATH_MAX.

То есть в данном случае

char lockfile[MAXLEN];
заменить на
char lockfile[PATH_MAX];

Перед использованием этой переменной я бы написал

bzero (lockfile, PATH_MAX);
или
lockfile[PATH_MAX - 1] = 0;

Главное - чтобы последний байт строки всегда был бы нулевым. Это на случай, 
если исходная строка будет больше PATH_MAX. Далее, заменить команды вида

strcpy (lockfile, srcfile);
на
strncpy (lockfile, srcfile, PATH_MAX - 1);

Тоже самое с sprintf (на snprintf) и другими. И не забыть в начале 
исправленных файлов добавить

#include <linux/limits.h>

-- 
С уважением, Епифанов Сергей



Подробная информация о списке рассылки Sisyphus