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:
parent
af7e0f1bdd
commit
5647e604f7
@ -104,7 +104,7 @@ func (z *Inflater) readString() (string, os.Error) {
|
|||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
if z.buf[i] == 0 {
|
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.
|
// TODO(nigeltao): Convert from ISO 8859-1 (Latin-1) to UTF-8.
|
||||||
return string(z.buf[0:i]), nil
|
return string(z.buf[0:i]), nil
|
||||||
}
|
}
|
||||||
|
@ -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.
|
// writeString writes a string (in ISO 8859-1 (Latin-1) format) to z.w.
|
||||||
func (z *Deflater) writeString(s string) os.Error {
|
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).
|
// TODO(nigeltao): Convert from UTF-8 to ISO 8859-1 (Latin-1).
|
||||||
for _, v := range s {
|
for _, v := range s {
|
||||||
if v > 0x7f {
|
if v == 0 || v > 0x7f {
|
||||||
return os.NewError("gzip.Write: Comment/Name character code was outside the 0x00-0x7f range")
|
return os.NewError("gzip.Write: non-ASCII header string")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_, err := io.WriteString(z.w, s)
|
_, err := io.WriteString(z.w, s)
|
||||||
|
Loading…
Reference in New Issue
Block a user