From 1c8b2e78042d774a199faa18679c22547b13420e Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 23 Feb 2019 10:56:38 +0000 Subject: www: prevent '!important' in BOFH-specified CSS CSS specified by the BOFH must never take precedence over what a user sets in userContent.css. --- lib/PublicInbox/WWW.pm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm index cbaf8845..7ed4f654 100644 --- a/lib/PublicInbox/WWW.pm +++ b/lib/PublicInbox/WWW.pm @@ -512,8 +512,9 @@ sub stylesheets_prepare ($$) { if (defined $attr->{href}) { $inline_ok = 0; } else { - open(my $fh, '<', $_) or do { - warn "failed to open $_: $!\n"; + my $fn = $_; + open(my $fh, '<', $fn) or do { + warn "failed to open $fn: $!\n"; next; }; my ($key) = (m!([^/]+?)(?:\.css)?\z!i); @@ -523,6 +524,13 @@ sub stylesheets_prepare ($$) { $ctime = sprintf('%x',(stat($fh))[10]); $local = $mini->($local); } + + # do not let BOFHs override userContent.css: + if ($local =~ /!\s*important\b/i) { + warn "ignoring $fn since it uses `!important'\n"; + next; + } + $css_map->{$key} = $local; $attr->{href} = "$upfx$key.css?$ctime"; if (defined($attr->{title})) { -- cgit v1.2.3-24-ge0c7