Bug 56874 - buffer overflow detected при сборке документации fpc
Summary: buffer overflow detected при сборке документации fpc
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: texlive-texmf (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: viy
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-11-16 19:03 MSK by Ajrat Makhmutov
Modified: 2025-11-16 19:03 MSK (History)
1 user (show)

See Also:


Attachments
fpc ftbfs после 30-го апреля (1.32 MB, text/plain)
2025-11-16 19:03 MSK, Ajrat Makhmutov
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
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".