diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2015-08-07 20:08:23 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2015-08-07 20:08:23 +0200 |
commit | 0f1fb8c7d8e404fc8e395fc7e8e751dfa7af8bb6 (patch) | |
tree | 8f568110a38a322e36c74ec5a0b594788d209089 /hugolib/shortcode.go | |
parent | 35bb72c83efbdd868af9b32af034993c245b4584 (diff) |
Avoid panic in shortcode param handling
Fixes #1337
Diffstat (limited to 'hugolib/shortcode.go')
-rw-r--r-- | hugolib/shortcode.go | 20 |
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 + } + } } |