[tracker] tracker-extract, msoffice-xml: Fix invalid reads



commit 05b0357b3e9d64888e35e614d29c6eac51310392
Author: Aleksander Morgado <aleksander lanedo com>
Date:   Wed Nov 24 13:16:42 2010 +0100

    tracker-extract, msoffice-xml: Fix invalid reads

 src/tracker-extract/tracker-extract-msoffice-xml.c |   38 ++++++++++----------
 1 files changed, 19 insertions(+), 19 deletions(-)
---
diff --git a/src/tracker-extract/tracker-extract-msoffice-xml.c b/src/tracker-extract/tracker-extract-msoffice-xml.c
index 79d2755..a4c2fc2 100644
--- a/src/tracker-extract/tracker-extract-msoffice-xml.c
+++ b/src/tracker-extract/tracker-extract-msoffice-xml.c
@@ -673,6 +673,7 @@ msoffice_xml_get_file_type (const gchar *uri)
 	GFile *file;
 	GFileInfo *file_info;
 	const gchar *mime_used;
+	MsOfficeXMLFileType file_type;
 
 	/* Get GFile from uri... */
 	file = g_file_new_for_uri (uri);
@@ -693,30 +694,29 @@ msoffice_xml_get_file_type (const gchar *uri)
 		return FILE_TYPE_INVALID;
 	}
 
-	/* Get Content Type from GFileInfo */
+	/* Get Content Type from GFileInfo. The constant string will be valid
+	 * as long as the file info reference is valid */
 	mime_used = g_file_info_get_content_type (file_info);
-	g_object_unref (file_info);
-
-	/* MsOffice Word document? */
 	if (g_ascii_strcasecmp (mime_used, "application/vnd.openxmlformats-officedocument.wordprocessingml.document") == 0) {
-		return FILE_TYPE_DOCX;
-	}
-
-	/* MsOffice Powerpoint document? */
-	if (g_ascii_strcasecmp (mime_used, "application/vnd.openxmlformats-officedocument.presentationml.presentation") == 0) {
-		return FILE_TYPE_PPTX;
-	}
-	if (g_ascii_strcasecmp (mime_used, "application/vnd.openxmlformats-officedocument.presentationml.slideshow") == 0) {
-		return FILE_TYPE_PPSX;
+		/* MsOffice Word document */
+		file_type = FILE_TYPE_DOCX;
+	} else if (g_ascii_strcasecmp (mime_used, "application/vnd.openxmlformats-officedocument.presentationml.presentation") == 0) {
+		/* MsOffice Powerpoint document */
+		file_type = FILE_TYPE_PPTX;
+	} else if (g_ascii_strcasecmp (mime_used, "application/vnd.openxmlformats-officedocument.presentationml.slideshow") == 0) {
+		/* MsOffice Powerpoint (slideshow) document */
+		file_type = FILE_TYPE_PPSX;
+	} else if (g_ascii_strcasecmp (mime_used, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") == 0) {
+		/* MsOffice Excel document */
+		file_type = FILE_TYPE_XLSX;
+	} else {
+		g_message ("Mime type was not recognised:'%s'", mime_used);
+		file_type = FILE_TYPE_INVALID;
 	}
 
-	/* MsOffice Excel document? */
-	if (g_ascii_strcasecmp (mime_used, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") == 0) {
-		return FILE_TYPE_XLSX;
-	}
+	g_object_unref (file_info);
 
-	g_message ("Mime type was not recognised:'%s'", mime_used);
-	return FILE_TYPE_INVALID;
+	return file_type;
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]