diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-02-25 04:25:36 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-02-25 04:25:36 +0100 |
commit | 66ab4ac223a51a51ac431b60481183bc44c70215 (patch) | |
tree | 13e5b5ef8dc7159fdeb66261e9b4fc3faa6147ba /sys | |
parent | 96d6f4433550c4e48c33d94f6e272fae4b4e4ffb (diff) |
pc, pc64: fix %.*s format in multibootargs
Diffstat (limited to 'sys')
-rw-r--r-- | sys/src/9/pc/bootargs.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/src/9/pc/bootargs.c b/sys/src/9/pc/bootargs.c index f642c8b29..a971515d2 100644 --- a/sys/src/9/pc/bootargs.c +++ b/sys/src/9/pc/bootargs.c @@ -20,8 +20,9 @@ multibootargs(void) { extern ulong multibootptr; ulong *multiboot; - char *cp, *ep; + char *cp, *ep, *s; ulong *m, l; + int i, n; if(multibootptr == 0) return; @@ -77,12 +78,17 @@ multibootargs(void) /* plan9.ini passed as the first module */ if((multiboot[0] & (1<<3)) != 0 && multiboot[5] > 0 && multiboot[6] != 0){ m = KADDR(multiboot[6]); - cp = seprint(cp, ep, "%.*s\n", (int)(m[1] - m[0]), (char*)KADDR(m[0])); + s = (char*)KADDR(m[0]); + if(m[1] > m[0]){ + n = utfnlen(s, m[1] - m[0]); + if(n > 0) + cp = seprint(cp, ep, "%.*s\n", n, s); + } } /* command line */ if((multiboot[0] & (1<<2)) != 0 && multiboot[4] != 0){ - int i, n = tokenize(KADDR(multiboot[4]), confval, MAXCONF); + n = tokenize(KADDR(multiboot[4]), confval, MAXCONF); for(i=0; i<n; i++) cp = seprint(cp, ep, "%s\n", confval[i]); } |