Skip to content

Commit

Permalink
Solve emersion#23: header with extra black line generated in in some …
Browse files Browse the repository at this point in the history
…rare cases
  • Loading branch information
Ludovico Russo committed Mar 10, 2020
1 parent 322c864 commit 978f565
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 2 deletions.
4 changes: 2 additions & 2 deletions dkim/header.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ func writeHeader(w io.Writer, h header) error {
}

func foldHeaderField(kv string) string {
buf := bytes.NewBufferString(kv + crlf)
buf := bytes.NewBufferString(kv)

line := make([]byte, 75) // 78 - len("\r\n\s")
first := true
Expand All @@ -63,7 +63,7 @@ func foldHeaderField(kv string) string {
fold.Write(line[:len])
}

return fold.String()
return fold.String() + crlf
}

func parseHeaderField(s string) (k string, v string) {
Expand Down
8 changes: 8 additions & 0 deletions dkim/header_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,11 @@ func TestHeaderPicker_Pick(t *testing.T) {

})
}

func TestFoldHeaderField(t *testing.T) {
header := `DKIM-Signature: a=rsa-sha256; bh=bvW0aiEWdP0ie2rawBb+IiTxlHI9KgEIYjEYTGzMRa0=; c=simple/simple; d=test.xxxxxxxxxx.xxxxx; h=Return-Path:From:To:Subject:Message-ID:Date; s=brisbane; t=1583859773; v=1; b=IIlaZ79pLDdypX2YzJuy9EvxsbrqF360CLhkQqMqVC/GIa1K/X8p8POny7WuVuFTMHLvA1zH9YcXgEgIH+X0GgGsqqzq8ETL+QGZ9g1EKCmIg+ZEYV5JnH25Ar6bJpGra3jg6sIxKi6CthpK50kd8T0Q3K/oZGot4BkLaPqogpo=;`
folded := foldHeaderField(header)
if strings.HasSuffix(folded, "\r\n \n") {
t.Errorf("Extra black line added in header:\n ---Start--- %v ---End---", folded)
}
}

0 comments on commit 978f565

Please sign in to comment.