Bug 29196 - Segmentation fault при нажатии на мультимедийные клавиши
Summary: Segmentation fault при нажатии на мультимедийные клавиши
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: deadbeef-hotkeys (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Nobody's working on this, feel free to take it
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-07-17 17:57 MSK by Aleksey Borisenkov
Modified: 2013-10-13 13:47 MSK (History)
1 user (show)

See Also:


Attachments
Лог GDB (6.89 KB, text/plain)
2013-07-17 17:57 MSK, Aleksey Borisenkov
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Aleksey Borisenkov 2013-07-17 17:57:21 MSK
Created attachment 5891 [details]
Лог GDB

$ rpm -qa deadbeef\*
deadbeef-0.5.6-alt3.252d7cbf
deadbeef-hotkeys-debuginfo-0.5.6-alt3.252d7cbf
deadbeef-in-mpeg-0.5.6-alt3.252d7cbf
deadbeef-out-alsa-0.5.6-alt3.252d7cbf
deadbeef-gtk2-0.5.6-alt3.252d7cbf
deadbeef-gtk2-debuginfo-0.5.6-alt3.252d7cbf
deadbeef-in-oggvorbis-0.5.6-alt3.252d7cbf
deadbeef-hotkeys-0.5.6-alt3.252d7cbf
deadbeef-in-mpeg-debuginfo-0.5.6-alt3.252d7cbf

$ uname -mr
3.9.9-std-def-alt1 i686

При нажатии на мультимедийные клавиши (управление громкостью, включение wi-fi, камеры и т.д.) на ASUS EEEPC 1000 происходит segmentation fault.
Сбой происходит на вызове функции (скорее макроса) isupper. Из лога видно, что при этом аргументом является большое число (269025043 для клавиши увеличения громкости).
Скорее всего используется макрос из deadbeef/tools/apbuild/ctype.h, где аргумент используется в качестве индекса небольшого массива.
Проблемный код появился с последним обновлением.
Comment 1 Aleksey Borisenkov 2013-07-17 21:27:15 MSK
Впрочем, про файл deadbeef/tools/apbuild/ctype.h это лишь предположение, может быть он даже не используется, а используется стандартный ctype.h. В любом случае, для аргументов функций типа isupper и tolower стандартом предполагается возможность представления аргумента типом unsigned char или равенство EOF. В противном случае поведение не определено. так что вызывающий код должен следить за корректностью аргумента.
Comment 2 andyc@altlinux.org 2013-10-12 17:56:03 MSK
Проверьте пожалуйста новую версию. Если ошибка так же повторяется, 
то попытаюсь разобраться с кодом. Сам попробовать не могу, 
так как у меня нет клавиатуры с мультимедиа клавишами.
Comment 3 Aleksey Borisenkov 2013-10-13 13:46:43 MSK
Спасибо. В новой версии ошибка исправлена.