Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Mar 2018 03:15:45 +0000 (UTC)
From:      Alan Somers <asomers@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r330731 - in stable/11: contrib/netbsd-tests/kernel tests/sys/kern
Message-ID:  <201803100315.w2A3Fjl4004983@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: asomers
Date: Sat Mar 10 03:15:44 2018
New Revision: 330731
URL: https://svnweb.freebsd.org/changeset/base/330731

Log:
  MFC r328896, r329236
  
  r328896:
  Fix and enable SysV IPC tests.
  
  Don't declare some types that FreeBSD incorrectly declares.
  
  Fix an incorrect call to open() (missing mode).
  
  ANSIfy prototypes.
  
  Enable SysV message queue, semaphore, and shared memory tests.
  
  With exception of the workaround for union semun, these fixes have been
  committed to NetBSD.
  
  Reviewed by:	asomers
  Approved by:	CheriBSD
  Sponsored by:	DARPA, AFRL
  Differential Revision:	https://reviews.freebsd.org/D13471
  
  r329236:
  Fix Coverity CIDs in the sys/kern/sysv_test tests
  
  CID 979810: strcpy => strlcpy
  CID 1193367: don't leak a file descriptor
  CID 1299856: Check the return value of read(2)
  
  Reported by:	Coverity
  Coverity CID:	978910 1193367 1299856
  X-MFC-With:	328896
  Sponsored by:	Spectra Logic Corp

Modified:
  stable/11/contrib/netbsd-tests/kernel/t_sysv.c
  stable/11/tests/sys/kern/Makefile
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/contrib/netbsd-tests/kernel/t_sysv.c
==============================================================================
--- stable/11/contrib/netbsd-tests/kernel/t_sysv.c	Sat Mar 10 03:08:20 2018	(r330730)
+++ stable/11/contrib/netbsd-tests/kernel/t_sysv.c	Sat Mar 10 03:15:44 2018	(r330731)
@@ -72,7 +72,7 @@ void	sharer(void);
 
 #define	MESSAGE_TEXT_LEN	256
 
-struct mymsg {
+struct testmsg {
 	long	mtype;
 	char	mtext[MESSAGE_TEXT_LEN];
 };
@@ -94,11 +94,13 @@ key_t	msgkey, semkey, shmkey;
 
 int	maxloop = 1;
 
+#ifndef __FreeBSD__
 union semun {
 	int	val;		/* value for SETVAL */
 	struct	semid_ds *buf;	/* buffer for IPC_{STAT,SET} */
 	u_short	*array;		/* array for GETALL & SETALL */
 };
+#endif
 
 
 /* Writes an integer to a file.  To be used from the body of the test
@@ -127,7 +129,8 @@ read_int(const char *path)
 		return -1;
 	else {
 		int value;
-		read(input, &value, sizeof(value));
+		ATF_REQUIRE_EQ(read(input, &value, sizeof(value)), sizeof(value));
+		close(input);
 		return value;
 	}
 }
@@ -174,7 +177,7 @@ key_t get_ftok(int id)
 
 	/* Create the file, since ftok() requires it to exist! */
 
-	fd = open(token_key, O_RDWR | O_CREAT | O_EXCL);
+	fd = open(token_key, O_RDWR | O_CREAT | O_EXCL, 0600);
 	if (fd == -1) {
 		rmdir(tmpdir);
 		atf_tc_fail("open() of temp file failed: %d", errno);
@@ -202,7 +205,7 @@ ATF_TC_BODY(msg, tc)
 {
 	struct sigaction sa;
 	struct msqid_ds m_ds;
-	struct mymsg m;
+	struct testmsg m;
 	sigset_t sigmask;
 	int sender_msqid;
 	int loop;
@@ -282,7 +285,7 @@ ATF_TC_BODY(msg, tc)
 		 * Send the first message to the receiver and wait for the ACK.
 		 */
 		m.mtype = MTYPE_1;
-		strcpy(m.mtext, m1_str);
+		strlcpy(m.mtext, m1_str, sizeof(m.mtext));
 		ATF_REQUIRE_MSG(msgsnd(sender_msqid, &m, MESSAGE_TEXT_LEN,
 		    0) != -1, "sender: msgsnd 1: %d", errno);
 
@@ -296,7 +299,7 @@ ATF_TC_BODY(msg, tc)
 		 * Send the second message to the receiver and wait for the ACK.
 		 */
 		m.mtype = MTYPE_2;
-		strcpy(m.mtext, m2_str);
+		strlcpy(m.mtext, m2_str, sizeof(m.mtext));
 		ATF_REQUIRE_MSG(msgsnd(sender_msqid, &m, MESSAGE_TEXT_LEN, 0) != -1,
 		    "sender: msgsnd 2: %d", errno);
 
@@ -347,9 +350,7 @@ ATF_TC_CLEANUP(msg, tc)
 }
 
 void
-print_msqid_ds(mp, mode)
-	struct msqid_ds *mp;
-	mode_t mode;
+print_msqid_ds(struct msqid_ds *mp, mode_t mode)
 {
 	uid_t uid = geteuid();
 	gid_t gid = getegid();
@@ -381,9 +382,9 @@ print_msqid_ds(mp, mode)
 }
 
 void
-receiver()
+receiver(void)
 {
-	struct mymsg m;
+	struct testmsg m;
 	int msqid, loop;
 
 	if ((msqid = msgget(msgkey, 0)) == -1)
@@ -588,9 +589,7 @@ ATF_TC_CLEANUP(sem, tc)
 }
 
 void
-print_semid_ds(sp, mode)
-	struct semid_ds *sp;
-	mode_t mode;
+print_semid_ds(struct semid_ds *sp, mode_t mode)
 {
 	uid_t uid = geteuid();
 	gid_t gid = getegid();
@@ -620,7 +619,7 @@ print_semid_ds(sp, mode)
 }
 
 void
-waiter()
+waiter(void)
 {
 	struct sembuf s;
 	int semid;
@@ -789,9 +788,7 @@ ATF_TC_CLEANUP(shm, tc)
 }
 
 void
-print_shmid_ds(sp, mode)
-	struct shmid_ds *sp;
-	mode_t mode;
+print_shmid_ds(struct shmid_ds *sp, mode_t mode)
 {
 	uid_t uid = geteuid();
 	gid_t gid = getegid();
@@ -823,7 +820,7 @@ print_shmid_ds(sp, mode)
 }
 
 void
-sharer()
+sharer(void)
 {
 	int shmid;
 	void *shm_buf;

Modified: stable/11/tests/sys/kern/Makefile
==============================================================================
--- stable/11/tests/sys/kern/Makefile	Sat Mar 10 03:08:20 2018	(r330730)
+++ stable/11/tests/sys/kern/Makefile	Sat Mar 10 03:15:44 2018	(r330731)
@@ -21,6 +21,7 @@ LIBADD.unix_seqpacket_test+=		pthread
 
 NETBSD_ATF_TESTS_C+=	lockf_test
 NETBSD_ATF_TESTS_C+=	mqueue_test
+NETBSD_ATF_TESTS_C+=	sysv_test
 
 CFLAGS.mqueue_test+=	-I${SRCTOP}/tests
 LIBADD.mqueue_test+=	rt



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