summaryrefslogtreecommitdiffstats
path: root/hugolib/shortcode.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2015-08-07 20:08:23 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2015-08-07 20:08:23 +0200
commit0f1fb8c7d8e404fc8e395fc7e8e751dfa7af8bb6 (patch)
tree8f568110a38a322e36c74ec5a0b594788d209089 /hugolib/shortcode.go
parent35bb72c83efbdd868af9b32af034993c245b4584 (diff)
Avoid panic in shortcode param handling
Fixes #1337
Diffstat (limited to 'hugolib/shortcode.go')
-rw-r--r--hugolib/shortcode.go20
1 files changed, 15 insertions, 5 deletions
diff --git a/hugolib/shortcode.go b/hugolib/shortcode.go
index 8b445f0db..3fa136173 100644
--- a/hugolib/shortcode.go
+++ b/hugolib/shortcode.go
@@ -271,6 +271,8 @@ func extractAndRenderShortcodes(stringToParse string, p *Page, t tpl.Template) (
}
+var shortCodeIllegalState = errors.New("Illegal shortcode state")
+
// pageTokens state:
// - before: positioned just before the shortcode start
// - after: shortcode(s) consumed (plural when they are nested)
@@ -353,8 +355,12 @@ Loop:
params[currItem.val] = pt.next().val
sc.params = params
} else {
- params := sc.params.(map[string]string)
- params[currItem.val] = pt.next().val
+ if params, ok := sc.params.(map[string]string); ok {
+ params[currItem.val] = pt.next().val
+ } else {
+ return sc, shortCodeIllegalState
+ }
+
}
} else {
// positional params
@@ -363,9 +369,13 @@ Loop:
params = append(params, currItem.val)
sc.params = params
} else {
- params := sc.params.([]string)
- params = append(params, currItem.val)
- sc.params = params
+ if params, ok := sc.params.([]string); ok {
+ params = append(params, currItem.val)
+ sc.params = params
+ } else {
+ return sc, shortCodeIllegalState
+ }
+
}
}