diff options
author | Ben Chan <benchan@chromium.org> | 2013-04-10 12:06:13 -0700 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2013-04-10 15:04:36 -0500 |
commit | be8c8a99bb29d340720715874696bc1fae11d331 (patch) | |
tree | 873cbc4d002be8ba620456abb6724019e9e26db7 /src/mm-device.c | |
parent | 33a572b9d00128492af2d3890e4c6aeec400b465 (diff) |
device: handle NULL returned by g_udev_device_get_driver() gracefully
This patch fixes a crash in mm_device_grab_port() when doing a string
comparison on a NULL returned by g_udev_device_get_driver().
Thread 0 *CRASHED* ( SIGSEGV @ 0x00000000 )
0x76b760b4 [libc-2.15.so] - strcmp.c:38 strcmp
0x76c66a7d [libglib-2.0.so.0.3200.4] - ghash.c:1704 g_str_equal
0x76ee0e5d [ModemManager] - mm-device.c:147 mm_device_grab_port
0x76edf9d9 [ModemManager] - mm-manager.c:313 device_added
0x76e95b2d [libgudev-1.0.so.0.1.0] - extras/gudev/gudevmarshal.c:84 g_udev_marshal_VOID__STRING_OBJECT
0x76d1fb2b [libgobject-2.0.so.0.3200.4] - gclosure.c:777 g_closure_invoke
0x76d2b88b [libgobject-2.0.so.0.3200.4] - gsignal.c:3551 signal_emit_unlocked_R
0x76d313c5 [libgobject-2.0.so.0.3200.4] - gsignal.c:3300 g_signal_emit_valist
0x76d31569 [libgobject-2.0.so.0.3200.4] - gsignal.c:3356 g_signal_emit
0x76e93bdd [libgudev-1.0.so.0.1.0] - extras/gudev/gudevclient.c:105 monitor_event
0x76c9beb7 [libglib-2.0.so.0.3200.4] - giounix.c:166 g_io_unix_dispatch
0x76c714c1 [libglib-2.0.so.0.3200.4] - gmain.c:2539 g_main_context_dispatch
0x76c71745 [libglib-2.0.so.0.3200.4] - gmain.c:3146 g_main_context_iterate
0x76c71a59 [libglib-2.0.so.0.3200.4] - gmain.c:3340 g_main_loop_run
0x76ede8ed [ModemManager] - main.c:142 main
0x76b35f79 [libc-2.15.so] - libc-start.c:226 __libc_start_main
0x76edea49 [ModemManager] + 0x00014a49
0x76eb4eab [ld-2.15.so] + 0x0000aeab
Diffstat (limited to 'src/mm-device.c')
-rw-r--r-- | src/mm-device.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mm-device.c b/src/mm-device.c index 78004395..a2755a71 100644 --- a/src/mm-device.c +++ b/src/mm-device.c @@ -145,7 +145,7 @@ get_device_ids (GUdevDevice *device, success = TRUE; goto out; } else if (g_str_has_prefix (parent_subsys, "usb") && - g_str_equal (g_udev_device_get_driver (parent), "qmi_wwan")) { + !g_strcmp0 (g_udev_device_get_driver (parent), "qmi_wwan")) { /* Need to look for vendor/product in the parent of the QMI device */ GUdevDevice *qmi_parent; |