Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

[bugfix, AS] zxbox keyboard input overflows text variable

int zx_kbd_input(char* text/*, int buflen*/)
is supplied with a single char by all callers
thats fine till we get to here in the decode routine
while (*utf8)

since it just reads till it hits a 0 its probably fine
but Address Sanitizer caught it

make c a char array of 8 bytes to ensure a NULL

Change-Id: Iad3284df34cb7451422fc96ae0bb8e159ee440b0

+8 -8
+8 -8
apps/plugins/zxbox/spmain.c
··· 133 133 134 134 /* set keys */ 135 135 static void set_keys(void){ 136 - char c; 136 + char c[8] = {0}; 137 137 int selected=0; 138 138 int result; 139 139 int menu_quit=0; ··· 151 151 case 0: 152 152 if (!zx_kbd_input((char*) &c)) 153 153 { 154 - settings.keymap[0]=c; 154 + settings.keymap[0]=c[0]; 155 155 } 156 156 break; 157 157 case 1: 158 158 if (!zx_kbd_input((char*) &c)) 159 159 { 160 - settings.keymap[1]=c; 160 + settings.keymap[1]=c[0]; 161 161 } 162 162 break; 163 163 case 2: 164 164 if (!zx_kbd_input((char*) &c)) 165 165 { 166 - settings.keymap[2]=c; 166 + settings.keymap[2]=c[0]; 167 167 } 168 168 break; 169 169 case 3: 170 170 if (!zx_kbd_input((char*) &c)) 171 171 { 172 - settings.keymap[3]=c; 172 + settings.keymap[3]=c[0]; 173 173 } 174 174 break; 175 175 case 4: 176 176 if (!zx_kbd_input((char*) &c)) 177 177 { 178 - settings.keymap[4]=c; 178 + settings.keymap[4]=c[0]; 179 179 } 180 180 break; 181 181 default: ··· 320 320 int result; 321 321 int menu_quit=0; 322 322 int exit=0; 323 - char c; 323 + char c[8] = {0}; 324 324 MENUITEM_STRINGLIST(menu, "ZXBox", NULL, 325 325 "VKeyboard", "Play/Pause Tape", 326 326 "Save quick snapshot", "Load quick snapshot", ··· 338 338 case 0: 339 339 if (!zx_kbd_input((char*) &c)) 340 340 { 341 - press_key(c); 341 + press_key(c[0]); 342 342 } 343 343 clear_kbd=1; 344 344 menu_quit=1;