Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Jun 2017 14:57:48 +0000 (UTC)
From:      Alan Somers <asomers@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r319900 - head/sbin/ipfw
Message-ID:  <201706131457.v5DEvmiu034965@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: asomers
Date: Tue Jun 13 14:57:48 2017
New Revision: 319900
URL: https://svnweb.freebsd.org/changeset/base/319900

Log:
  sbin/ipfw: strcpy, strncpy => strlcpy
  
  Reported by:	Coverity
  CID:		1356162, 1356166
  MFC after:	3 weeks
  Sponsored by:	Spectra Logic Corp
  Differential Revision:	https://reviews.freebsd.org/D10662

Modified:
  head/sbin/ipfw/dummynet.c

Modified: head/sbin/ipfw/dummynet.c
==============================================================================
--- head/sbin/ipfw/dummynet.c	Tue Jun 13 14:07:13 2017	(r319899)
+++ head/sbin/ipfw/dummynet.c	Tue Jun 13 14:57:48 2017	(r319900)
@@ -805,8 +805,7 @@ read_bandwidth(char *arg, int *bandwidth, char *if_nam
 			warn("interface name truncated");
 		namelen--;
 		/* interface name */
-		strncpy(if_name, arg, namelen);
-		if_name[namelen] = '\0';
+		strlcpy(if_name, arg, namelen);
 		*bandwidth = 0;
 	} else {	/* read bandwidth value */
 		int bw;
@@ -933,8 +932,7 @@ load_extra_delays(const char *filename, struct dn_prof
 		} else if (!strcasecmp(name, ED_TOK_NAME)) {
 		    if (profile_name[0] != '\0')
 			errx(ED_EFMT("duplicated token: %s"), name);
-		    strncpy(profile_name, arg, sizeof(profile_name) - 1);
-		    profile_name[sizeof(profile_name)-1] = '\0';
+		    strlcpy(profile_name, arg, sizeof(profile_name));
 		    do_points = 0;
 		} else if (!strcasecmp(name, ED_TOK_DELAY)) {
 		    if (do_points)
@@ -1005,7 +1003,7 @@ load_extra_delays(const char *filename, struct dn_prof
 	}
 	p->samples_no = samples;
 	p->loss_level = loss * samples;
-	strncpy(p->name, profile_name, sizeof(p->name));
+	strlcpy(p->name, profile_name, sizeof(p->name));
 }
 
 #ifdef NEW_AQM
@@ -1568,7 +1566,8 @@ end_mask:
 			fs->flags &= ~(DN_IS_RED|DN_IS_GENTLE_RED);
 			fs->flags |= DN_IS_AQM;
 
-			strcpy(aqm_extra->name,av[-1]);
+			strlcpy(aqm_extra->name, av[-1],
+			    sizeof(aqm_extra->name));
 			aqm_extra->oid.subtype = DN_AQM_PARAMS;
 
 			process_extra_parms(&ac, av, aqm_extra, tok);
@@ -1580,7 +1579,8 @@ end_mask:
 				errx(EX_DATAERR, "use type before fq_codel/fq_pie");
 
 			NEED(sch, "fq_codel/fq_pie is only for schd");
-			strcpy(sch_extra->name,av[-1]);
+			strlcpy(sch_extra->name, av[-1],
+			    sizeof(sch_extra->name));
 			sch_extra->oid.subtype = DN_SCH_PARAMS;
 			process_extra_parms(&ac, av, sch_extra, tok);
 			break;
@@ -1649,14 +1649,15 @@ end_mask:
 			l = strlen(av[0]);
 			if (l == 0 || l > 15)
 				errx(1, "type %s too long\n", av[0]);
-			strcpy(sch->name, av[0]);
+			strlcpy(sch->name, av[0], sizeof(sch->name));
 			sch->oid.subtype = 0; /* use string */
 #ifdef NEW_AQM
 			/* if fq_codel is selected, consider all tokens after it
 			 * as parameters
 			 */
 			if (!strcasecmp(av[0],"fq_codel") || !strcasecmp(av[0],"fq_pie")){
-				strcpy(sch_extra->name,av[0]);
+				strlcpy(sch_extra->name, av[0],
+				    sizeof(sch_extra->name));
 				sch_extra->oid.subtype = DN_SCH_PARAMS;
 				process_extra_parms(&ac, av, sch_extra, tok);
 			} else {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201706131457.v5DEvmiu034965>