summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2018-01-08 17:40:37 +0100
committerYorhel <git@yorhel.nl>2018-01-08 17:40:47 +0100
commit5d11dad2ab83429eb68553e2b970f7509cc61473 (patch)
treeb96990ec008b93d6227c2eb822f4cc2d1e10850f /lib
parent782adc08cd0a1711af13239f0b10f77177354b58 (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.pm10
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;