Summary: | buffer overflow x86_64 | ||
---|---|---|---|
Product: | Postgres@Etersoft | Reporter: | Andrey Chichak <andrey.chichak> |
Component: | пакеты | Assignee: | Boris Savelev <boris> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | major | ||
Priority: | P4 | CC: | boris, goga, lav |
Version: | не указана | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 4030 |
Description
Andrey Chichak
2009-08-06 14:43:48 MSD
воспроизводится на обычном postgresql8.3-server на i586 postgresql8.3-server-8.3.7-alt3 postgresql8.3-8.3.7-alt3 на предыдущей версии все норм. видимо все сломал патч http://git.altlinux.org/people/misha/packages/?p=postgresql8.3.git;a=blob;f=0001-fix-buffer_overflow.patch;h=28a042a73272633871a686bdea38ea45698c94ca;hb=8ddddf0e5e0f271833e07a27a57662e501720692 Предполагаю, что поможет установка сборки для версии 5.0 в логах Postgres на i586 *** buffer overflow detected ***: postgres: postgres postgres [local] SELECT terminated ======= Backtrace: ========= /lib/libc.so.6(__fortify_fail+0x40)[0xb7d6afe0] /lib/libc.so.6[0xb7d69230] /lib/libc.so.6(__asprintf_chk+0x0)[0xb7d6ab60] postgres: postgres postgres [local] SELECT[0x827b635] postgres: postgres postgres [local] SELECT(upper+0xc6)[0x827b916] postgres: postgres postgres [local] SELECT(ExecMakeFunctionResult+0x325)[0x8182345] *** buffer overflow detected ***: postgres: postgres postgres [local] SELECT terminated ======= Backtrace: ========= /lib/libc.so.6(__fortify_fail+0x40)[0xb7dccf30] /lib/libc.so.6[0xb7dcb180] /lib/libc.so.6(__asprintf_chk+0x0)[0xb7dccab0] postgres: postgres postgres [local] SELECT[0x827b6e5] postgres: postgres postgres [local] SELECT(lower+0xc6)[0x827baa6] postgres: postgres postgres [local] SELECT(ExecMakeFunctionResult+0x325)[0x81823f5] postgres: postgres postgres [local] SELECT[0x8183acc] postgres: postgres postgres [local] SELECT(ExecProject+0x1f8)[0x817f6e8] postgres: postgres postgres [local] SELECT(ExecResult+0x7b)[0x819283b] postgres: postgres postgres [local] SELECT(ExecProcNode+0x238)[0x817ea98] postgres: postgres postgres [local] SELECT(ExecutorRun+0x2ce)[0x817c6ae] postgres: postgres postgres [local] SELECT[0x82298d1] postgres: postgres postgres [local] SELECT(PortalRun+0x1d9)[0x822aea9] postgres: postgres postgres [local] SELECT[0x82253dd] postgres: postgres postgres [local] SELECT(PostgresMain+0xefb)[0x8226feb] postgres: postgres postgres [local] SELECT[0x81f4d6f] postgres: postgres postgres [local] SELECT(PostmasterMain+0xcef)[0x81f738f] postgres: postgres postgres [local] SELECT(main+0x9cc)[0x81a3f9c] /lib/libc.so.6(__libc_start_main+0xe6)[0xb7d05b26] postgres: postgres postgres [local] SELECT[0x80809d1] в логах Postgres на i586 *** buffer overflow detected ***: postgres: postgres postgres [local] SELECT terminated ======= Backtrace: ========= /lib/libc.so.6(__fortify_fail+0x40)[0xb7d6afe0] /lib/libc.so.6[0xb7d69230] /lib/libc.so.6(__asprintf_chk+0x0)[0xb7d6ab60] postgres: postgres postgres [local] SELECT[0x827b635] postgres: postgres postgres [local] SELECT(upper+0xc6)[0x827b916] postgres: postgres postgres [local] SELECT(ExecMakeFunctionResult+0x325)[0x8182345] При подключении к слушающему процессу через gdb /usr/bin/postmaster PID: #4 0xb7d87230 in __chk_fail () from /lib/libc.so.6 #5 0xb7d88b60 in __wcstombs_chk () from /lib/libc.so.6 #6 0x0827b635 in wcstotext (str=0x8513e60, ncodes=<value optimized out>) at /usr/include/bits/stdlib.h:151 #7 0x0827b916 in upper (fcinfo=0xbfed6208) at oracle_compat.c:442 сборка от 5.0 работает. кто виноват и что делать?-) Там проблема со старым знакомым VARDATA(result): <------>/* Make workspace certainly large enough for result */ <------>result = (text *) palloc((ncodes + 1) * MB_CUR_MAX + VARHDRSZ); <------>/* Do the conversion */ <------>nbytes = wcstombs((char *) VARDATA(result), str, <------><------><------><------><------> (ncodes + 1) * MB_CUR_MAX); в функции wcstotext Боюсь, что это далеко не единственное место. Считаю причиной проблемы ошибку в компиляторе. Воспроизвести проблему отдельно не удалось. Давайте что-то сделаем, например проверим на Ubuntu. Если ошибка в компиляторе, это сразу всплывёт. есть же патч в альте, который исправляет проблему. postgresql-8.3eter-8.3.7-alt5.src.rpm |