From 9585e9b7f842fcd0922fe04cae5ed87e7c455728 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 6 Aug 2015 11:42:05 +0200 Subject: [PATCH] kernel: limit syscallfmt user strings to 64K (as in validname) --- sys/src/9/port/syscallfmt.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sys/src/9/port/syscallfmt.c b/sys/src/9/port/syscallfmt.c index 12610c866..5ae5b31ab 100644 --- a/sys/src/9/port/syscallfmt.c +++ b/sys/src/9/port/syscallfmt.c @@ -36,15 +36,18 @@ fmtrwdata(Fmt* f, char* a, int n, char* suffix) static void fmtuserstring(Fmt* f, char* a, char* suffix) { + char *t, *e; int n; - char *t; if(a == nil){ fmtprint(f, "0/\"\"%s", suffix); return; } validaddr((uintptr)a, 1, 0); - n = ((char*)vmemchr(a, 0, ~0) - a) + 1; + n = 1<<16; + e = vmemchr(a, 0, n); + if(e != nil) + n = e - a; t = smalloc(n+1); memmove(t, a, n); t[n] = 0;