shithub: front

Download patch

ref: 1e7d5833ab6c90c7732667c278273a4e06709650
parent: c7fd84937c525ad94eefad0fd978acc0da301092
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Mon Oct 28 20:42:07 EDT 2024

ip/*: sprint() -> snprint() in a bunch of old copy-pasted network announce routines.

--- a/sys/src/cmd/ip/cifsd/util.c
+++ b/sys/src/cmd/ip/cifsd/util.c
@@ -24,7 +24,7 @@
 	char remfile[256];
 	static char buf[256];
 
-	sprint(remfile, "%s/remote", dir);
+	snprint(remfile, sizeof(remfile), "%s/remote", dir);
 	fd = open(remfile, OREAD);
 	if(fd < 0)
 		return nil;
--- a/sys/src/cmd/ip/dhcp6d.c
+++ b/sys/src/cmd/ip/dhcp6d.c
@@ -120,7 +120,7 @@
 	Ipifc *ifc;
 	Iplifc *lifc;
 
-	sprint(data, "%s/udp!*!dhcp6s", net);
+	snprint(data, sizeof(data), "%s/udp!*!dhcp6s", net);
 	cfd = announce(data, devdir);
 	if(cfd < 0)
 		sysfatal("can't announce: %r");
@@ -139,7 +139,7 @@
 		}
 	}
 
-	sprint(data, "%s/data", devdir);
+	snprint(data, sizeof(data), "%s/data", devdir);
 	fd = open(data, ORDWR);
 	if(fd < 0)
 		sysfatal("open udp data: %r");
--- a/sys/src/cmd/ip/dhcpd/dhcpd.c
+++ b/sys/src/cmd/ip/dhcpd/dhcpd.c
@@ -1326,7 +1326,7 @@
 	int fd, cfd;
 	char data[128], devdir[40];
 
-	sprint(data, "%s/udp!*!bootp", net);
+	snprint(data, sizeof(data), "%s/udp!*!bootp", net);
 	cfd = announce(data, devdir);
 	if(cfd < 0)
 		fatal("can't announce: %r");
@@ -1333,7 +1333,7 @@
 	if(fprint(cfd, "headers") < 0)
 		fatal("can't set header mode: %r");
 	fprint(cfd, "ignoreadvice");
-	sprint(data, "%s/data", devdir);
+	snprint(data, sizeof(data), "%s/data", devdir);
 	fd = open(data, ORDWR);
 	if(fd < 0)
 		fatal("open udp data: %r");
--- a/sys/src/cmd/ip/ftpfs/proto.c
+++ b/sys/src/cmd/ip/ftpfs/proto.c
@@ -1187,13 +1187,13 @@
 	int port;
 
 	/* get a channel to listen on, let kernel pick the port number */
-	sprint(buf, "%s!*!0", net);
+	snprint(buf, sizeof(buf), "%s!*!0", net);
 	listenfd = announce(buf, netdir);
 	if(listenfd < 0)
 		return seterr("can't announce");
 
 	/* get the local address and port number */
-	sprint(buf, "%s/local", netdir);
+	snprint(buf, sizeof(buf), "%s/local", netdir);
 	fd = open(buf, OREAD);
 	if(fd < 0)
 		return seterr("opening %s: %r", buf);
@@ -1205,8 +1205,10 @@
 	ptr = strchr(buf, ' ');
 	if(ptr)
 		*ptr = 0;
-	ptr = strchr(buf, '!')+1;
-	port = atoi(ptr);
+	ptr = strchr(buf, '!');
+	if(ptr == 0)
+		return seterr("no port in address: %s", buf);
+	port = atoi(ptr+1);
 
 	memset(ipaddr, 0, IPaddrlen);
 	if (*net){
@@ -1218,8 +1220,10 @@
 	}
 
 	/* tell remote side */
