From 07b3a2c73944266926823d7c904ad6162ef4051f Mon Sep 17 00:00:00 2001 From: Kay Lukas Date: Wed, 5 Sep 2018 19:53:27 +0200 Subject: [PATCH] Handle CRLF --- signature_collector.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/signature_collector.go b/signature_collector.go index cf0ffcd..3e2e0d6 100644 --- a/signature_collector.go +++ b/signature_collector.go @@ -45,6 +45,7 @@ func getRawMimePart(rawdata io.Reader, boundary string) (io.Reader, io.Reader) { break } } + lineEndingLength := 0 for { line, isPrefix, err := reader.ReadLine() if err != nil { @@ -53,20 +54,23 @@ func getRawMimePart(rawdata io.Reader, boundary string) (io.Reader, io.Reader) { if bytes.HasPrefix(line, byteBoundary) { break } + lineEndingLength = 0 bodyBuffer.Write(line) if !isPrefix { reader.UnreadByte() reader.UnreadByte() token, _ := reader.ReadByte() if token == '\r' { + lineEndingLength++ bodyBuffer.WriteByte(token) } + lineEndingLength++ bodyBuffer.WriteByte(token) } } ioutil.ReadAll(reader) data := bodyBuffer.Bytes() - return tee, bytes.NewReader(data[0:len(data) - 1]) + return tee, bytes.NewReader(data[0:len(data) - lineEndingLength]) } func getMultipartParts(r io.Reader, params map[string]string) (parts []io.Reader, headers []textproto.MIMEHeader, err error) {