Bug 56874

Summary: buffer overflow detected при сборке документации fpc
Product: Sisyphus Reporter: Ajrat Makhmutov <rauty>
Component: texlive-texmfAssignee: viy <viy>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: viy
Version: unstable   
Hardware: x86_64   
OS: Linux   
Attachments:
Description Flags
fpc ftbfs после 30-го апреля none

Description Ajrat Makhmutov 2025-11-16 19:03:03 MSK
Created attachment 20090 [details]
fpc ftbfs после 30-го апреля

Скорее всего после перехода на gcc14 что-то поменялось.
fpc упал в ftbfs 30-го апреля, лог сборки во вложении,
возможно после https://packages.altlinux.org/ru/tasks/382855/

*** buffer overflow detected ***: terminated

Program received signal SIGABRT, Aborted.
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
44            return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO (ret) : 0;
(gdb) backtrace
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1  0x00007ffff7e36833 in __pthread_kill_internal (threadid=<optimized out>, signo=6) at pthread_kill.c:78
#2  0x00007ffff7de15e6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x00007ffff7dc98fa in __GI_abort () at abort.c:79
#\4  0x00007ffff7dca746 in __libc_message_impl (fmt=fmt@entry=0x7ffff7f5116f "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:134
#5  0x00007ffff7ec0dbb in __GI___fortify_fail (msg=msg@entry=0x7ffff7f51156 "buffer overflow detected") at fortify_fail.c:24
#6  0x00007ffff7ec0756 in __GI___chk_fail () at chk_fail.c:28
#7  0x00007ffff7ec21c6 in __GI___strcpy_chk (dest=0x555555f506f0 "", src=src@entry=0x555555f3bfe0 "l", destlen=destlen@entry=1) at strcpy_chk.c:30
#8  0x0000555555558fcd in strcpy (__dest=<optimized out>, __src=0x555555f3bfe0 "l") at /usr/include/bits/string_fortified.h:81
#9  main (argc=<optimized out>, argv=<optimized out>) at ./tex4ht-c.tex:10251

В ./texlive-20220321-texmf/texmf-dist/source/generic/tex4ht/tex4ht-c.tex:10251
такой блок кода:
\<record new tex4ht font\><<<
html_font = fonts_n? (struct html_font_rec *) r_alloc((void *) html_font,
                 (size_t) ((fonts_n+1) * sizeof(struct html_font_rec) ))                                                                                                            
                   :  m_alloc(struct html_font_rec, 1);
html_font[fonts_n].name = m_alloc(char, font_name_n + 1);
(IGNORED) strcpy((char *) html_font[fonts_n].name, (char *) new_font_name);
html_font[fonts_n].i    = font_tbl_size;
fonts_n++;
>>>

Из backtrace видно, что ошибка происходит в strcpy:
Копируется строка "l" в буфер размером всего 1 байт.
Судя по коду, проблема в том, что font_name_n вычисляется
неправильно и равно 0, когда должно быть хотя бы 1 для строки "l".