diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-08-06 11:42:05 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-08-06 11:42:05 +0200 |
commit | 9585e9b7f842fcd0922fe04cae5ed87e7c455728 (patch) | |
tree | 7f9653cd5f33307c8eaa63016bfb64b9d8df96c4 | |
parent | 86eb8ea6bbbf031d71cf0fa58f468cd3ddc4e7f3 (diff) |
kernel: limit syscallfmt user strings to 64K (as in validname)
-rw-r--r-- | sys/src/9/port/syscallfmt.c | 7 |
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; |