From f88d0c372d9e23c82b6b89f85690d26959d83441 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 6 Mar 2014 22:53:20 +0100 Subject: [PATCH] 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. --- sys/src/cmd/nusb/lib/dev.c | 9 +++++---- 1 file 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;