[tracker] Never send non-utf8 over DBus, never ever!
- From: Philip Van Hoof <pvanhoof src gnome org>
- To: svn-commits-list gnome org
- Subject: [tracker] Never send non-utf8 over DBus, never ever!
- Date: Thu, 16 Jul 2009 15:32:37 +0000 (UTC)
commit 2f4a4e91316d14056d8d1cb55bf4ecc587ed5733
Author: Philip Van Hoof <philip codeminded be>
Date: Thu Jul 16 17:31:38 2009 +0200
Never send non-utf8 over DBus, never ever!
src/tracker-miner-fs/modules/evolution-imap.c | 32 ++++++++++---------
src/tracker-miner-fs/modules/evolution-pop.c | 17 ++++-------
.../tracker-module-metadata-utils.c | 2 +-
3 files changed, 24 insertions(+), 27 deletions(-)
---
diff --git a/src/tracker-miner-fs/modules/evolution-imap.c b/src/tracker-miner-fs/modules/evolution-imap.c
index 2e98890..84713b6 100644
--- a/src/tracker-miner-fs/modules/evolution-imap.c
+++ b/src/tracker-miner-fs/modules/evolution-imap.c
@@ -780,15 +780,9 @@ extract_message_text (GMimeObject *object,
encoding = evolution_common_get_object_encoding (object);
- if (!encoding) {
- /* FIXME: This will break for non-utf8 text without
- * the proper content type set
- */
- g_string_append_len (body, content, (gssize) len);
- } else {
+ if (encoding) {
part_body = g_convert (content, (gssize) len, "utf8", encoding, NULL, NULL, NULL);
g_string_append (body, part_body);
-
g_free (part_body);
g_free (encoding);
}
@@ -931,17 +925,23 @@ get_message_metadata (TrackerModuleFile *file)
tracker_sparql_builder_predicate (sparql, "nmo:sentDate");
tracker_sparql_builder_object_date (sparql, &t);
- tracker_sparql_builder_predicate (sparql, "nmo:sender");
- tracker_sparql_builder_object_string (sparql, from);
+ if (g_utf8_validate (from, -1, NULL)) {
+ tracker_sparql_builder_predicate (sparql, "nmo:sender");
+ tracker_sparql_builder_object_string (sparql, from);
+ }
- tracker_sparql_builder_predicate (sparql, "nmo:messageSubject");
- tracker_sparql_builder_object_string (sparql, subject);
+ if (g_utf8_validate (subject, -1, NULL)) {
+ tracker_sparql_builder_predicate (sparql, "nmo:messageSubject");
+ tracker_sparql_builder_object_string (sparql, subject);
+ }
list = get_recipient_list (to);
for (l = list; l; l = l->next) {
- tracker_sparql_builder_predicate (sparql, "nmo:to");
- tracker_sparql_builder_object_string (sparql, l->data);
+ if (g_utf8_validate (l->data, -1, NULL)) {
+ tracker_sparql_builder_predicate (sparql, "nmo:to");
+ tracker_sparql_builder_object_string (sparql, l->data);
+ }
g_free (l->data);
}
@@ -950,8 +950,10 @@ get_message_metadata (TrackerModuleFile *file)
list = get_recipient_list (cc);
for (l = list; l; l = l->next) {
- tracker_sparql_builder_predicate (sparql, "nmo:cc");
- tracker_sparql_builder_object_string (sparql, l->data);
+ if (g_utf8_validate (l->data, -1, NULL)) {
+ tracker_sparql_builder_predicate (sparql, "nmo:cc");
+ tracker_sparql_builder_object_string (sparql, l->data);
+ }
g_free (l->data);
}
diff --git a/src/tracker-miner-fs/modules/evolution-pop.c b/src/tracker-miner-fs/modules/evolution-pop.c
index 2f35d6f..4e1169b 100644
--- a/src/tracker-miner-fs/modules/evolution-pop.c
+++ b/src/tracker-miner-fs/modules/evolution-pop.c
@@ -243,7 +243,7 @@ static gchar *
tracker_evolution_pop_file_get_text (TrackerModuleFile *file)
{
TrackerEvolutionPopFile *self;
- gchar *text, *encoding, *utf8_text;
+ gchar *text, *encoding, *utf8_text = NULL;
gboolean is_html;
self = TRACKER_EVOLUTION_POP_FILE (file);
@@ -261,17 +261,12 @@ tracker_evolution_pop_file_get_text (TrackerModuleFile *file)
encoding = evolution_common_get_object_encoding (GMIME_OBJECT (self->message));
- if (!encoding) {
- /* FIXME: could still puke on non-utf8
- * messages without proper content type
- */
- return text;
- }
-
- utf8_text = g_convert (text, -1, "utf8", encoding, NULL, NULL, NULL);
+ if (encoding) {
+ utf8_text = g_convert (text, -1, "utf8", encoding, NULL, NULL, NULL);
- g_free (encoding);
- g_free (text);
+ g_free (encoding);
+ g_free (text);
+ }
return utf8_text;
}
diff --git a/src/tracker-miner-fs/tracker-module-metadata-utils.c b/src/tracker-miner-fs/tracker-module-metadata-utils.c
index 0ecd315..ad81c55 100644
--- a/src/tracker-miner-fs/tracker-module-metadata-utils.c
+++ b/src/tracker-miner-fs/tracker-module-metadata-utils.c
@@ -815,7 +815,7 @@ tracker_module_metadata_utils_get_data (GFile *file, TrackerSparqlBuilder *sparq
time_ = g_file_info_get_attribute_uint64 (file_info, G_FILE_ATTRIBUTE_TIME_ACCESS);
tracker_sparql_builder_predicate (sparql, "nfo:fileLastAccessed");
-tracker_sparql_builder_object_date (sparql, &time_);
+ tracker_sparql_builder_object_date (sparql, &time_);
/* Check the size is actually non-zero */
if (g_file_info_get_size (file_info) > 0) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]