wpa_supplicant crashes when creating p2p interface because of name length

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

sorry if this has been posted/addressed before, I did not find it in a quick 
search of the mailing list logs.

There seems to be a problem ([1], [2]) where creating a p2p interface will 
crash wpa_supplicant if the resulting interface name is larger than the limit 
of 15 chars.

This did not happen when interface names were usually short (wlan0, wlo0...), 
but unfortunately systemd, which is widely used now, creates longer interface 
names ([3]). 
For me (I opened [2]) and apparently for several other people this results in 
a combination that is longer than the limit (f.e.p2p-dev-wlp0s20f3). This 
causes wpa_supplicant to segfault.

I believe wpa_supplicant should at least check the interface length, and print 
an error message. 
In my opinion it should also somehow create an interface name that is small 
enough, but I don't know how to best implement this. Maybe a simple truncate, 
maybe some suffix to avoid duplicates?

I attached a backtrace , but sadly I cannot extract a lot of information from 
it, because the actual segfault seems to be in an unrelated part. 

I posted the relevant parts of the dmesg log as well as my system info in [2], 
in case this helps.

Best regards, 
Malte / iggne

[1]: https://github.com/albfan/miraclecast/issues/285
[2]: https://github.com/benzea/gnome-network-displays/issues/70
[3]: https://www.freedesktop.org/wiki/Software/systemd/
PredictableNetworkInterfaceNames/
Program received signal SIGSEGV, Segmentation fault.
offchannel_pending_action_tx (wpa_s=wpa_s@entry=0x0) at offchannel.c:459
459     offchannel.c: No such file or directory.

(gdb) bt full 
#0  offchannel_pending_action_tx (wpa_s=wpa_s@entry=0x0) at offchannel.c:459
No locals.
#1  0x0000558fd2c07b09 in wpas_p2p_clear_pending_action_tx (wpa_s=wpa_s@entry=0x0) at p2p_supplicant.c:6805
No locals.
#2  0x0000558fd2c0dca6 in wpas_p2p_find (wpa_s=0x0, timeout=timeout@entry=30, type=type@entry=P2P_FIND_START_WITH_FULL, num_req_dev_types=num_req_dev_types@entry=0, req_dev_types=req_dev_types@entry=0x0, dev_id=dev_id@entry=0x0, search_delay=0, seek_cnt=0 '\000', seek_string=0x0, freq=0) at p2p_supplicant.c:6827
No locals.
#3  0x0000558fd2d18620 in wpas_dbus_handler_p2p_find (message=0x558fd3d64be0, wpa_s=<optimized out>) at dbus/dbus_new_handlers_p2p.c:149
        entry = {type = 0, array_type = 0, key = 0x0, {str_value = 0x0, byte_value = 0 '\000', bool_value = 0, int16_value = 0, uint16_value = 0, int32_value = 0, uint32_value = 0, int64_value = 0, uint64_value = 0, double_value = 0, bytearray_value = 0x0, strarray_value = 0x0, binarray_value = 0x0}, array_len = 0}
        reply = 0x0
        iter = {dummy1 = 0x558fd3d64be0, dummy2 = 0x7ffc00600000, dummy3 = 108, dummy4 = 0, dummy5 = -740930584, dummy6 = 21903, dummy7 = 141, dummy8 = 0, dummy9 = -740930512, dummy10 = 21903, dummy11 = 0, pad1 = 0, pad2 = 0x7f55e6d75e00, pad3 = 0x0}
        iter_dict = {dummy1 = 0x558fd3d64be0, dummy2 = 0x7ffc00600000, dummy3 = 2156, dummy4 = 0, dummy5 = -740930584, dummy6 = 21903, dummy7 = 146, dummy8 = 0, dummy9 = -740930512, dummy10 = 21903, dummy11 = 28, pad1 = 0, pad2 = 0x7f55e6d75c80, pad3 = 0x8}
        timeout = 30
        type = P2P_FIND_START_WITH_FULL
        num_req_dev_types = 0
        i = <optimized out>
        req_dev_types = 0x0
        freq = 0
