aboutsummaryrefslogtreecommitdiff
path: root/header.go
diff options
context:
space:
mode:
authorGravatar Erik Dubbelboer <erik@dubbelboer.com> 2021-12-06 14:48:36 +0100
committerGravatar Erik Dubbelboer <erik@dubbelboer.com> 2021-12-06 14:48:36 +0100
commit4aadf9a85e1fd9d653e8f5c05d3825f8369fd63e (patch)
tree81376e80f7ae1fae17458ab3fe7319c944fa348f /header.go
parentAdd trailer support (#1165) (diff)
downloadfasthttp-4aadf9a85e1fd9d653e8f5c05d3825f8369fd63e.tar.gz
fasthttp-4aadf9a85e1fd9d653e8f5c05d3825f8369fd63e.tar.bz2
fasthttp-4aadf9a85e1fd9d653e8f5c05d3825f8369fd63e.zip
Fix parseTrailer panic
Diffstat (limited to 'header.go')
-rw-r--r--header.go16
1 files changed, 14 insertions, 2 deletions
diff --git a/header.go b/header.go
index 105f0c3..f872ff1 100644
--- a/header.go
+++ b/header.go
@@ -2339,9 +2339,15 @@ func (h *ResponseHeader) parse(buf []byte) (int, error) {
}
func (h *ResponseHeader) parseTrailer(buf []byte) (int, error) {
+ // Skip any 0 length chunk.
if buf[0] == '0' {
- buf = buf[len(strCRLF)+1:]
+ skip := len(strCRLF) + 1
+ if len(buf) < skip {
+ return 0, io.EOF
+ }
+ buf = buf[skip:]
}
+
var s headerScanner
s.b = buf
s.disableNormalizing = h.disableNormalizing
@@ -2392,9 +2398,15 @@ func (h *RequestHeader) parse(buf []byte) (int, error) {
}
func (h *RequestHeader) parseTrailer(buf []byte) (int, error) {
+ // Skip any 0 length chunk.
if buf[0] == '0' {
- buf = buf[len(strCRLF)+1:]
+ skip := len(strCRLF) + 1
+ if len(buf) < skip {
+ return 0, io.EOF
+ }
+ buf = buf[skip:]
}
+
var s headerScanner
s.b = buf
s.disableNormalizing = h.disableNormalizing