Comment 6 for bug 1304388

Revision history for this message
Trent Lloyd (lathiat) wrote :

This is happening to me on Xenial, crash in the same function when selecting Google Chrome from the default application list after selecting another item first (since it is currently the default when the dialog opens)

This occurred on a fresh install, seemingly after telling Chrome "yes" to setting itself as default.

We can see that mime_types = g_app_info_get_supported_types (info) returns NULL but there is no check for this condition.

Upstream patch d9f08df39cafbd1f15c510da444f8ac913cdc493 introduces a NULL check and fixes this issue.

Thread 1 "unity-control-c" received signal SIGSEGV, Segmentation fault.
default_app_changed (button=<optimised out>, self=<optimised out>) at cc-info-panel.c:816
816 for (i = 0; mime_types[i]; i++)
(gdb) bt
#0 default_app_changed (button=<optimised out>, self=<optimised out>) at cc-info-panel.c:816
<truncated>
#32 0x0000000000407503 in main (argc=1, argv=0x7fffffffdee8) at control-center.c:317
(gdb) l
814 mime_types = g_app_info_get_supported_types (info);
815
816 for (i = 0; mime_types[i]; i++)
(gdb) print mime_types
$1 = (const char * const *) 0x0

From d9f08df39cafbd1f15c510da444f8ac913cdc493 Mon Sep 17 00:00:00 2001
From: Bastien Nocera <email address hidden>
Date: Wed, 18 Feb 2015 10:10:08 +0100
Subject: [PATCH] info: Fix crash when application supports no mime-type

It seems to be possible for Firefox Nightly to set itself up as the
default x-scheme-handler/http without actually handling any mime-types.

See https://bugzilla.redhat.com/show_bug.cgi?id=1193680

https://bugzilla.gnome.org/show_bug.cgi?id=744695
---
 panels/info/cc-info-panel.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/panels/info/cc-info-panel.c b/panels/info/cc-info-panel.c
index 86513a4..ad89d54 100644
--- a/panels/info/cc-info-panel.c
+++ b/panels/info/cc-info-panel.c
@@ -854,7 +854,7 @@ default_app_changed (GtkAppChooserButton *button,
       pattern = g_pattern_spec_new (app_data->extra_type_filter);
       mime_types = g_app_info_get_supported_types (info);

- for (i = 0; mime_types[i]; i++)
+ for (i = 0; mime_types && mime_types[i]; i++)
         {
           if (!g_pattern_match_string (pattern, mime_types[i]))
             continue;
--
2.7.4