}
// Parse the first token as a decimal integer.
n, err := strconv.ParseInt(string(buf[:sp]), 10, 0)
- if err != nil {
+ if err != nil || n < 5 || int64(len(buf)) < n {
return nil, ErrHeader
}
// Extract everything between the decimal and the n -1 on the
t.Error("Buffer wasn't consumed")
}
}
- badHeader := bytes.NewReader([]byte("3 somelongkey="))
- if _, err := parsePAX(badHeader); err != ErrHeader {
- t.Fatal("Unexpected success when parsing bad header")
+ badHeaderTests := [][]byte{
+ []byte("3 somelongkey=\n"),
+ []byte("50 tooshort=\n"),
+ }
+ for _, test := range badHeaderTests {
+ if _, err := parsePAX(bytes.NewReader(test)); err != ErrHeader {
+ t.Fatal("Unexpected success when parsing bad header")
+ }
}
}