[devel] IA: destination buffer overflow - ppp

Dmitriy Khanzhin =?iso-8859-1?q?dimajin_=CE=C1_sandy=2Eru?=
Ср Ноя 28 18:50:15 MSK 2007


Damir Shayhutdinov пишет:
>>> 2007/11/27, Dmitry V. Levin <ldv на altlinux.org>:
>>>> On Tue, Nov 27, 2007 at 06:32:40PM +0300, Dmitriy Khanzhin wrote:
>>>>> -     strncat(ttyname, name, sizeof(ttyname));
>>> + strncat(ttyname, name, sizeof(ttyname)-1);
>>>
>>>> Автор этого кода не справился с функцией strncat.
>>>> Исправление тривиально.
>>> Фикс должен быть таким (см. выше)? Или нет?
>> Да, таким.
> Я честно говоря нечасто пользуюсь strncat, но разве третий параметр
> означает размер буфера dest? Если верить стандарту C, он означает
> максимальное количество символов из src, которое будет приклеено к
> dest. Следовательно, strncat(ttyname, name, sizeof(ttyname)-1) сделает
> следующее - к тому что уже имеется в ttyname, добавит еще максимум
> sizeof(ttyname) - 1 байт. Явное же переполнение будет, на
> strlen(ttyname) перед strncat.
> 
> Так что правильнее будет strncat(ttyname, name, sizeof(ttyname) -
> strlen(ttyname) - 1, или просто
> strlcat(ttyname, name, sizeof(ttyname)).

О как!
Огромное спасибо за подробное разъяснение.
Чес-гря, меня грызли сомнения, поэтому я тут и возникал :-) слегка.
Еще раз ВСЕМ спасибо!

-- 
Rgrds, jinn.



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