Bug 21684

Summary: ошибка в strfmon()
Product: Sisyphus Reporter: stalker <stalker>
Component: glibc-coreAssignee: placeholder <placeholder>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: damir, erthad, glebfm, ldv, mike, php-coder, placeholder
Version: unstable   
Hardware: all   
OS: Linux   
URL: http://sourceware.org/bugzilla/show_bug.cgi?id=10600
Attachments:
Description Flags
Примерный патч для glibc-2.3.5 none

Description stalker 2009-09-23 14:39:36 MSD
На 4.0 успешно  срабатывает тесткейз (см ниже) на ошибку по поводу strfmon в glibc. На 32 битных хостах получается просто сегфолт..а вот на 64 битном куда серьёзнее - съедается вся доступная память. Аналогичные симптомы в 4.1 и в p5.


==
#include <stdio.h>
#include <monetary.h>
void main(void)
{
        double p = 1;
        char str[20];
        strfmon(str, sizeof(str), "%.1073741821i", p);
}

или оно же на php
php -r 'money_format("%.1073741821i",1);'
Comment 1 Dmitry V. Levin 2009-09-23 15:10:04 MSD
Апстрим не торопится это исправлять.

История может предствлять реальную угрозу только в том случае, когда строка формата, передаваемая функции strfmon, является непроверенным вводом.  Последнее плохо в любом случае.
Comment 2 stalker 2009-09-23 16:10:02 MSD
То что  php не показатель понятно.Но тем не менее сегодня 2 ovz-контейнера ушли в даун... там как раз используется money_format. Отключить использование функции не могу..ибо оно нужно.
Comment 3 Damir Shayhutdinov 2009-09-23 19:10:54 MSD
Created attachment 3931 [details]
Примерный патч для glibc-2.3.5

Вот с таким патчем у меня на glibc-2.3.5 (своя собственная embedded-версия) не падает.
Хотя конечно, правильнее было бы патчить __printf_fp, чтобы он не писал куда не надо.
Comment 4 Dmitry V. Levin 2010-05-27 04:46:02 MSD
По крайней мере в glibc >= 2.10.1-alt2 это уже исправлено.
В 5.1/p5 сейчас находится glibc-2.10.1-alt7.