1
0
mirror of https://github.com/golang/go synced 2024-11-21 17:54:39 -07:00

Check gzip strings for NUL elements, since they are NUL-terminated

on the wire.

R=rsc
CC=golang-dev
https://golang.org/cl/194146
This commit is contained in:
Nigel Tao 2010-01-30 12:21:51 +11:00
parent af7e0f1bdd
commit 5647e604f7
2 changed files with 4 additions and 4 deletions

View File

@ -104,7 +104,7 @@ func (z *Inflater) readString() (string, os.Error) {
return "", err
}
if z.buf[i] == 0 {
// GZIP (RFC 1952) specifies that strings are null-terminated ISO 8859-1 (Latin-1).
// GZIP (RFC 1952) specifies that strings are NUL-terminated ISO 8859-1 (Latin-1).
// TODO(nigeltao): Convert from ISO 8859-1 (Latin-1) to UTF-8.
return string(z.buf[0:i]), nil
}

View File

@ -85,11 +85,11 @@ func (z *Deflater) writeBytes(b []byte) os.Error {
// writeString writes a string (in ISO 8859-1 (Latin-1) format) to z.w.
func (z *Deflater) writeString(s string) os.Error {
// GZIP (RFC 1952) specifies that strings are null-terminated ISO 8859-1 (Latin-1).
// GZIP (RFC 1952) specifies that strings are NUL-terminated ISO 8859-1 (Latin-1).
// TODO(nigeltao): Convert from UTF-8 to ISO 8859-1 (Latin-1).
for _, v := range s {
if v > 0x7f {
return os.NewError("gzip.Write: Comment/Name character code was outside the 0x00-0x7f range")
if v == 0 || v > 0x7f {
return os.NewError("gzip.Write: non-ASCII header string")
}
}
_, err := io.WriteString(z.w, s)