aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBen Chan <benchan@chromium.org>2013-04-10 12:06:13 -0700
committerDan Williams <dcbw@redhat.com>2013-04-10 15:04:36 -0500
commitbe8c8a99bb29d340720715874696bc1fae11d331 (patch)
tree873cbc4d002be8ba620456abb6724019e9e26db7 /src
parent33a572b9d00128492af2d3890e4c6aeec400b465 (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')
-rw-r--r--src/mm-device.c2
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;