community/iwd: segfault after a failed handshake
found it after accidentally trying to connect to someone else's wifi network; cannot reproduce with any other network, but i can try and debug this further
gdb backtrace:
[DHCPv4] l_dhcp_client_stop:1264 Entering state: DHCP_STATE_INIT
Received Deauthentication event, reason: 15, from_ap: true
4-Way handshake failed for ifindex: 17, reason: 15
Program received signal SIGSEGV, Segmentation fault.
0x000055555558e313 in network_info_get_roam_frequencies (info=0x0, current_freq=2462, max=max@entry=5 '\005') at src/knownnetworks.c:378
378 in src/knownnetworks.c
(gdb) bt full
#0 0x000055555558e313 in network_info_get_roam_frequencies (info=0x0, current_freq=2462, max=max@entry=5 '\005') at src/knownnetworks.c:378
freqs = <optimized out>
entry = <optimized out>
#1 0x0000555555573096 in station_roam_scan_known_freqs (station=station@entry=0x7ffff7f38b30) at src/station.c:2603
info = <optimized out>
freqs = <optimized out>
r = <optimized out>
#2 0x0000555555575edd in station_neighbor_report_cb (netdev=<optimized out>, err=-107, reports=0x0, reports_len=0, user_data=0x7ffff7f38b30) at src/station.c:2643
station = 0x7ffff7f38b30
freq_set = 0x7ffff7f36730
r = <optimized out>
__func__ = "station_neighbor_report_cb"
#3 0x00005555555662e2 in netdev_connect_free (netdev=netdev@entry=0x7ffff7f359c0) at src/netdev.c:778
No locals.
#4 0x000055555556641a in netdev_connect_failed (netdev=0x7ffff7f359c0, result=NETDEV_RESULT_HANDSHAKE_FAILED, status_or_reason=<optimized out>) at src/netdev.c:844
connect_cb = 0x555555577816 <station_connect_cb>
event_filter = 0x555555577dd3 <station_netdev_event>
connect_data = 0x7ffff7f38b30
#5 0x00005555555daf07 in process_unicast (nlmsg=0x7fffffffcaa8, genl=0x555555665db0) at ell/genl.c:944
msg = 0x7ffff7f36730
request = 0x7ffff7f2e8c0
#6 received_data (io=<optimized out>, user_data=0x555555665db0) at ell/genl.c:1056
genl = 0x555555665db0
cmsg = <optimized out>
msg = {msg_name = 0x0, msg_namelen = 0, msg_iov = 0x7fffffffca40, msg_iovlen = 1, __pad1 = 0, msg_control = 0x7fffffffca88, msg_controllen = 24, __pad2 = 0, msg_flags = 0}
iov = {iov_base = 0x7fffffffcaa8, iov_len = 8192}
buf = "$\000\000\000\002\000\000\001E\000\000\000\231h\000\000\000\000\000\000$\000\000\000\032\000\005\000E\000\000\000\231h\000\000\006\000\066\000\017\000\000\000h\002\270\220\317S4\311=\037\236[h\002\270\220\317S\000\000\017\000\000\000\f\000*\000Q\027\032\354\310\345\000\000\b\000\002\000\242\020\000\000\b\000\003\000U\003\000\000\f\000\027\000\242\020\000\000\000\000\000\000\f\000\030\000U\003\000\000\000\000\000\000\f\000 \000\000\000\000\000\000\000\000\000\f\000'\000\000\000\000\000\000\000\000\000\005\000\a\000\262\000\000\000\005\000\r\000\263\000\000\000\f\000\031\000\005\000\000\000\262\000\000\000\034\000\b\000\b\000\005\000\004\001\000\000\006\000\001\000\004\001\000\000\005\000\002\000\003\000\000\000"...
control = "\024\000\000\000\000\000\000\000\016\001\000\000\003", '\000' <repeats 18 times>
bytes_read = <optimized out>
nlmsg = 0x7fffffffcaa8
nlmsg_len = 36
group = 0
#7 0x00005555555d868b in io_callback (fd=<optimized out>, events=1, user_data=0x7ffff7ffe0d0) at ell/io.c:120
io = 0x7ffff7ffe0d0
#8 0x00005555555d7b67 in l_main_iterate (timeout=<optimized out>) at ell/main.c:476
events = {{events = 1, data = {ptr = 0x7ffff7ffe900, fd = -134223616, u32 = 4160743680, u64 = 140737354131712}}, {events = 1, data = {ptr = 0x7ffff7ffe960, fd = -134223520,
u32 = 4160743776, u64 = 140737354131808}}, {events = 1, data = {ptr = 0x7ffff7ffe960, fd = -134223520, u32 = 4160743776, u64 = 140737354131808}}, {events = 1, data = {
ptr = 0x7ffff7ffe960, fd = -134223520, u32 = 4160743776, u64 = 140737354131808}}, {events = 4, data = {ptr = 0x7ffff7ffe960, fd = -134223520, u32 = 4160743776,
u64 = 140737354131808}}, {events = 1650421093, data = {ptr = 0x656b636f735f7375, fd = 1935635317, u32 = 1935635317, u64 = 7308044150666916725}}, {events = 4160272150, data = {
ptr = 0xffffea6c00007fff, fd = 32767, u32 = 32767, u64 = 18446720348310241279}}, {events = 32767, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {
ptr = 0x55563a2800000000, fd = 0, u32 = 0, u64 = 6149166284694093824}}, {events = 21845, data = {ptr = 0x7ffff7ffeec0, fd = -134222144, u32 = 4160745152,
u64 = 140737354133184}}}
data = <optimized out>
n = 0
nfds = 1
#9 0x00005555555d7c16 in l_main_run () at ell/main.c:523
timeout = <optimized out>
timeout = <optimized out>
#10 l_main_run () at ell/main.c:505
timeout = <optimized out>
#11 0x00005555555d7dc2 in l_main_run_with_signal (callback=callback@entry=0x555555563a28 <signal_handler>, user_data=user_data@entry=0x0) at ell/main.c:645
data = 0x7ffff7f50570
sigint = 0x7ffff7ffe9f0
sigterm = 0x7ffff7ffea50
result = <optimized out>
#12 0x0000555555563634 in main (argc=<optimized out>, argv=<optimized out>) at src/main.c:600
exit_status = 1
dbus = 0x7ffff7ffeec0
config_dir = <optimized out>
config_dirs = <optimized out>
i = <optimized out>
__func__ = "main"
(gdb)