Module Name:    src
Committed By:   mrg
Date:           Fri Oct  4 09:02:00 UTC 2019

Modified Files:
        src/external/bsd/am-utils/dist/amd: info_ldap.c
        src/external/bsd/nvi/dist/common: options.c
        src/external/bsd/ppp/usr.sbin/pppd: sys-bsd.c
        src/tests/lib/librumphijack: h_client.c
        src/usr.bin/rlogin: rlogin.c

Log Message:
msg:
avoid passing the same pointer in multiple arguments for restrict
marked arguments:
- sigaction() wants separate in/out
- use memmove() not memcpy() for overlapping regions (this may fix
  a real bug in nvi -- but it seems unlikely)
- select() wants separate read/write/except
- sigprocmask() wants separate set/oset


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/external/bsd/am-utils/dist/amd/info_ldap.c
cvs rdiff -u -r1.6 -r1.7 src/external/bsd/nvi/dist/common/options.c
cvs rdiff -u -r1.5 -r1.6 src/external/bsd/ppp/usr.sbin/pppd/sys-bsd.c
cvs rdiff -u -r1.8 -r1.9 src/tests/lib/librumphijack/h_client.c
cvs rdiff -u -r1.44 -r1.45 src/usr.bin/rlogin/rlogin.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/bsd/am-utils/dist/amd/info_ldap.c
diff -u src/external/bsd/am-utils/dist/amd/info_ldap.c:1.2 src/external/bsd/am-utils/dist/amd/info_ldap.c:1.3
--- src/external/bsd/am-utils/dist/amd/info_ldap.c:1.2	Fri Aug 28 11:38:57 2015
+++ src/external/bsd/am-utils/dist/amd/info_ldap.c	Fri Oct  4 09:01:59 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: info_ldap.c,v 1.2 2015/08/28 11:38:57 joerg Exp $	*/
+/*	$NetBSD: info_ldap.c,v 1.3 2019/10/04 09:01:59 mrg Exp $	*/
 
 /*
  * Copyright (c) 1997-2014 Erez Zadok
@@ -197,7 +197,7 @@ amu_ldap_unbind(LDAP *ld)
 {
   int e;
 #ifdef HAVE_SIGACTION
-  struct sigaction sa;
+  struct sigaction sa, osa;
 #else /* not HAVE_SIGACTION */
   void (*handler)(int);
 #endif /* not HAVE_SIGACTION */
@@ -209,7 +209,7 @@ amu_ldap_unbind(LDAP *ld)
   sa.sa_flags = 0;
   sigemptyset(&(sa.sa_mask));
   sigaddset(&(sa.sa_mask), SIGPIPE);
-  sigaction(SIGPIPE, &sa, &sa);	/* set IGNORE, and get old action */
+  sigaction(SIGPIPE, &sa, &osa);	/* set IGNORE, and get old action */
 #else /* not HAVE_SIGACTION */
   handler = signal(SIGPIPE, SIG_IGN);
 #endif /* not HAVE_SIGACTION */
@@ -217,9 +217,9 @@ amu_ldap_unbind(LDAP *ld)
   e = ldap_unbind(ld);
 
 #ifdef HAVE_SIGACTION
-  sigemptyset(&(sa.sa_mask));
-  sigaddset(&(sa.sa_mask), SIGPIPE);
-  sigaction(SIGPIPE, &sa, NULL);
+  sigemptyset(&(osa.sa_mask));
+  sigaddset(&(osa.sa_mask), SIGPIPE);
+  sigaction(SIGPIPE, &osa, NULL);
 #else /* not HAVE_SIGACTION */
   (void) signal(SIGPIPE, handler);
 #endif /* not HAVE_SIGACTION */

