[librsvg] Only apply CSS if its content type is text/css
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg] Only apply CSS if its content type is text/css
- Date: Sat, 28 Jan 2012 17:34:36 +0000 (UTC)
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]