Bug 21684 - ошибка в strfmon()
: ошибка в strfmon()
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/glibc-core)
: unstable
: all Linux
: P3 normal
Assigned To:
:
: http://sourceware.org/bugzilla/show_b...
:
:
:
  Show dependency tree
 
Reported: 2009-09-23 14:39 by
Modified: 2010-05-27 04:46 (History)


Attachments
Примерный патч для glibc-2.3.5 (972 bytes, patch)
2009-09-23 19:10, Damir Shayhutdinov
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2009-09-23 14:39:36
На 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 From 2009-09-23 15:10:04 -------
Апстрим не торопится это исправлять.

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

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