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