From e05cd21ca99cb138add583ccf0255ecf6b236ac5 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 16 Feb 2010 16:47:39 -0800 Subject: gc: disallow NUL byte, catch more invalid UTF-8, test R=ken2, ken3 CC=golang-dev http://codereview.appspot.com/209041 --- src/cmd/gc/subr.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/cmd/gc/subr.c') diff --git a/src/cmd/gc/subr.c b/src/cmd/gc/subr.c index ee47cc8e1..7072d95e4 100644 --- a/src/cmd/gc/subr.c +++ b/src/cmd/gc/subr.c @@ -1525,6 +1525,7 @@ Zconv(Fmt *fp) Rune r; Strlit *sp; char *s, *se; + int n; sp = va_arg(fp->args, Strlit*); if(sp == nil) @@ -1533,8 +1534,15 @@ Zconv(Fmt *fp) s = sp->s; se = s + sp->len; while(s < se) { - s += chartorune(&r, s); + n = chartorune(&r, s); + s += n; switch(r) { + case Runeerror: + if(n == 1) { + fmtprint(fp, "\\x%02x", *(s-1)); + break; + } + // fall through default: if(r < ' ') { fmtprint(fp, "\\x%02x", r); -- cgit v1.2.3