| Summary: | ошибка в strfmon() | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | stalker <stalker> | ||||
| Component: | glibc-core | Assignee: | Gleb F-Malinovskiy <glebfm> | ||||
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
| Severity: | normal | ||||||
| Priority: | P3 | CC: | damir, erthad, glebfm, ldv, mike, php-coder | ||||
| Version: | unstable | ||||||
| Hardware: | all | ||||||
| OS: | Linux | ||||||
| URL: | http://sourceware.org/bugzilla/show_bug.cgi?id=10600 | ||||||
| Attachments: |
|
||||||
Апстрим не торопится это исправлять. История может предствлять реальную угрозу только в том случае, когда строка формата, передаваемая функции strfmon, является непроверенным вводом. Последнее плохо в любом случае. То что php не показатель понятно.Но тем не менее сегодня 2 ovz-контейнера ушли в даун... там как раз используется money_format. Отключить использование функции не могу..ибо оно нужно. Created attachment 3931 [details]
Примерный патч для glibc-2.3.5
Вот с таким патчем у меня на glibc-2.3.5 (своя собственная embedded-версия) не падает.
Хотя конечно, правильнее было бы патчить __printf_fp, чтобы он не писал куда не надо.
По крайней мере в glibc >= 2.10.1-alt2 это уже исправлено. В 5.1/p5 сейчас находится glibc-2.10.1-alt7. |
На 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);'