[devel] dvblast-2.2-alt4: Sisyphus/x86_64 test rebuild failed

Ivan A. Melnikov iv на altlinux.org
Вт Окт 2 10:16:08 MSK 2012


Посмотрел на код. По-моему, как-то так:

On Tue, 2 Oct 2012 14:13:46 +0900 (IRKT)
Alexei Takaseev <alexei на taf.ru> wrote:
[...]
> >     inlined from 'TPDUSend.constprop.35' at en50221.c:318:19,

Тут выделяется буфер размером MAX_TPDU_SIZE (4096) байт, затем туда
пишется заголовок (3 каких-то байта, хитро закодированная длинна
данных i_lenght, ещё один байт) и данные размером i_length.

> >     inlined from 'SPDUSend' at en50221.c:500:26:

Тут в ту функцию выше передаются данные размером MAX_TPDU_DATA (4096
- 4) байт.

> > /usr/include/bits/string3.h:51:3: error: call to
> > __builtin___memcpy_chk will always overflow destination buffer

Тут компилятор справедливо замечает, что

	3 + (длина поля size) + 1 + (4096 - 4) > 4096

на размер хитро	закодированной длины (в нашем случае 3 байта).

> > make: *** [en50221.o] Error 1
> > make: Leaving directory `/usr/src/RPM/BUILD/dvblast-2.2'
> > error: Bad exit status from /usr/src/tmp/rpm-tmp.33481 (%build)
> 
> Подскажите, пожалуйста, куда копать в данном случае? На i586 сборка
> проходит нормально.

Нужно знать особенности формата. Можно рискнуть уменьшить MAX_TPDU_DATA
ещё на 3 (откомпилироваться помогает), но не знаю, поймут ли это те, кто
эти данные читает.

-- 
WBR,
Ivan A. Melnikov


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