#4  0x0000558fd2d09bf1 in msg_method_handler (obj_dsc=0x558fd3d941f0, obj_dsc=0x558fd3d941f0, message=0x558fd3d64be0) at dbus/dbus_new_helpers.c:355
        method_dsc = 0x558fd2e58bb8 <wpas_dbus_interface_methods+2040>
        method = <optimized out>
        msg_interface = <optimized out>
        method_dsc = <optimized out>
        method = <optimized out>
        msg_interface = <optimized out>
#5  message_handler (connection=0x558fd3d5f8a0, message=0x558fd3d64be0, user_data=0x558fd3d941f0) at dbus/dbus_new_helpers.c:411
        obj_dsc = 0x558fd3d941f0
        method = <optimized out>
        path = <optimized out>
        msg_interface = <optimized out>
        reply = <optimized out>
#6  0x00007f55e6d4bc8d in ?? () from /lib/x86_64-linux-gnu/libdbus-1.so.3
No symbol table info available.
#7  0x00007f55e6d3c7e4 in dbus_connection_dispatch () from /lib/x86_64-linux-gnu/libdbus-1.so.3
No symbol table info available.
#8  0x0000558fd2d16b78 in dispatch_data (con=0x558fd3d5f8a0) at dbus/dbus_common.c:37
No locals.
#9  0x0000558fd2d17008 in process_watch (priv=0x558fd3d5e9a0, priv=0x558fd3d5e9a0, type=EVENT_TYPE_READ, watch=0x558fd3d5f290) at dbus/dbus_common.c:73
No locals.
#10 process_watch_read (sock=<optimized out>, eloop_ctx=0x558fd3d5e9a0, sock_ctx=0x558fd3d5f290) at dbus/dbus_common.c:89
No locals.
#11 0x0000558fd2bd0e2f in eloop_sock_table_dispatch (table=table@entry=0x558fd2e5dd88 <eloop+8>, fds=fds@entry=0x558fd3d67120) at ../src/utils/eloop.c:600
        i = 0
#12 0x0000558fd2bd1881 in eloop_sock_table_dispatch (fds=0x558fd3d67120, table=0x558fd2e5dd88 <eloop+8>) at ../src/utils/eloop.c:1223
        i = <optimized out>
        __d = <optimized out>
#13 eloop_run () at ../src/utils/eloop.c:1223
        timeout = <optimized out>
        rfds = 0x558fd3d67120
        wfds = 0x558fd3d671b0
        efds = 0x558fd3d67240
        _tv = {tv_sec = 0, tv_usec = 269169}
        res = 1
        tv = <optimized out>
        now = {sec = 94332, usec = 813566}
#14 0x0000558fd2d34273 in wpa_supplicant_run (global=0x558fd3d5e780) at wpa_supplicant.c:6533
        wpa_s = <optimized out>
#15 0x0000558fd2bbcbea in main (argc=<optimized out>, argv=<optimized out>) at main.c:392
        c = <optimized out>
        i = <optimized out>
        ifaces = 0x558fd3d5d850
        iface = 0x558fd3d5d850
        iface_count = 1
        exitcode = <optimized out>
        params = {daemonize = 0, wait_for_monitor = 0, pid_file = 0x0, wpa_debug_level = 3, wpa_debug_show_keys = 0, wpa_debug_timestamp = 0, ctrl_interface = 0x0, ctrl_interface_group = 0x0, dbus_ctrl_interface = 1, wpa_debug_file_path = 0x0, wpa_debug_syslog = 1, wpa_debug_tracing = 0, override_driver = 0x0, override_ctrl_interface = 0x7ffc052a8f22 "/run/wpa_supplicant", entropy_file = 0x0, conf_p2p_dev = 0x0}
        global = 0x558fd3d5e780
_______________________________________________
Hostap mailing list
Hostap@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/hostap

[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux