[devel] firebird x86 error will always overflow destination buffer HELP!

Dmitry V. Levin ldv на altlinux.org
Чт Апр 4 17:07:57 MSK 2013


On Thu, Apr 04, 2013 at 03:07:28PM +0400, Aleksey Novodvorsky wrote:
> Так как бага только на i586, то, возможно, стоит уменьшить или снять оптимизацию
> Rgrds, Алексей

Очень мило.  Отключение _FORTIFY_SOURCE - это не отключение ошибки, а
всего лишь отключение проверки ошибки.  Ошибка при этом никуда не денется.
Фраза "will always overflow destination buffer" означает, что, по мнению
gcc, если исполнение кода дойдет до указанной точки, то destination buffer
overflow произойдет наверняка.

> 4 апреля 2013 г., 15:01 пользователь Boris Savelev
> <boris.savelev на gmail.com> написал:
> > поторопился я. ошибка всё равно. только теперь на memcpy (
> >
> > 4 апреля 2013 г., 14:04 пользователь Boris Savelev
> > <boris.savelev на gmail.com> написал:
> >> компилируется... спасибо)
> >>
> >> 4 апреля 2013 г., 11:42 пользователь Damir Shayhutdinov
> >> <damir на altlinux.org> написал:
> >>> В коде похоже есть ошибка.
> >>>
> >>> Можно вот так подправить:
> >>>
> >>> 1115                                                         if (p1 < q &&
> >>> ((d = *p1++) == '_' || d == '$'))
> >>> 1116
> >>> strncpy(q1 - 4, "isc", 3);
> >>> 1117                                                         else
> >>> 1118                                                                 *q1++ =
> >>> d;
> >>>
> >>> заменить на
> >>>
> >>> if (p1 < q)
> >>> {
> >>>       if ((d = *p1++) == '_' || d == '$')
> >>>            memcpy(q1 - 4, "isc", 3);
> >>>       else
> >>>            *q1++ = d;
> >>> }
> >>>
> >>> Правда я не уверен, что при этом проблема не исчезнет. Если не исчезнет,
> >>> можно еще в строчке 1073 увеличить размер line с 256 до 260.
> >>>
> >>>
> >>> 2013/4/4 Boris Savelev <boris на altlinux.org>
> >>>>
> >>>> Привет!
> >>>> Помогите мне, пожалуйста, собрать firebird.
> >>>> Ошибка:
> >>>> In function 'char* strncpy(char*, const char*, size_t)',
> >>>>     inlined from 'void gen_blr(void*, SSHORT, const char*)' at
> >>>> ../src/gpre/c_cxx.cpp:1116:34:
> >>>> /usr/include/bits/string3.h:120:71: error: call to char*
> >>>> __builtin___strncpy_chk(char*, const char*, unsigned int, unsigned
> >>>> int) will always overflow destination buffer
> >>>>
> >>>> Лог:
> >>>> http://git.altlinux.org/tasks/93764/build/100/i586/log
> >>>>
> >>>> Код:
> >>>>
> >>>> http://git.altlinux.org/people/boris/packages/?p=firebird.git;a=blob;f=Firebird/src/gpre/c_cxx.cpp;h=806bcac4ed69b8d0963c69c16f6b2c9fbd6b7852;hb=HEAD#l1116

-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20130404/a3059896/attachment.bin>


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