From 9e98d6cd5280c477f1720f3ea1000b1f4f1309b3 Mon Sep 17 00:00:00 2001 From: Mateusz Gajewski Date: Wed, 30 Nov 2016 05:24:12 +0100 Subject: [PATCH] Fix for #1164 - allow only one header per line (#1280) * Fix for #1164 - allow only one header per line * Include original reporter case --- caddyhttp/header/setup.go | 8 ++++++-- caddyhttp/header/setup_test.go | 18 +++++++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/caddyhttp/header/setup.go b/caddyhttp/header/setup.go index 18ba944b7..61cd06042 100644 --- a/caddyhttp/header/setup.go +++ b/caddyhttp/header/setup.go @@ -60,8 +60,12 @@ func headersParse(c *caddy.Controller) ([]Rule, error) { name := c.Val() value := "" - if c.NextArg() { - value = c.Val() + args := c.RemainingArgs() + + if len(args) > 1 { + return rules, c.ArgErr() + } else if len(args) == 1 { + value = args[0] } head.Headers.Add(name, value) diff --git a/caddyhttp/header/setup_test.go b/caddyhttp/header/setup_test.go index c1591bfed..da40bca96 100644 --- a/caddyhttp/header/setup_test.go +++ b/caddyhttp/header/setup_test.go @@ -45,13 +45,25 @@ func TestHeadersParse(t *testing.T) { "Foo": []string{"Bar Baz"}, }}, }}, - {`header /bar { Foo "Bar Baz" Baz Qux }`, + {`header /bar { + Foo "Bar Baz" + Baz Qux + Foobar + }`, false, []Rule{ {Path: "/bar", Headers: http.Header{ - "Foo": []string{"Bar Baz"}, - "Baz": []string{"Qux"}, + "Foo": []string{"Bar Baz"}, + "Baz": []string{"Qux"}, + "Foobar": []string{""}, }}, }}, + {`header /foo { + Foo Bar Baz + }`, true, + []Rule{}}, + {`header /foo { + Test "max-age=1814400"; + }`, true, []Rule{}}, } for i, test := range tests {