diff options
author | Yorhel <git@yorhel.nl> | 2018-01-08 17:40:37 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2018-01-08 17:40:47 +0100 |
commit | 5d11dad2ab83429eb68553e2b970f7509cc61473 (patch) | |
tree | b96990ec008b93d6227c2eb822f4cc2d1e10850f /lib | |
parent | 782adc08cd0a1711af13239f0b10f77177354b58 (diff) |
BBCode: Fix parsing of tags in [something[url=..]
https://vndb.org/t2520.233
The old bb2html() blindly replaced [url=..] anywhere inside the matched
token, and did not require that the [url=..] was itself the token. I've
made the tag matching more strict to make sure that [something[url=..]
is now properly tokenized.
This also affects other tags, so it's likely that there's some input
that the old bb2html() would still have handled differently.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/VNDB/BBCode.pm | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/VNDB/BBCode.pm b/lib/VNDB/BBCode.pm index b95ef760..d2f3135d 100644 --- a/lib/VNDB/BBCode.pm +++ b/lib/VNDB/BBCode.pm @@ -111,11 +111,11 @@ sub parse { my @stack; while($raw =~ m{(?: - \[[^\s\]]+\] | # tag - d[1-9][0-9]*\.[1-9][0-9]*\.[1-9][0-9]* | # d#.#.# - [tdvprcs][1-9][0-9]*\.[1-9][0-9]* | # v#.# - [tdvprcsugi][1-9][0-9]* | # v# - (?:https?|ftp)://[^><"\n\s\]\[]+[\d\w=/-] # link + \[ \/? (?i: spoiler|quote|code|url|raw ) [^\s\]]* \] | # tag + d[1-9][0-9]*\.[1-9][0-9]*\.[1-9][0-9]* | # d#.#.# + [tdvprcs][1-9][0-9]*\.[1-9][0-9]* | # v#.# + [tdvprcsugi][1-9][0-9]* | # v# + (?:https?|ftp)://[^><"\n\s\]\[]+[\d\w=/-] # link )}xg) { my $token = $&; my $pre = substr $raw, $last, $-[0]-$last; |