This is the patch for removing sprint from the ip directory. Reference: /n/sources/patch/saved/remove-sprint-ip Date: Fri Feb 25 22:28:39 CET 2011 Signed-off-by: 20h@r-36.net --- /sys/src/9/ip/tcp.c Fri Feb 25 22:25:01 2011 +++ /sys/src/9/ip/tcp.c Fri Feb 25 22:24:53 2011 @@ -884,7 +884,7 @@ if(tpriv->ackprocstarted == 0){ qlock(&tpriv->apl); if(tpriv->ackprocstarted == 0){ - sprint(kpname, "#I%dtcpack", s->p->f->dev); + snprint(kpname, sizeof(kpname), "#I%dtcpack", s->p->f->dev); kproc(kpname, tcpackproc, s->p); tpriv->ackprocstarted = 1; } @@ -918,7 +918,7 @@ { static char buf[128]; - sprint(buf, "%d", flag>>10); /* Head len */ + snprint(buf, sizeof(buf), "%d", flag>>10); /* Head len */ if(flag & URG) strcat(buf, " URG"); if(flag & ACK) --- /sys/src/9/ip/rudp.c Fri Feb 25 22:25:08 2011 +++ /sys/src/9/ip/rudp.c Fri Feb 25 22:25:04 2011 @@ -202,7 +202,7 @@ if(rpriv->ackprocstarted == 0){ qlock(&rpriv->apl); if(rpriv->ackprocstarted == 0){ - sprint(kpname, "#I%drudpack", rudp->f->dev); + snprint(kpname, sizeof(kpname), "#I%drudpack", rudp->f->dev); kproc(kpname, relackproc, rudp); rpriv->ackprocstarted = 1; } --- /sys/src/9/ip/ipifc.c Fri Feb 25 22:25:18 2011 +++ /sys/src/9/ip/ipifc.c Fri Feb 25 22:25:13 2011 @@ -1650,8 +1650,8 @@ if(!ifc->m->pref2addr) return Ebadarg; ifc->m->pref2addr(prefix, ifc->mac); /* mac → v6 link-local addr */ - sprint(addr, "%I", prefix); - sprint(preflen, "/%d", plen); + snprint(addr, sizeof(addr), "%I", prefix); + snprint(preflen, sizeof(preflen), "/%d", plen); params[0] = "add"; params[1] = addr; params[2] = preflen; --- /sys/src/9/ip/icmp6.c Fri Feb 25 22:25:26 2011 +++ /sys/src/9/ip/icmp6.c Fri Feb 25 22:25:21 2011 @@ -765,7 +765,7 @@ case TimeExceedV6: if(p->code == 0){ - sprint(m2, "ttl exceeded at %I", p->src); + snprint(m2, sizeof(m2), "ttl exceeded at %I", p->src); bp->rp += IPICMPSZ; if(blocklen(bp) < 8){ --- /sys/src/9/ip/icmp.c Fri Feb 25 22:25:33 2011 +++ /sys/src/9/ip/icmp.c Fri Feb 25 22:25:30 2011 @@ -393,7 +393,7 @@ break; case TimeExceed: if(p->code == 0){ - sprint(m2, "ttl exceeded at %V", p->src); + snprint(m2, sizeof(m2), "ttl exceeded at %V", p->src); bp->rp += ICMP_IPSIZE+ICMP_HDRSIZE; if(blocklen(bp) < MinAdvise){ --- /sys/src/9/ip/ethermedium.c Fri Feb 25 22:25:39 2011 +++ /sys/src/9/ip/ethermedium.c Fri Feb 25 22:25:36 2011 @@ -412,7 +412,7 @@ int version; version = multicastea(mac, a); - sprint(buf, "addmulti %E", mac); + snprint(buf, sizeof(buf), "addmulti %E", mac); switch(version){ case V4: devtab[er->cchan4->type]->write(er->cchan4, buf, strlen(buf), 0); @@ -434,7 +434,7 @@ int version; version = multicastea(mac, a); - sprint(buf, "remmulti %E", mac); + snprint(buf, sizeof(buf), "remmulti %E", mac); switch(version){ case V4: devtab[er->cchan4->type]->write(er->cchan4, buf, strlen(buf), 0); --- /sys/src/9/ip/eipconvtest.c Fri Feb 25 22:25:45 2011 +++ /sys/src/9/ip/eipconvtest.c Fri Feb 25 22:25:42 2011 @@ -52,13 +52,13 @@ switch(f->chr) { case 'E': /* Ethernet address */ p = va_arg(*arg, uchar*); - sprint(buf, efmt, p[0], p[1], p[2], p[3], p[4], p[5]); + snprint(buf, sizeof(buf), efmt, p[0], p[1], p[2], p[3], p[4], p[5]); break; case 'I': /* Ip address */ p = va_arg(*arg, uchar*); common: if(memcmp(p, v4prefix, 12) == 0) - sprint(buf, ifmt, p[12], p[13], p[14], p[15]); + snprint(buf, sizeof(buf), ifmt, p[12], p[13], p[14], p[15]); else { /* find longest elision */ eln = eli = -1; @@ -76,14 +76,14 @@ n = 0; for(i = 0; i < 16; i += 2){ if(i == eli){ - n += sprint(buf+n, "::"); + n += snprint(buf+n, sizeof(buf)-n, "::"); i += eln; if(i >= 16) break; } else if(i != 0) - n += sprint(buf+n, ":"); + n += snprint(buf+n, sizeof(buf)-n, ":"); s = (p[i]<<8) + p[i+1]; - n += sprint(buf+n, "%ux", s); + n += snprint(buf+n, sizeof(buf)-n, "%ux", s); } } break; @@ -95,7 +95,7 @@ goto common; case 'V': /* v4 ip address */ p = va_arg(*arg, uchar*); - sprint(buf, ifmt, p[0], p[1], p[2], p[3]); + snprint(buf, sizeof(buf), ifmt, p[0], p[1], p[2], p[3]); break; case 'M': /* ip mask */ p = va_arg(*arg, uchar*); @@ -115,7 +115,7 @@ n = 8*16; /* got one, use /xx format */ - sprint(buf, "/%d", n); + snprint(buf, sizeof(buf), "/%d", n); break; default: strcpy(buf, "(eipconv)"); --- /sys/src/9/ip/devip.c Fri Feb 25 22:25:53 2011 +++ /sys/src/9/ip/devip.c Fri Feb 25 22:25:48 2011 @@ -183,7 +183,7 @@ case Qtopdir: if(s == DEVDOTDOT){ mkqid(&q, QID(0, 0, Qtopdir), 0, QTDIR); - sprint(up->genbuf, "#I%lud", c->dev); + snprint(up->genbuf, sizeof(up->genbuf), "#I%lud", c->dev); devdir(c, q, up->genbuf, 0, network, 0555, dp); return 1; } @@ -206,13 +206,13 @@ case Qprotodir: if(s == DEVDOTDOT){ mkqid(&q, QID(0, 0, Qtopdir), 0, QTDIR); - sprint(up->genbuf, "#I%lud", c->dev); + snprint(up->genbuf, sizeof(up->genbuf), "#I%lud", c->dev); devdir(c, q, up->genbuf, 0, network, 0555, dp); return 1; } if(s < f->p[PROTO(c->qid)]->ac) { cv = f->p[PROTO(c->qid)]->conv[s]; - sprint(up->genbuf, "%d", s); + snprint(up->genbuf, sizeof(up->genbuf), "%d", s); mkqid(&q, QID(PROTO(c->qid), s, Qconvdir), 0, QTDIR); devdir(c, q, up->genbuf, 0, cv->owner, 0555, dp); return 1; @@ -649,7 +649,7 @@ return netlogread(f, a, offset, n); case Qctl: buf = smalloc(16); - sprint(buf, "%lud", CONV(ch->qid)); + snprint(buf, 16, "%lud", CONV(ch->qid)); rv = readstr(offset, p, n, buf); free(buf); return rv; @@ -658,7 +658,7 @@ x = f->p[PROTO(ch->qid)]; c = x->conv[CONV(ch->qid)]; if(x->remote == nil) { - sprint(buf, "%I!%d\n", c->raddr, c->rport); + snprint(buf, Statelen, "%I!%d\n", c->raddr, c->rport); } else { (*x->remote)(c, buf, Statelen-2); } @@ -670,7 +670,7 @@ x = f->p[PROTO(ch->qid)]; c = x->conv[CONV(ch->qid)]; if(x->local == nil) { - sprint(buf, "%I!%d\n", c->laddr, c->lport); + snprint(buf, Statelen, "%I!%d\n", c->laddr, c->lport); } else { (*x->local)(c, buf, Statelen-2); } --- /sys/src/9/ip/chandial.c Fri Feb 25 22:25:59 2011 +++ /sys/src/9/ip/chandial.c Fri Feb 25 22:25:56 2011 @@ -66,7 +66,7 @@ name[n] = 0; for(p = name; *p == ' '; p++) ; - sprint(name, "%lud", strtoul(p, 0, 0)); + snprint(name, sizeof(name), "%lud", strtoul(p, 0, 0)); p = strrchr(clone, '/'); *p = 0; if(ds->dir) --- /sys/src/9/ip/arp.c Fri Feb 25 22:26:06 2011 +++ /sys/src/9/ip/arp.c Fri Feb 25 22:26:02 2011 @@ -523,10 +523,17 @@ char *aformat = "%-6.6s %-8.8s %-40.40I %-32.32s\n"; static void -convmac(char *p, uchar *mac, int n) +convmac(char *p, uchar *mac, int n, int mlen) { - while(n-- > 0) - p += sprint(p, "%2.2ux", *mac++); + int mn, pb; + + mn = mlen; + + while(n-- > 0) { + pb = snprint(p, mn, "%2.2ux", *mac++); + p += pb; + mn -= pb; + } } int @@ -552,8 +559,8 @@ } len--; qlock(arp); - convmac(mac, a->mac, a->type->maclen); - n += sprint(p+n, aformat, a->type->name, arpstate[a->state], a->ip, mac); + convmac(mac, a->mac, a->type->maclen, sizeof(mac)); + n += snprint(p+n, len-n, aformat, a->type->name, arpstate[a->state], a->ip, mac); qunlock(arp); }