diff options
author | Erik Dubbelboer <erik@dubbelboer.com> | 2021-12-06 14:48:36 +0100 |
---|---|---|
committer | Erik Dubbelboer <erik@dubbelboer.com> | 2021-12-06 14:48:36 +0100 |
commit | 4aadf9a85e1fd9d653e8f5c05d3825f8369fd63e (patch) | |
tree | 81376e80f7ae1fae17458ab3fe7319c944fa348f /header.go | |
parent | Add trailer support (#1165) (diff) | |
download | fasthttp-4aadf9a85e1fd9d653e8f5c05d3825f8369fd63e.tar.gz fasthttp-4aadf9a85e1fd9d653e8f5c05d3825f8369fd63e.tar.bz2 fasthttp-4aadf9a85e1fd9d653e8f5c05d3825f8369fd63e.zip |
Fix parseTrailer panic
Diffstat (limited to 'header.go')
-rw-r--r-- | header.go | 16 |
1 files changed, 14 insertions, 2 deletions
@@ -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 |