xdgmime: Fix an invalid read
authorKalev Lember <kalevlember@gmail.com>
Sat, 21 Sep 2013 11:52:09 +0000 (13:52 +0200)
committerKalev Lember <kalevlember@gmail.com>
Fri, 4 Oct 2013 20:08:36 +0000 (22:08 +0200)
commitbe7f40185fb2ce884112c1f8a4b196ea65350466
treeadff2c33ede126a910d8532f4743eeb322a392c2
parent5aead642c29d2fcd4cc4152449eb434b52edc6af
xdgmime: Fix an invalid read

This commit factors out a function for comparing string suffixes, and at
the same time makes it safe for mime types that are shorter than the
"/*" suffix.

==25418== Invalid read of size 1
==25418==    at 0x3C6D0F9D22: __gio_xdg_cache_mime_type_subclass (xdgmimecache.c:848)
==25418==    by 0x3C6D09ED8C: g_content_type_is_a (gcontenttype.c:158)
==25418==    by 0x34D8031E95: gtk_recent_filter_filter (gtkrecentfilter.c:733)
==25418==    by 0x34D802F167: _gtk_recent_chooser_get_items (gtkrecentchooserutils.c:387)
==25418==    by 0x34D802D07F: idle_populate_func (gtkrecentchoosermenu.c:1011)
==25418==    by 0x34D7A20477: gdk_threads_dispatch (gdk.c:804)
==25418==    by 0x3C6C0492F5: g_main_context_dispatch (gmain.c:3065)
==25418==    by 0x3C6C049677: g_main_context_iterate.isra.23 (gmain.c:3712)
==25418==    by 0x3C6C04972B: g_main_context_iteration (gmain.c:3773)
==25418==    by 0x34D7FC2AF4: gtk_main_iteration (gtkmain.c:1262)
==25418==    by 0x408EB4: main (in /usr/bin/glade)

https://bugzilla.gnome.org/show_bug.cgi?id=708529
gio/xdgmime/xdgmime.c
gio/xdgmime/xdgmimecache.c