summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2014-03-06 22:53:20 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2014-03-06 22:53:20 +0100
commitf88d0c372d9e23c82b6b89f85690d26959d83441 (patch)
tree4600216cdaf71e63890d7c9820ad1ad5e1f3e0c8
parent7cdd1c46c5bb29572c69cbf2dcff3fba6a4a7a1d (diff)
downloadplan9front-f88d0c372d9e23c82b6b89f85690d26959d83441.tar.xz
nusb: fix loaddevstr() (thanks erik quanstro and richard miller)
loaddevstr() should request 256 bytes, as per standard and respect the length embedded in the string.
-rw-r--r--sys/src/cmd/nusb/lib/dev.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/src/cmd/nusb/lib/dev.c b/sys/src/cmd/nusb/lib/dev.c
index dea427294..8f8a64277 100644
--- a/sys/src/cmd/nusb/lib/dev.c
+++ b/sys/src/cmd/nusb/lib/dev.c
@@ -186,25 +186,26 @@ mkstr(uchar *b, int n)
Rune r;
char *us;
char *s;
- char *e;
+ if(n > 0 && n > b[0])
+ n = b[0];
if(n <= 2 || (n & 1) != 0)
return strdup("none");
n = (n - 2)/2;
b += 2;
us = s = emallocz(n*UTFmax+1, 0);
- e = s + n*UTFmax+1;
for(; --n >= 0; b += 2){
r = GET2(b);
- s = seprint(s, e, "%C", r);
+ s += runetochar(s, &r);
}
+ *s = 0;
return us;
}
char*
loaddevstr(Dev *d, int sid)
{
- uchar buf[128];
+ uchar buf[256];
int langid;
int type;
int nr;