[devel] IA: destination buffer overflow - ppp
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Ноя 28 19:35:18 MSK 2007
On Wed, Nov 28, 2007 at 02:37:07PM +0300, Alexander Bokovoy wrote:
> Alexey Tourbin пишет:
> > On Wed, Nov 28, 2007 at 12:35:52PM +0300, Alexander Bokovoy wrote:
> >> Еще бы оно работало. Вы же просто повторили ерунду за авторами этого
> >> плагина. sizeof(ttyname), как и sizeof(name), равносильны sizeof(char *)
> >> и равны размеру указателя, но никак не размеру строки. Там нужно
> >> использовать strlen(ttyname).
> >
> > UINT4 rc_map2id(char *name)
> > {
> > struct map2id_s *p;
> > char ttyname[PATH_MAX];
> >
> > *ttyname = '\0';
> > if (*name != '/')
> > strcpy(ttyname, "/dev/");
> >
> > strncat(ttyname, name, sizeof(ttyname));
> >
> > for(p = map2id_list; p; p = p->next)
> > if (!strcmp(ttyname, p->name)) return p->id;
> >
> > warn("rc_map2id: can't find tty %s in map database", ttyname);
> >
> > return 0;
> > }
> >
> > Есть любители кодить на язычке Си всякие прикладные вещи.
> > И там это ещё называется "качество кода" или как-то так.
> Это не качество кода, это несоответствие занимаемой должности. :-)
Дело в том что в язычке Си нет стандартного и эффективного способа
конкатенации двух строк. То есть язычок Си подходит для низкоуровневого
системного программирования, но когда на нём хочется писать что-то более
прикладное, то это нужно быть в значительной степени святым человеком.
Я считаю это требование несправедливым -- людишки в среднем далеко не
святы. Поэтому не стоит кодить на Си прикладные вещи -- даже если то
что ты пишешь это правильно, то потом кто-нибудь сделать "патч" к твоему
коду так что у тебя волосы дыбом встанут.
Язык Си нужен для _реализации_ эффективной работы со строками, для
_реализации_ грамотной стратегии автоматического управления памятью
и т.п. Это между прочим половинчато и наблюдается в менее тривиальном
сишном коде -- например, в postfix или vsftpd есть свои мини-библиотеки
для работы со строками, а в libxml2 в базовой структуре данных
xmlExpNode имеется поле "счётчик ссылок".
Так что когда есть возможность не писать на Си, а писать на чём угодно --
на шелле, awk, перле, питоне -- стоит этой возможностью воспользоваться.
Впрочем, у меня есть и иные смутные соображения, на чём нужно писать.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20071128/645e77b3/attachment-0002.bin>
Подробная информация о списке рассылки Devel