summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles L. Dorian <cldorian@gmail.com>2009-12-09 11:56:45 -0800
committerCharles L. Dorian <cldorian@gmail.com>2009-12-09 11:56:45 -0800
commit1cfd640626b449c4978643aa9c28eb7cb32cbbad (patch)
tree23cdd2c6416b7052cc9dc57a1b76c4f9941e5ca7
parent0b385d6c286fbd2aa9ea131a42281a82e08a1331 (diff)
downloadgolang-1cfd640626b449c4978643aa9c28eb7cb32cbbad.tar.gz
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 http://codereview.appspot.com/168045 Committer: Russ Cox <rsc@golang.org>
-rw-r--r--src/cmd/5g/list.c2
-rw-r--r--src/cmd/6c/list.c2
-rw-r--r--src/cmd/6g/list.c2
-rw-r--r--src/cmd/8c/list.c2
-rw-r--r--src/cmd/8g/list.c2
5 files changed, 5 insertions, 5 deletions
diff --git a/src/cmd/5g/list.c b/src/cmd/5g/list.c
index d0febaca6..dfe3bcb79 100644
--- a/src/cmd/5g/list.c
+++ b/src/cmd/5g/list.c
@@ -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;
diff --git a/src/cmd/6c/list.c b/src/cmd/6c/list.c
index e3a0ea81b..64afe79fe 100644
--- a/src/cmd/6c/list.c
+++ b/src/cmd/6c/list.c
@@ -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;
diff --git a/src/cmd/6g/list.c b/src/cmd/6g/list.c
index 41956e63c..eadd7481b 100644
--- a/src/cmd/6g/list.c
+++ b/src/cmd/6g/list.c
@@ -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;
diff --git a/src/cmd/8c/list.c b/src/cmd/8c/list.c
index c2ce5b295..3edaa2e1f 100644
--- a/src/cmd/8c/list.c
+++ b/src/cmd/8c/list.c
@@ -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;
diff --git a/src/cmd/8g/list.c b/src/cmd/8g/list.c
index f94b9e176..2a7dc277f 100644
--- a/src/cmd/8g/list.c
+++ b/src/cmd/8g/list.c
@@ -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;