Index: src/external/bsd/nvi/dist/common/options.c
diff -u src/external/bsd/nvi/dist/common/options.c:1.6 src/external/bsd/nvi/dist/common/options.c:1.7
--- src/external/bsd/nvi/dist/common/options.c:1.6	Tue Aug  7 08:05:47 2018
+++ src/external/bsd/nvi/dist/common/options.c	Fri Oct  4 09:01:59 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: options.c,v 1.6 2018/08/07 08:05:47 rin Exp $ */
+/*	$NetBSD: options.c,v 1.7 2019/10/04 09:01:59 mrg Exp $ */
 /*-
  * Copyright (c) 1991, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
@@ -16,7 +16,7 @@
 static const char sccsid[] = "Id: options.c,v 10.65 2002/01/18 22:34:43 skimo Exp  (Berkeley) Date: 2002/01/18 22:34:43 ";
 #endif /* not lint */
 #else
-__RCSID("$NetBSD: options.c,v 1.6 2018/08/07 08:05:47 rin Exp $");
+__RCSID("$NetBSD: options.c,v 1.7 2019/10/04 09:01:59 mrg Exp $");
 #endif
 
 #include <sys/types.h>
@@ -356,7 +356,7 @@ opts_init(SCR *sp, int *oargs)
 #define	OI(indx, str) {							\
 	a.len = STRLEN(str);						\
 	if ((const CHAR_T*)str != b2)/* GCC puts strings in text-space. */\
-		(void)MEMCPY(b2, str, a.len+1);				\
+		(void)MEMMOVE(b2, str, a.len+1);			\
 	if (opts_set(sp, argv, NULL)) {					\
 		 optindx = indx;					\
 		goto err;						\

Index: src/external/bsd/ppp/usr.sbin/pppd/sys-bsd.c
diff -u src/external/bsd/ppp/usr.sbin/pppd/sys-bsd.c:1.5 src/external/bsd/ppp/usr.sbin/pppd/sys-bsd.c:1.6
--- src/external/bsd/ppp/usr.sbin/pppd/sys-bsd.c:1.5	Sun Jul  8 21:01:21 2018
+++ src/external/bsd/ppp/usr.sbin/pppd/sys-bsd.c	Fri Oct  4 09:01:59 2019
@@ -1045,11 +1045,12 @@ output(int unit, u_char *p, int len)
 void
 wait_input(struct timeval *timo)
 {
-    fd_set ready;
+    fd_set ready, eready;
     int n;
 
     ready = in_fds;
-    n = select(max_in_fd + 1, &ready, NULL, &ready, timo);
+    eready = in_fds;
+    n = select(max_in_fd + 1, &ready, NULL, &eready, timo);
     if (n < 0 && errno != EINTR)
 	fatal("%s: select: %m", __func__);
 }

Index: src/tests/lib/librumphijack/h_client.c
diff -u src/tests/lib/librumphijack/h_client.c:1.8 src/tests/lib/librumphijack/h_client.c:1.9
--- src/tests/lib/librumphijack/h_client.c:1.8	Fri Apr 20 05:15:11 2012
+++ src/tests/lib/librumphijack/h_client.c	Fri Oct  4 09:02:00 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: h_client.c,v 1.8 2012/04/20 05:15:11 jruoho Exp $	*/
+/*	$NetBSD: h_client.c,v 1.9 2019/10/04 09:02:00 mrg Exp $	*/
 
 /*
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -71,16 +71,18 @@ main(int argc, char *argv[])
 			errx(EXIT_FAILURE, "stdin fileno is still set");
 		return EXIT_SUCCESS;
 	} else if (strcmp(argv[1], "select_allunset") == 0) {
-		fd_set fds;
+		fd_set rfds, wfds, efds;
 		struct timeval tv;
 		int rv;
 
 		tv.tv_sec = 0;
 		tv.tv_usec = 1;
 
-		FD_ZERO(&fds);
+		FD_ZERO(&rfds);
+		FD_ZERO(&wfds);
+		FD_ZERO(&efds);
 
-		rv = select(100, &fds, &fds, &fds, &tv);
+		rv = select(100, &rfds, &wfds, &efds, &tv);
 		if (rv == -1)
 			err(EXIT_FAILURE, "select");
 		if (rv != 0)

Index: src/usr.bin/rlogin/rlogin.c
diff -u src/usr.bin/rlogin/rlogin.c:1.44 src/usr.bin/rlogin/rlogin.c:1.45
--- src/usr.bin/rlogin/rlogin.c:1.44	Wed Oct 28 08:15:53 2015
+++ src/usr.bin/rlogin/rlogin.c	Fri Oct  4 09:02:00 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: rlogin.c,v 1.44 2015/10/28 08:15:53 shm Exp $	*/
+/*	$NetBSD: rlogin.c,v 1.45 2019/10/04 09:02:00 mrg Exp $	*/
 
 /*
  * Copyright (c) 1983, 1990, 1993
@@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1983, 19
 #if 0
 static char sccsid[] = "@(#)rlogin.c	8.4 (Berkeley) 4/29/95";
 #else
-__RCSID("$NetBSD: rlogin.c,v 1.44 2015/10/28 08:15:53 shm Exp $");
+__RCSID("$NetBSD: rlogin.c,v 1.45 2019/10/04 09:02:00 mrg Exp $");
 #endif
 #endif /* not lint */
 
@@ -132,7 +132,7 @@ main(int argc, char *argv[])
 	struct passwd *pw;
 	struct servent *sp;
 	struct termios tty;
-	sigset_t smask;
+	sigset_t imask, omask;
 	uid_t uid;
 	int argoff, ch, dflag, nflag, one;
 	int i, len, len2;
@@ -247,10 +247,10 @@ main(int argc, char *argv[])
 	sa.sa_handler = lostpeer;
 	(void)sigaction(SIGPIPE, &sa, (struct sigaction *)0);
 	/* will use SIGUSR1 for window size hack, so hold it off */
-	sigemptyset(&smask);
-	sigaddset(&smask, SIGURG);
-	sigaddset(&smask, SIGUSR1);
-	(void)sigprocmask(SIG_SETMASK, &smask, &smask);
+	sigemptyset(&imask);
+	sigaddset(&imask, SIGURG);
+	sigaddset(&imask, SIGUSR1);
+	(void)sigprocmask(SIG_SETMASK, &imask, &omask);
 	/*
 	 * We set SIGURG and SIGUSR1 below so that an
 	 * incoming signal will be held pending rather than being
@@ -291,7 +291,7 @@ main(int argc, char *argv[])
 	}
 
 	(void)setuid(uid);
-	doit(&smask);
+	doit(&omask);
 	/*NOTREACHED*/
 	return (0);
 }
