Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Aug 2014 17:04:50 +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: r270231 - head/sbin/devd/tests
Message-ID:  <201408201704.s7KH4oBc008874@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: asomers
Date: Wed Aug 20 17:04:49 2014
New Revision: 270231
URL: http://svnweb.freebsd.org/changeset/base/270231

Log:
  Misc fixes suggested by Coverity.
  
  sbin/devd/tests/client_test.c
  	* In the event that popen fails, don't dereference its return value.
  	* Fix array overwrite in the stream and seqpacket tests.
  	* Close sockets at the end of successful ATF tests.
  
  Reported by:	Coverity scan
  CID:		1232019, 1232020, 1232029, 1232030
  MFC after:	1 week
  Sponsored by:	Spectra Logic

Modified:
  head/sbin/devd/tests/client_test.c

Modified: head/sbin/devd/tests/client_test.c
==============================================================================
--- head/sbin/devd/tests/client_test.c	Wed Aug 20 17:02:37 2014	(r270230)
+++ head/sbin/devd/tests/client_test.c	Wed Aug 20 17:04:49 2014	(r270231)
@@ -58,6 +58,7 @@ create_two_events(void)
 
 	snprintf(destroy_cmd, nitems(destroy_cmd), "mdconfig -d -u %s", mdname);
 	destroy_stdout = popen(destroy_cmd, "r");
+	ATF_REQUIRE(destroy_stdout != NULL);
 	/* We expect no output */
 	ATF_REQUIRE_EQ(0, pclose(destroy_stdout));
 }
@@ -105,7 +106,8 @@ ATF_TC_BODY(seqpacket, tc)
 		ssize_t len;
 		char event[1024];
 
-		len = recv(s, event, sizeof(event), MSG_WAITALL);
+		/* Read 1 less than sizeof(event) to allow space for NULL */
+		len = recv(s, event, sizeof(event) - 1, MSG_WAITALL);
 		ATF_REQUIRE(len != -1);
 		/* NULL terminate the result */
 		event[len] = '\0';
@@ -118,6 +120,8 @@ ATF_TC_BODY(seqpacket, tc)
 		if (cmp == 0)
 			got_destroy_event = true;
 	}
+
+	close(s);
 }
 
 /*
@@ -160,7 +164,8 @@ ATF_TC_BODY(stream, tc)
 		ssize_t newlen;
 		char *create_pos, *destroy_pos;
 
-		newlen = read(s, &event[len], sizeof(event) - len);
+		/* Read 1 less than sizeof(event) to allow space for NULL */
+		newlen = read(s, &event[len], sizeof(event) - len - 1);
 		ATF_REQUIRE(newlen != -1);
 		len += newlen;
 		/* NULL terminate the result */
@@ -174,8 +179,9 @@ ATF_TC_BODY(stream, tc)
 		destroy_pos = strstr(event, destroy_pat);
 		if (destroy_pos != NULL)
 			got_destroy_event = true;
-
 	}
+
+	close(s);
 }
 
 /*



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