Bug 29847

Summary: Ошибка в драйвере bcmxcp
Product: Sisyphus Reporter: Alex Moskalenko <mav>
Component: nut-serverAssignee: Michael Shigorin <mike>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: mike
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
Патч с исправлением none

Description Alex Moskalenko 2014-02-25 14:07:46 MSK
При работе драйвера bcmxcp с ИБП Eaton Powerware 9155 получаем segmentation fault. Отладка драйвера показала, что при получении общей информации об ИБП в функции upsdrv_initinfo() разработчики получают номера версий firmware для различных компонентов ИБП, и при этом сопоставляют его с заранее определенным массивом строк const char *cpu_name[5]. Данный ИБП сообщает о наличии 8 записей о версиях firmware. В цикле их расшифровки неправильно указано условие выхода из цикла (while ((len > 0) && (ncpu <= 5))), что приводит к обращению к несуществующему элементу cpu_name[5] и, соответственно, sigsegv. Приложенный патч исправляет эту проблему, изменяя условие на ((len > 0) && (ncpu <= 4)).

PS Возможно, есть смысл заканчивать цикл только по len > 0, а вместо неопределенных (и, возможно, специфичных для каждой модели ИБП) наименований firmware подставлять что-то типа "UNKN:".
Comment 1 Alex Moskalenko 2014-02-25 14:08:37 MSK
Created attachment 6046 [details]
Патч с исправлением
Comment 2 Michael Shigorin 2014-04-23 19:10:50 MSK
Н-да, опять баг с патчем висит открытым, безобразие.
Comment 3 Repository Robot 2014-04-23 19:21:17 MSK
nut-2.6.5-alt5 -> sisyphus:

* Wed Apr 23 2014 Michael Shigorin <mike@altlinux> 2.6.5-alt5
- added bcmxcp patch by Alex Moskalenko (closes: #29847)