[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