summaryrefslogtreecommitdiff
path: root/telepathy-logger/log-store-xml.c
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2010-05-27 10:34:04 +0200
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2010-05-27 10:34:04 +0200
commit004fdb221b2d2e3abeacbf42992f60ba7db5d715 (patch)
treea60b977c2edc3410af31d12e0cbaefb287d91abd /telepathy-logger/log-store-xml.c
parent1fb08e670615eb85ac0a3f6f0abb3539169324ac (diff)
downloadtelepathy-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.c18
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);
}