WayfireWM / wayfire

A modular and extensible wayland compositor
https://wayfire.org/
MIT License
2.36k stars 175 forks source link

window rule Unexpected symbol will crash wayfire #2200

Open killown opened 6 months ago

killown commented 6 months ago

using the following syntax: on created if "telegram" contains app_id then snap right, not sure if this is specific with the syntax but this is what I tried, start telegram and at the same time save wayfire.ini, this will update wayfire config while telegram is still starting

Malformed input: on created if "telegram" contains app_id then snap right ^ Condition parser error. Unexpected symbol. DD 11-03-24 12:54:28.988 - [plugins/window-rules/window-rules.cpp:189] Registering on created if "telegram" contains app_id then assign_workspace 2 0 Malformed input: on created if "telegram" contains app_id then assign_workspace 2 0 ^ Condition parser error. Unexpected symbol. DD 11-03-24 12:54:28.988 - [plugins/ipc/ipc.cpp:152] New IPC client, fd 169 ================================================================= ==1011==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7649f3895980 at pc 0x7649f8a818df bp 0x7fffcbc0af10 sp 0x7fffcbc0a6b8 READ of size 1 at 0x7649f3895980 thread T0 #0 0x7649f8a818de in __interceptor_strlen /usr/src/debug/gcc/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:461 #1 0x7649f3df4265 in std::char_traits::length(char const*) /usr/include/c++/13.2.1/bits/char_traits.h:409 #2 0x7649f3df4265 in bool std::operator==, std::allocator >(std::__cxx11::basic_string, std::allocator > const&, char const*) /usr/include/c++/13.2.1/bits/basic_string.h:3718 #3 0x7649f3df4265 in handle_config_updated ../src/default-config-backend.cpp:70 #4 0x7649f899fae1 in wl_event_loop_dispatch (/usr/lib/libwayland-server.so.0+0xbae1) (BuildId: d943a6a6069d1b5293dad7c842d26ce407ebdd19) #5 0x7649f89a02d6 in wl_display_run (/usr/lib/libwayland-server.so.0+0xc2d6) (BuildId: d943a6a6069d1b5293dad7c842d26ce407ebdd19) #6 0x627c4c2d7ae0 in main ../src/main.cpp:422 #7 0x7649f7e43ccf (/usr/lib/libc.so.6+0x25ccf) (BuildId: c0caa0b7709d3369ee575fcd7d7d0b0fc48733af) #8 0x7649f7e43d89 in __libc_start_main (/usr/lib/libc.so.6+0x25d89) (BuildId: c0caa0b7709d3369ee575fcd7d7d0b0fc48733af) #9 0x627c4c2dcce4 in _start (/usr/bin/wayfire+0xf6ce4) (BuildId: 8666a1ff3c8d3b8533d153d63521436f1a963a63) Address 0x7649f3895980 is located in stack of thread T0 at offset 2432 in frame #0 0x7649f3df35ff in handle_config_updated ../src/default-config-backend.cpp:33 This frame has 68 object(s): [48, 49) 'ev' (line 85) [64, 65) '' [80, 81) '' [96, 97) '' [112, 113) '' [128, 129) '' [144, 145) '' [160, 161) '' [176, 177) '' [192, 193) '' [208, 209) '' [224, 225) '' [240, 241) '' [256, 257) '' [272, 273) '' [288, 289) '' [304, 305) '' [320, 321) '' [336, 337) '' [352, 353) '__alloc' [368, 369) '__alloc' [384, 385) '' [400, 401) '' [416, 417) '' [432, 440) '__res' (line 32) [464, 472) 'data' (line 32) [496, 504) '' [528, 536) '' [560, 568) '__pos' [592, 600) '' [624, 632) '' [656, 664) '' [688, 696) 'it' [720, 728) 'it' [752, 760) '' [784, 792) '' [816, 824) '' [848, 856) '' [880, 888) '' [912, 920) '' [944, 952) '__beg' [976, 984) '__cbeg' [1008, 1016) '' [1040, 1048) '' [1072, 1080) '' [1104, 1112) '' [1136, 1144) '__result' [1168, 1176) '' [1200, 1208) '' [1232, 1240) '' [1264, 1272) '' [1296, 1304) '' [1328, 1336) '' [1360, 1376) '' [1392, 1408) '' [1424, 1440) '' [1456, 1472) '__node' [1488, 1512) '__last' [1552, 1576) '' [1616, 1648) 'cfg_file_basename' (line 54) [1680, 1712) '' [1744, 1776) '' [1808, 1840) '' [1872, 1904) '' [1936, 1968) '' [2000, 2040) '' [2080, 2120) '' [2160, 2432) 'buf' (line 39) <== Memory access at offset 2432 overflows this variable HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork (longjmp and C++ exceptions *are* supported) SUMMARY: AddressSanitizer: stack-buffer-overflow /usr/src/debug/gcc/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:461 in __interceptor_strlen Shadow bytes around the buggy address: 0x7649f3895700: f2 f2 00 00 00 00 f2 f2 f2 f2 00 00 00 00 f2 f2 0x7649f3895780: f2 f2 00 00 00 00 f2 f2 f2 f2 f8 f8 f8 f8 f8 f2 0x7649f3895800: f2 f2 f2 f2 f8 f8 f8 f8 f8 f2 f2 f2 f2 f2 00 00 0x7649f3895880: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x7649f3895900: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 =>0x7649f3895980:[f3]f3 f3 f3 f3 f3 f3 f3 00 00 00 00 00 00 00 00 0x7649f3895a00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x7649f3895a80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x7649f3895b00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x7649f3895b80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x7649f3895c00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac Intra object redzone: bb ASan internal: fe Left alloca redzone: ca Right alloca redzone: cb ==1011==ABORTING (EE) failed to read Wayland events: Broken pipe
killown commented 5 months ago

didn't you fix that already with json utf-8 thing

ammen99 commented 5 months ago

This doesn't seem json related.