mirror of
https://github.com/golang/go
synced 2024-11-22 09:54:40 -07:00
Continuation of issue 221 fix. When 8g or 6g or 5g are called with a
UTF-8 string, Yconv() converts it into an octal sequence. If the string converted to more than 30 bytes, the str buffer would overflow. For example, 4 Greek runes became 32 bytes, 3 Hiragana runes became 36 bytes, and 2 Gothic runes became 32 bytes. In 8l, 6l and 5l the function is Sconv(). For some reason, only 5l uses the constant STRINGSZ (defined as 200) for the buffer size. R=rsc https://golang.org/cl/168045
This commit is contained in:
parent
8a5b76ce5c
commit
3ca1b1d27f
@ -233,7 +233,7 @@ int
|
||||
Yconv(Fmt *fp)
|
||||
{
|
||||
int i, c;
|
||||
char str[30], *p, *a;
|
||||
char str[100], *p, *a;
|
||||
|
||||
a = va_arg(fp->args, char*);
|
||||
p = str;
|
||||
|
@ -353,7 +353,7 @@ int
|
||||
Sconv(Fmt *fp)
|
||||
{
|
||||
int i, c;
|
||||
char str[30], *p, *a;
|
||||
char str[100], *p, *a;
|
||||
|
||||
a = va_arg(fp->args, char*);
|
||||
p = str;
|
||||
|
@ -313,7 +313,7 @@ int
|
||||
Yconv(Fmt *fp)
|
||||
{
|
||||
int i, c;
|
||||
char str[30], *p, *a;
|
||||
char str[100], *p, *a;
|
||||
|
||||
a = va_arg(fp->args, char*);
|
||||
p = str;
|
||||
|
@ -274,7 +274,7 @@ int
|
||||
Sconv(Fmt *fp)
|
||||
{
|
||||
int i, c;
|
||||
char str[30], *p, *a;
|
||||
char str[100], *p, *a;
|
||||
|
||||
a = va_arg(fp->args, char*);
|
||||
p = str;
|
||||
|
@ -256,7 +256,7 @@ int
|
||||
Yconv(Fmt *fp)
|
||||
{
|
||||
int i, c;
|
||||
char str[30], *p, *a;
|
||||
char str[100], *p, *a;
|
||||
|
||||
a = va_arg(fp->args, char*);
|
||||
p = str;
|
||||
|
Loading…
Reference in New Issue
Block a user