about summary refs log tree commit homepage
path: root/lib/PublicInbox/Hval.pm
diff options
authorEric Wong <e@yhbt.net>2020-02-15 09:46:39 +0000
committerEric Wong <e@yhbt.net>2020-02-16 00:06:48 +0000
commit1fee6f86d7ee78161cc48a00232654f13a14bb88 (patch)
tree4bc0018a153537cd3005bf87fb5fec7b6dde17d3 /lib/PublicInbox/Hval.pm
parent4c4de0022f40e09c4db7665cc573a3cb94f753a3 (diff)
We need to escape ampersands (and some other characters for href
attributes), so introduce a `mid_href' sub to do just that.

'<', '>' and '"'  were always escaped, so there's no risk of tag
or attribute injection, but creative Message-IDs could cause
confusion for some parsers and generate invalid URLs.

Start getting rid of the bloated, over-engineered OO Hval API
while we're at it, I only noticed this bug because I started
killing off Hval->new* callers.
Diffstat (limited to 'lib/PublicInbox/Hval.pm')
1 files changed, 2 insertions, 5 deletions
diff --git a/lib/PublicInbox/Hval.pm b/lib/PublicInbox/Hval.pm
index 2e883f81..40c97da4 100644
--- a/lib/PublicInbox/Hval.pm
+++ b/lib/PublicInbox/Hval.pm
@@ -10,7 +10,7 @@ use Encode qw(find_encoding);
 use PublicInbox::MID qw/mid_clean mid_escape/;
 use base qw/Exporter/;
 our @EXPORT_OK = qw/ascii_html obfuscate_addrs to_filename src_escape
-                to_attr prurl/;
+                to_attr prurl mid_href/;
 my $enc_ascii = find_encoding('us-ascii');
 # safe-ish acceptable filename pattern for portability
@@ -27,10 +27,7 @@ sub new {
         }, $class;
-sub new_msgid {
-        my ($class, $msgid) = @_;
-        $class->new($msgid, mid_escape($msgid));
+sub mid_href { ascii_html(mid_escape($_[0])) }
 # some of these overrides are standard C escapes so they're
 # easy-to-understand when rendered.