Bug 49192

Summary: баг в libcwiid
Product: Sisyphus Reporter: Егор <petruhin-enot>
Component: libcwiidAssignee: Andrey Cherepanov <cas>
Status: CLOSED WONTFIX QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: cas, iqqator, oleg
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Егор 2024-01-25 18:23:34 MSK
Запустил wmgui, нажал на кнопку connect и зажал на wiiremote 1+2 и нажал ok, программа зависла. Зависает на 

* thread #1, name = 'wmgui', stop reason = step over
    frame #0: 0x00007ffff7e89aaf libcwiid.so.1`cwiid_send_rpt(wiimote=0x0000555555737320, flags='\0', report='\x11', len=1, data=0x00007fffffffd6f7) at command.c:65:2
   62  	
   63  		buf[0] = BT_TRANS_SET_REPORT | BT_PARAM_OUTPUT;
   64  		buf[1] = report;
-> 65  		memcpy(buf+2, data, len);
   66  		if (!(flags & CWIID_SEND_RPT_NO_RUMBLE)) {реп
   67  			buf[2] |= wiimote->state.rumble;
   68  		}
видимо буфер переполняется
Comment 1 iQQator 2024-01-25 18:40:33 MSK
Шаги воспроизведения:
1.
2.
3.

Ожидаемый результат
-  Все работает

Фактический результат
- Приложение зависает на моменте подключения

Проведенный анализ
- Проверили приложение при помощи lldb и debug версии пакета
- Проставили брэкпоинты и нашли место после которого приложение не отвечает совсем

- Во время исполнения 65 строчки происходит зависание
```
* thread #1, name = 'wmgui', stop reason = step over
    frame #0: 0x00007ffff7e89aaf libcwiid.so.1`cwiid_send_rpt(wiimote=0x0000555555737320, flags='\0', report='\x11', len=1, data=0x00007fffffffd6f7) at command.c:65:2
   62    
   63      buf[0] = BT_TRANS_SET_REPORT | BT_PARAM_OUTPUT;
   64      buf[1] = report;
-> 65      memcpy(buf+2, data, len);
   66      if (!(flags & CWIID_SEND_RPT_NO_RUMBLE)) {реп
   67        buf[2] |= wiimote->state.rumble;
   68      }
``
Comment 2 Andrey Cherepanov 2024-01-29 15:19:22 MSK
Код 15-летней давности. Можете прислать патч или обратитесь к текущим мейнтейнерам: https://github.com/abstrakraft/cwiid/issues