|
@@ -228,9 +228,10 @@ drawgen(Chan *c, char*, Dirtab*, int, int s, Dir *dp)
|
|
|
case Q3rd:
|
|
|
cl = drawclientofpath(c->qid.path);
|
|
|
if(cl == nil)
|
|
|
- strcpy(up->genbuf, "??");
|
|
|
+ strncpy(up->genbuf, "??", sizeof up->genbuf);
|
|
|
else
|
|
|
- sprint(up->genbuf, "%d", cl->clientid);
|
|
|
+ snprint(up->genbuf, sizeof up->genbuf,
|
|
|
+ "%d", cl->clientid);
|
|
|
mkqid(&q, Q2nd, 0, QTDIR);
|
|
|
devdir(c, q, up->genbuf, 0, eve, 0500, dp);
|
|
|
break;
|
|
@@ -272,7 +273,8 @@ drawgen(Chan *c, char*, Dirtab*, int, int s, Dir *dp)
|
|
|
cl = sdraw.client[s-1];
|
|
|
if(cl == 0)
|
|
|
return 0;
|
|
|
- sprint(up->genbuf, "%d", cl->clientid);
|
|
|
+ snprint(up->genbuf, sizeof up->genbuf, "%d",
|
|
|
+ cl->clientid);
|
|
|
mkqid(&q, (s<<QSHIFT)|Q3rd, 0, QTDIR);
|
|
|
devdir(c, q, up->genbuf, 0, eve, 0555, dp);
|
|
|
return 1;
|
|
@@ -1186,10 +1188,13 @@ drawread(Chan *c, void *a, long n, vlong off)
|
|
|
error(Enodrawimage);
|
|
|
i = di->image;
|
|
|
}
|
|
|
- n = sprint(a, "%11d %11d %11s %11d %11d %11d %11d %11d %11d %11d %11d %11d ",
|
|
|
- cl->clientid, cl->infoid, chantostr(buf, i->chan), (i->flags&Frepl)==Frepl,
|
|
|
+ n = snprint(a, n,
|
|
|
+ "%11d %11d %11s %11d %11d %11d %11d %11d %11d %11d %11d %11d ",
|
|
|
+ cl->clientid, cl->infoid, chantostr(buf, i->chan),
|
|
|
+ (i->flags&Frepl)==Frepl,
|
|
|
i->r.min.x, i->r.min.y, i->r.max.x, i->r.max.y,
|
|
|
- i->clipr.min.x, i->clipr.min.y, i->clipr.max.x, i->clipr.max.y);
|
|
|
+ i->clipr.min.x, i->clipr.min.y, i->clipr.max.x,
|
|
|
+ i->clipr.max.y);
|
|
|
cl->infoid = -1;
|
|
|
break;
|
|
|
|
|
@@ -1201,7 +1206,9 @@ drawread(Chan *c, void *a, long n, vlong off)
|
|
|
m = 0;
|
|
|
for(index = 0; index < 256; index++){
|
|
|
getcolor(index, &red, &green, &blue);
|
|
|
- m += sprint((char*)p+m, "%11d %11lud %11lud %11lud\n", index, red>>24, green>>24, blue>>24);
|
|
|
+ m += snprint((char*)p+m, 4*12*256+1 - m,
|
|
|
+ "%11d %11lud %11lud %11lud\n", index,
|
|
|
+ red>>24, green>>24, blue>>24);
|
|
|
}
|
|
|
n = readstr(offset, a, n, (char*)p);
|
|
|
free(p);
|
|
@@ -1370,7 +1377,7 @@ printmesg(char *fmt, uchar *a, int plsprnt)
|
|
|
{
|
|
|
char buf[256];
|
|
|
char *p, *q;
|
|
|
- int s;
|
|
|
+ int s, left;
|
|
|
|
|
|
if(1|| plsprnt==0){
|
|
|
SET(s,q,p);
|
|
@@ -1380,32 +1387,34 @@ printmesg(char *fmt, uchar *a, int plsprnt)
|
|
|
q = buf;
|
|
|
*q++ = *a++;
|
|
|
for(p=fmt; *p; p++){
|
|
|
+ left = sizeof buf - 2 - (q - buf); /* 2 for \n\0 */
|
|
|
switch(*p){
|
|
|
case 'l':
|
|
|
- q += sprint(q, " %ld", (long)BGLONG(a));
|
|
|
+ q += snprint(q, left, " %ld", (long)BGLONG(a));
|
|
|
a += 4;
|
|
|
break;
|
|
|
case 'L':
|
|
|
- q += sprint(q, " %.8lux", (ulong)BGLONG(a));
|
|
|
+ q += snprint(q, left, " %.8lux", (ulong)BGLONG(a));
|
|
|
a += 4;
|
|
|
break;
|
|
|
case 'R':
|
|
|
- q += sprint(q, " [%d %d %d %d]", BGLONG(a), BGLONG(a+4), BGLONG(a+8), BGLONG(a+12));
|
|
|
+ q += snprint(q, left, " [%d %d %d %d]", BGLONG(a),
|
|
|
+ BGLONG(a+4), BGLONG(a+8), BGLONG(a+12));
|
|
|
a += 16;
|
|
|
break;
|
|
|
case 'P':
|
|
|
- q += sprint(q, " [%d %d]", BGLONG(a), BGLONG(a+4));
|
|
|
+ q += snprint(q, left, " [%d %d]", BGLONG(a), BGLONG(a+4));
|
|
|
a += 8;
|
|
|
break;
|
|
|
case 'b':
|
|
|
- q += sprint(q, " %d", *a++);
|
|
|
+ q += snprint(q, left, " %d", *a++);
|
|
|
break;
|
|
|
case 's':
|
|
|
- q += sprint(q, " %d", BGSHORT(a));
|
|
|
+ q += snprint(q, left, " %d", BGSHORT(a));
|
|
|
a += 2;
|
|
|
break;
|
|
|
case 'S':
|
|
|
- q += sprint(q, " %.4ux", BGSHORT(a));
|
|
|
+ q += snprint(q, left, " %.4ux", BGSHORT(a));
|
|
|
a += 2;
|
|
|
break;
|
|
|
}
|