-	sprint(buf, "PORT %d,%d,%d,%d,%d,%d", ipaddr[IPv4off+0], ipaddr[IPv4off+1],
-		ipaddr[IPv4off+2], ipaddr[IPv4off+3], port>>8, port&0xff);
+	snprint(buf, sizeof(buf), "PORT %d,%d,%d,%d,%d,%d",
+		ipaddr[IPv4off+0], ipaddr[IPv4off+1],
+		ipaddr[IPv4off+2], ipaddr[IPv4off+3],
+		port>>8, port&0xff);
 	sendrequest(buf, nil);
 	if(getreply(&ctlin, msg, sizeof(msg), 0) != Success)
 		return seterr(msg);
@@ -1254,7 +1258,7 @@
 	close(listenfd);
 
 	/* open it's data connection and close the control connection */
-	sprint(datafile, "%s/data", newdir);
+	snprint(datafile, sizeof(datafile), "%s/data", newdir);
 	dfd = open(datafile, ORDWR);
 	close(cfd);
 	if(dfd < 0)
--- a/sys/src/cmd/ip/rarpd.c
+++ b/sys/src/cmd/ip/rarpd.c
@@ -55,8 +55,8 @@
 	uchar buf[2048];
 	long n;
 	Rarp *rp;
-	char ebuf[16];
 	char ipbuf[64];
+	char ebuf[128];
 	char file[128];
 	int arp;
 	char *p, *ndbfile;
@@ -102,7 +102,7 @@
 
 	if(myipaddr(myip, net) < 0)
 		error("can't get my ip address");
-	sprint(ebuf, "%s/%s", net, device);
+	snprint(ebuf, sizeof(ebuf), "%s/%s", net, device);
 	if(myetheraddr(myether, ebuf) < 0)
 		error("can't get my ether address");
 
@@ -138,7 +138,7 @@
 			syslog(debug, rlog, "rcv se %E si %V te %E ti %V",
 				 rp->sha, rp->spa, rp->tha, rp->tpa);
 
-		sprint(ebuf, "%E", rp->tha);
+		snprint(ebuf, sizeof(ebuf), "%E", rp->tha);
 		if(lookup("ether", ebuf, "ip", ipbuf, sizeof ipbuf) == nil){
 			syslog(debug, rlog, "client lookup failed: %s", ebuf);
 			continue;
--- a/sys/src/cmd/ip/rip.c
+++ b/sys/src/cmd/ip/rip.c
@@ -333,7 +333,7 @@
 	if(fprint(ripctl, "headers") < 0)
 		fatal(1, "can't set header mode");
 
-	sprint(data, "%s/data", devdir);
+	snprint(data, sizeof(data), "%s/data", devdir);
 	rip = open(data, ORDWR);
 	if(rip < 0)
 		fatal(1, "open udp data");
--- a/sys/src/cmd/ip/traceroute.c
+++ b/sys/src/cmd/ip/traceroute.c
@@ -60,7 +60,7 @@
 	/*
 	 *  ask connection server to translate
 	 */
-	sprint(buf, "%s!%s", ds->proto, ds->rem);
+	snprint(buf, sizeof(buf), "%s!%s", ds->proto, ds->rem);
 	if(write(fd, buf, strlen(buf)) < 0){
 		close(fd);
 		return -1;
--- a/sys/src/cmd/ip/udpecho.c
+++ b/sys/src/cmd/ip/udpecho.c
@@ -23,7 +23,7 @@
 		break;
 	}ARGEND;
 
-	sprint(data, "%s/udp!*!echo", net);
+	snprint(data, sizeof(data), "%s/udp!*!echo", net);
 	cfd = announce(data, devdir);
 	if(cfd < 0)
 		sysfatal("can't announce %s: %r", data);
@@ -30,7 +30,7 @@
 	if(fprint(cfd, "headers") < 0)
 		sysfatal("can't set header mode: %r");
 
-	sprint(data, "%s/data", devdir);
+	snprint(data, sizeof(data), "%s/data", devdir);
 	fd = open(data, ORDWR);
 	if(fd < 0)
 		sysfatal("open %s: %r", data);
--