diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2010-05-27 10:34:04 +0200 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2010-05-27 10:34:04 +0200 |
commit | 004fdb221b2d2e3abeacbf42992f60ba7db5d715 (patch) | |
tree | a60b977c2edc3410af31d12e0cbaefb287d91abd /telepathy-logger/log-store-xml.c | |
parent | 1fb08e670615eb85ac0a3f6f0abb3539169324ac (diff) | |
download | telepathy-logger-004fdb221b2d2e3abeacbf42992f60ba7db5d715.tar.gz |
fix 0-byte logfile crash (fdo #28275)
Based on Robert McQueen's Empathy patch:
https://bugzilla.gnome.org/show_bug.cgi?id=619736
Diffstat (limited to 'telepathy-logger/log-store-xml.c')
-rw-r--r-- | telepathy-logger/log-store-xml.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/telepathy-logger/log-store-xml.c b/telepathy-logger/log-store-xml.c index 808d76c..cd2626b 100644 --- a/telepathy-logger/log-store-xml.c +++ b/telepathy-logger/log-store-xml.c @@ -947,20 +947,22 @@ _log_store_xml_search_in_files (TplLogStoreXml *self, gchar *filename; GMappedFile *file; gsize length; - gchar *contents; - gchar *contents_casefold; + gchar *contents = NULL; + gchar *contents_casefold = NULL; filename = l->data; file = g_mapped_file_new (filename, FALSE, NULL); - if (!file) - continue; + if (file == NULL) + goto fail; length = g_mapped_file_get_length (file); contents = g_mapped_file_get_contents (file); - contents_casefold = g_utf8_casefold (contents, length); - g_mapped_file_unref (file); + if (length == 0 || contents == NULL) + goto fail; + + contents_casefold = g_utf8_casefold (contents, length); if (strstr (contents_casefold, text_casefold)) { @@ -975,6 +977,10 @@ _log_store_xml_search_in_files (TplLogStoreXml *self, } } +fail: + if (file != NULL) + g_mapped_file_unref (file); + g_free (contents_casefold); g_free (filename); } |