net/http: fix panic with If-None-Match value in http.ServeContent
Fixes #39817
Change-Id: I79f2ad7c836a8a46569f603aca583fdd526d22dc
GitHub-Last-Rev: 5b88aada219aaa2af0c7e1969ed6fa646117d9da
GitHub-Pull-Request: golang/go#39821
Reviewed-on: https://go-review.googlesource.com/c/go/+/239699
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/src/net/http/fs.go b/src/net/http/fs.go
index 07d15b0..922706a 100644
--- a/src/net/http/fs.go
+++ b/src/net/http/fs.go
@@ -413,6 +413,7 @@
}
if buf[0] == ',' {
buf = buf[1:]
+ continue
}
if buf[0] == '*' {
return condFalse
diff --git a/src/net/http/fs_test.go b/src/net/http/fs_test.go
index 435e34b..c082cee 100644
--- a/src/net/http/fs_test.go
+++ b/src/net/http/fs_test.go
@@ -849,6 +849,15 @@
wantStatus: 200,
wantContentType: "text/css; charset=utf-8",
},
+ "if_none_match_malformed": {
+ file: "testdata/style.css",
+ serveETag: `"foo"`,
+ reqHeader: map[string]string{
+ "If-None-Match": `,`,
+ },
+ wantStatus: 200,
+ wantContentType: "text/css; charset=utf-8",
+ },
"range_good": {
file: "testdata/style.css",
serveETag: `"A"`,