• Aleksander Morgado's avatar
    platform: avoid storing unknown netlink object types (bgo #742928) · 6c1a6d2d
    Aleksander Morgado authored
    Testing WWAN connections through a Nokia Series 40 phone, addresses of family
    AF_PHONET end up triggering an assert() in object_has_ifindex(), just because
    object_type_from_nl_object() only handles AF_INET and AF_INET6 address.
    
    In order to avoid this kind of problems, we'll try to make sure that the object
    caches kept by NM only store known object types.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=742928
    
        Connect: ppp0 <--> /dev/ttyACM0
        nm-pppd-plugin-Message: nm-ppp-plugin: (nm_phasechange): status 5 / phase 'establish'
        NetworkManager[27434]: <info>  (ppp0): new Generic device (driver: 'unknown' ifindex: 12)
        NetworkManager[27434]: <info>  (ppp0): exported as /org/freedesktop/NetworkManager/Devices/4
        [Thread 0x7ffff1ecf700 (LWP 27439) exited]
        NetworkManager[27434]: <info>  (ttyACM0): device state change: ip-config -> deactivating (reason 'user-requested') [70 110 39]
        Terminating on signal 15
        nm-pppd-plugin-Message: nm-ppp-plugin: (nm_phasechange): status 10 / phase 'terminate'
        **
        NetworkManager:ERROR:platform/nm-linux-platform.c:1534:object_has_ifindex: code should not be reached
    
        Program received signal SIGABRT, Aborted.
        0x00007ffff4692a97 in raise () from /usr/lib/libc.so.6
        (gdb) bt
        #0  0x00007ffff4692a97 in raise () from /usr/lib/libc.so.6
        #1  0x00007ffff4693e6a in abort () from /usr/lib/libc.so.6
        #2  0x00007ffff4c8d7f5 in g_assertion_message () from /usr/lib/libglib-2.0.so.0
        #3  0x00007ffff4c8d88a in g_assertion_message_expr () from /usr/lib/libglib-2.0.so.0
        #4  0x0000000000472b91 in object_has_ifindex (object=0x8a8320, ifindex=12) at platform/nm-linux-platform.c:1534
        #5  0x0000000000472bec in check_cache_items (platform=0x7fe8a0, cache=0x7fda30, ifindex=12) at platform/nm-linux-platform.c:1549
        #6  0x0000000000472de3 in announce_object (platform=0x7fe8a0, object=0x8a8c30, change_type=NM_PLATFORM_SIGNAL_REMOVED, reason=NM_PLATFORM_REASON_EXTERNAL) at platform/nm-linux-platform.c:1617
        #7  0x0000000000473dd2 in event_notification (msg=0x8a7970, user_data=0x7fe8a0) at platform/nm-linux-platform.c:1992
        #8  0x00007ffff5ee14de in nl_recvmsgs_report () from /usr/lib/libnl-3.so.200
        #9  0x00007ffff5ee1849 in nl_recvmsgs () from /usr/lib/libnl-3.so.200
        #10 0x00000000004794df in event_handler (channel=0x7fc930, io_condition=G_IO_IN, user_data=0x7fe8a0) at platform/nm-linux-platform.c:4152
        #11 0x00007ffff4c6791d in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
        #12 0x00007ffff4c67cf8 in ?? () from /usr/lib/libglib-2.0.so.0
        #13 0x00007ffff4c68022 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
        #14 0x00000000004477ee in main (argc=1, argv=0x7fffffffeaa8) at main.c:447
        (gdb) fr 4
        #4  0x0000000000472b91 in object_has_ifindex (object=0x8a8320, ifindex=12) at platform/nm-linux-platform.c:1534
        1534                    g_assert_not_reached ();
    6c1a6d2d
Name
Last commit
Last update
callouts Loading commit data...
clients Loading commit data...
contrib/fedora Loading commit data...
data Loading commit data...
docs Loading commit data...
examples Loading commit data...
include Loading commit data...
initscript Loading commit data...
introspection Loading commit data...
libnm Loading commit data...
libnm-core Loading commit data...
libnm-glib Loading commit data...
libnm-util Loading commit data...
m4 Loading commit data...
man Loading commit data...
po Loading commit data...
policy Loading commit data...
src Loading commit data...
tools Loading commit data...
vapi Loading commit data...
.dir-locals.el Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING Loading commit data...
COPYING Loading commit data...
ChangeLog Loading commit data...
MAINTAINERS Loading commit data...
Makefile.am Loading commit data...
Makefile.glib Loading commit data...
NEWS Loading commit data...
NetworkManager.pc.in Loading commit data...
README Loading commit data...
TODO Loading commit data...
autogen.sh Loading commit data...
configure.ac Loading commit data...
valgrind.suppressions Loading commit data...