diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2011-08-23 19:59:13 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2011-08-23 19:59:13 +0000 |
commit | 85ec83636d60fe945bc3df00cb20d9a850ce7ae8 (patch) | |
tree | c39131ed6be02df95cc63ddf1cac15b8b943ed2f | |
parent | 92d355ed30be7d2210924711c0a6041b55abf32b (diff) | |
download | netsurf-85ec83636d60fe945bc3df00cb20d9a850ce7ae8.tar.gz netsurf-85ec83636d60fe945bc3df00cb20d9a850ce7ae8.tar.bz2 |
Reject attempts by a stylesheet to import itself
svn path=/trunk/netsurf/; revision=12644
-rw-r--r-- | css/css.c | 21 |
1 files changed, 15 insertions, 6 deletions
@@ -587,13 +587,22 @@ css_error nscss_handle_import(void *pw, css_stylesheet *parent, /* Create content */ c->imports[c->import_count].media = media; - nerror = hlcache_handle_retrieve(lwc_string_data(url), - 0, referer, NULL, nscss_import, ctx, - &child, accept, - &c->imports[c->import_count].c); - if (nerror != NSERROR_OK) { + + /* Avoid importing ourself */ + if (strcmp(lwc_string_data(url), referer) == 0) { + c->imports[c->import_count].c = NULL; + /* No longer require context as we're not fetching anything */ free(ctx); - return CSS_NOMEM; + ctx = NULL; + } else { + nerror = hlcache_handle_retrieve(lwc_string_data(url), + 0, referer, NULL, nscss_import, ctx, + &child, accept, + &c->imports[c->import_count].c); + if (nerror != NSERROR_OK) { + free(ctx); + return CSS_NOMEM; + } } #ifdef NSCSS_IMPORT_TRACE |