commit 541322b: [Minor] Fix css style reading
Vsevolod Stakhov
vsevolod at highsecure.ru
Mon Jul 19 13:21:04 UTC 2021
Author: Vsevolod Stakhov
Date: 2021-07-19 10:48:36 +0100
URL: https://github.com/rspamd/rspamd/commit/541322b5cfdd64e9fb2f74c8e5273ad90193cab4
[Minor] Fix css style reading
---
src/libserver/html/html.cxx | 42 +++++++++++++++++++++++-------------------
1 file changed, 23 insertions(+), 19 deletions(-)
diff --git a/src/libserver/html/html.cxx b/src/libserver/html/html.cxx
index beec91fac..e3a70d809 100644
--- a/src/libserver/html/html.cxx
+++ b/src/libserver/html/html.cxx
@@ -1759,10 +1759,33 @@ html_process_input(rspamd_mempool_t *pool,
html_document_state = html_document_state::body;
}
}
+
/* cur_tag here is a closing tag */
auto *next_cur_tag = html_check_balance(hc, cur_tag,
c - start, p - start + 1);
+ if (cur_tag->id == Tag_STYLE && allow_css) {
+ auto *opening_tag = cur_tag->parent;
+
+ if (opening_tag && opening_tag->content_offset < opening_tag->closing.start) {
+ auto ret_maybe = rspamd::css::parse_css(pool,
+ {start + cur_tag->content_offset,
+ cur_tag->closing.start - cur_tag->content_offset},
+ std::move(hc->css_style));
+
+ if (!ret_maybe.has_value()) {
+ auto err_str = fmt::format("cannot parse css (error code: {}): {}",
+ static_cast<int>(ret_maybe.error().type),
+ ret_maybe.error().description.value_or("unknown error"));
+ msg_info_pool ("cannot parse css: %*s",
+ (int) err_str.size(), err_str.data());
+ }
+ else {
+ hc->css_style = ret_maybe.value();
+ }
+ }
+ }
+
if (next_cur_tag != nullptr) {
cur_tag = next_cur_tag;
}
@@ -1798,25 +1821,6 @@ html_process_input(rspamd_mempool_t *pool,
parent_tag = cur_tag->parent;
g_assert(cur_tag->parent != &cur_closing_tag);
}
-
- if (cur_tag->id == Tag_STYLE && cur_tag->closing.start > cur_tag->content_offset) {
- if (allow_css) {
- auto ret_maybe = rspamd::css::parse_css(pool,
- {start + cur_tag->content_offset, cur_tag->closing.start - cur_tag->content_offset},
- std::move(hc->css_style));
-
- if (!ret_maybe.has_value()) {
- auto err_str = fmt::format("cannot parse css (error code: {}): {}",
- static_cast<int>(ret_maybe.error().type),
- ret_maybe.error().description.value_or("unknown error"));
- msg_info_pool ("cannot parse css: %*s",
- (int) err_str.size(), err_str.data());
- }
- else {
- hc->css_style = ret_maybe.value();
- }
- }
- }
} /* if cur_tag != nullptr */
state = html_text_content;
p++;
More information about the Commits
mailing list