@@ -345,21 +345,21 @@ doit(sigset_t *smask)
 static void
 setsignal(int sig)
 {
-	struct sigaction sa;
-	sigset_t sigs;
-
-	sigemptyset(&sigs);
-	sigaddset(&sigs, sig);
-	sigprocmask(SIG_BLOCK, &sigs, &sigs);
+	struct sigaction isa, osa;
+	sigset_t isigs, osigs;
 
-	sigemptyset(&sa.sa_mask);
-	sa.sa_handler = exit;
-	sa.sa_flags = SA_RESTART;
-	(void)sigaction(sig, &sa, &sa);
-	if (sa.sa_handler == SIG_IGN)
-		(void)sigaction(sig, &sa, (struct sigaction *) 0);
+	sigemptyset(&isigs);
+	sigaddset(&isigs, sig);
+	sigprocmask(SIG_BLOCK, &isigs, &osigs);
+
+	sigemptyset(&isa.sa_mask);
+	isa.sa_handler = exit;
+	isa.sa_flags = SA_RESTART;
+	(void)sigaction(sig, &isa, &osa);
+	if (osa.sa_handler == SIG_IGN)
+		(void)sigaction(sig, &osa, (struct sigaction *) 0);
 
-	(void)sigprocmask(SIG_SETMASK, &sigs, (sigset_t *) 0);
+	(void)sigprocmask(SIG_SETMASK, &osigs, (sigset_t *) 0);
 }
 
 static void

Reply via email to