[librsvg] Only apply CSS if its content type is text/css



commit 8ccf8d07dd3e279bf3ed8c4a8c44cd3320541de4
Author: Christian Persch <chpe gnome org>
Date:   Fri Jan 27 22:45:22 2012 +0100

    Only apply CSS if its content type is text/css

 rsvg-base.c   |   13 +++++++++----
 rsvg-styles.c |   15 ++++++++++++---
 2 files changed, 21 insertions(+), 7 deletions(-)
---
diff --git a/rsvg-base.c b/rsvg-base.c
index b60433f..29bbccd 100644
--- a/rsvg-base.c
+++ b/rsvg-base.c
@@ -889,16 +889,21 @@ rsvg_processing_instruction (void *ctx, const xmlChar * target, const xmlChar *
                     if (value && value[0]) {
                         guint8 *style_data;
                         gsize style_data_len;
+                        char *content_type = NULL, *css_content_type;
 
                         style_data = _rsvg_handle_acquire_data (handle,
                                                                 value,
-                                                                NULL,
+                                                                &content_type,
                                                                 &style_data_len,
                                                                 NULL);
-                        if (style_data) {
-                            rsvg_parse_cssbuffer (handle, (char *) style_data, style_data_len);
-                            g_free (style_data);
+                        if (style_data && content_type) {
+                            css_content_type = g_content_type_from_mime_type ("text/css");
+                            if (g_content_type_is_a (content_type, css_content_type))
+                                rsvg_parse_cssbuffer (handle, (char *) style_data, style_data_len);
+                            g_free (css_content_type);
+                            g_free (content_type);
                         }
+                        g_free (style_data);
                     }
                 }
             }
diff --git a/rsvg-styles.c b/rsvg-styles.c
index 581a8f2..6ceb627 100644
--- a/rsvg-styles.c
+++ b/rsvg-styles.c
@@ -1164,20 +1164,29 @@ ccss_import_style (CRDocHandler * a_this,
     CSSUserData *user_data = (CSSUserData *) a_this->app_data;
     guint8 *stylesheet_data;
     gsize stylesheet_data_len;
+    char *content_type = NULL, *css_content_type;
 
     if (a_uri == NULL)
         return;
 
     stylesheet_data = _rsvg_handle_acquire_data (user_data->ctx,
                                                  (gchar *) cr_string_peek_raw_str (a_uri),
-                                                 NULL,
+                                                 &content_type,
                                                  &stylesheet_data_len,
                                                  NULL);
     if (stylesheet_data == NULL)
         return;
 
-    rsvg_parse_cssbuffer (user_data->ctx, (const char *) stylesheet_data,
-                          stylesheet_data_len);
+    if (content_type) {
+        css_content_type = g_content_type_from_mime_type ("text/css");
+        if (g_content_type_is_a (content_type, css_content_type)) {
+            rsvg_parse_cssbuffer (user_data->ctx, (const char *) stylesheet_data,
+                                  stylesheet_data_len);
+        }
+        g_free (css_content_type);
+        g_free (content_type);
+    }
+
     g_free (stylesheet_data);
 }
 



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