summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-08-06 11:42:05 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2015-08-06 11:42:05 +0200
commit9585e9b7f842fcd0922fe04cae5ed87e7c455728 (patch)
tree7f9653cd5f33307c8eaa63016bfb64b9d8df96c4
parent86eb8ea6bbbf031d71cf0fa58f468cd3ddc4e7f3 (diff)
kernel: limit syscallfmt user strings to 64K (as in validname)
-rw-r--r--sys/src/9/port/syscallfmt.c7
1 files 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;