CVS commit: src/usr.bin/rsh

2014-10-30 Thread David A. Holland
Module Name:src
Committed By:   dholland
Date:   Thu Oct 30 06:13:50 UTC 2014

Modified Files:
src/usr.bin/rsh: rsh.c

Log Message:
Drop setuid before execing rlogin. Failure to do so should be
harmless, but is sloppy.


To generate a diff of this commit:
cvs rdiff -u -r1.36 -r1.37 src/usr.bin/rsh/rsh.c

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

Modified files:

Index: src/usr.bin/rsh/rsh.c
diff -u src/usr.bin/rsh/rsh.c:1.36 src/usr.bin/rsh/rsh.c:1.37
--- src/usr.bin/rsh/rsh.c:1.36	Sun Jun  8 02:44:15 2014
+++ src/usr.bin/rsh/rsh.c	Thu Oct 30 06:13:50 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: rsh.c,v 1.36 2014/06/08 02:44:15 enami Exp $	*/
+/*	$NetBSD: rsh.c,v 1.37 2014/10/30 06:13:50 dholland Exp $	*/
 
 /*-
  * Copyright (c) 1983, 1990, 1993, 1994
@@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1983, 19
 #if 0
 static char sccsid[] = @(#)rsh.c	8.4 (Berkeley) 4/29/95;
 #else
-__RCSID($NetBSD: rsh.c,v 1.36 2014/06/08 02:44:15 enami Exp $);
+__RCSID($NetBSD: rsh.c,v 1.37 2014/10/30 06:13:50 dholland Exp $);
 #endif
 #endif /* not lint */
 
@@ -203,6 +203,7 @@ main(int argc, char **argv)
 #else
 		if (asrsh)
 			*argv = __UNCONST(rlogin);
+		setuid(uid);
 		execv(_PATH_RLOGIN, argv);
 		err(1, can't exec %s, _PATH_RLOGIN);
 #endif



CVS commit: src/usr.bin/rsh

2014-06-07 Thread enami tsugutomo
Module Name:src
Committed By:   enami
Date:   Sun Jun  8 01:44:52 UTC 2014

Modified Files:
src/usr.bin/rsh: rsh.c

Log Message:
Remove kerberos support code completely.  It no longer compiles anyway.
OK'ed by christos on tech-userlevel.


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/usr.bin/rsh/rsh.c

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

Modified files:

Index: src/usr.bin/rsh/rsh.c
diff -u src/usr.bin/rsh/rsh.c:1.33 src/usr.bin/rsh/rsh.c:1.34
--- src/usr.bin/rsh/rsh.c:1.33	Mon Aug 29 14:22:46 2011
+++ src/usr.bin/rsh/rsh.c	Sun Jun  8 01:44:52 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: rsh.c,v 1.33 2011/08/29 14:22:46 joerg Exp $	*/
+/*	$NetBSD: rsh.c,v 1.34 2014/06/08 01:44:52 enami Exp $	*/
 
 /*-
  * Copyright (c) 1983, 1990, 1993, 1994
@@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1983, 19
 #if 0
 static char sccsid[] = @(#)rsh.c	8.4 (Berkeley) 4/29/95;
 #else
-__RCSID($NetBSD: rsh.c,v 1.33 2011/08/29 14:22:46 joerg Exp $);
+__RCSID($NetBSD: rsh.c,v 1.34 2014/06/08 01:44:52 enami Exp $);
 #endif
 #endif /* not lint */
 
@@ -282,13 +282,8 @@ main(int argc, char **argv)
 	else
 		pid = -1;
 
-#if defined(KERBEROS)  defined(CRYPT)
-	if (!doencrypt)
-#endif
-	{
-		(void)ioctl(remerr, FIONBIO, one);
-		(void)ioctl(rem, FIONBIO, one);
-	}
+	(void)ioctl(remerr, FIONBIO, one);
+	(void)ioctl(rem, FIONBIO, one);
 
 	talk(nflag, oset, pid, rem);
 
@@ -310,12 +305,7 @@ checkfd(struct pollfd *fdp, int outfd)
 		return 0;
 
 	errno = 0;
-#if defined(KERBEROS)  defined(CRYPT)
-	if (doencrypt)
-		nr = des_read(fdp-fd, buf, sizeof buf);
-	else
-#endif
-		nr = read(fdp-fd, buf, sizeof buf);
+	nr = read(fdp-fd, buf, sizeof buf);
 
 	if (nr = 0) {
 		if (errno != EAGAIN)
@@ -380,12 +370,7 @@ rewrite:		if (poll(fdp, 1, INFTIM) == -1
 			if ((fdp-revents  POLLOUT) == 0)
 goto rewrite;
 
-#if defined(KERBEROS)  defined(CRYPT)
-			if (doencrypt)
-nw = des_write(rem, bp, nr);
-			else
-#endif
-nw = write(rem, bp, nr);
+			nw = write(rem, bp, nr);
 
 			if (nw  0) {
 if (errno == EAGAIN)



CVS commit: src/usr.bin/rsh

2014-06-07 Thread enami tsugutomo
Module Name:src
Committed By:   enami
Date:   Sun Jun  8 02:02:41 UTC 2014

Modified Files:
src/usr.bin/rsh: rsh.c

Log Message:
Whitespace nits.


To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.35 src/usr.bin/rsh/rsh.c

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

Modified files:

Index: src/usr.bin/rsh/rsh.c
diff -u src/usr.bin/rsh/rsh.c:1.34 src/usr.bin/rsh/rsh.c:1.35
--- src/usr.bin/rsh/rsh.c:1.34	Sun Jun  8 01:44:52 2014
+++ src/usr.bin/rsh/rsh.c	Sun Jun  8 02:02:41 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: rsh.c,v 1.34 2014/06/08 01:44:52 enami Exp $	*/
+/*	$NetBSD: rsh.c,v 1.35 2014/06/08 02:02:41 enami Exp $	*/
 
 /*-
  * Copyright (c) 1983, 1990, 1993, 1994
@@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1983, 19
 #if 0
 static char sccsid[] = @(#)rsh.c	8.4 (Berkeley) 4/29/95;
 #else
-__RCSID($NetBSD: rsh.c,v 1.34 2014/06/08 01:44:52 enami Exp $);
+__RCSID($NetBSD: rsh.c,v 1.35 2014/06/08 02:02:41 enami Exp $);
 #endif
 #endif /* not lint */
 
@@ -300,7 +300,7 @@ checkfd(struct pollfd *fdp, int outfd)
 
 	if (fdp-revents  (POLLNVAL|POLLERR|POLLHUP))
 		return -1;
-	   
+
 	if ((fdp-revents  POLLIN) == 0)
 		return 0;
 
@@ -416,7 +416,7 @@ sendsig(int sig)
 	char signo;
 
 	signo = sig;
-		(void)write(remerr, signo, 1);
+	(void)write(remerr, signo, 1);
 }
 
 



CVS commit: src/usr.bin/rsh

2014-06-07 Thread enami tsugutomo
Module Name:src
Committed By:   enami
Date:   Sun Jun  8 02:44:15 UTC 2014

Modified Files:
src/usr.bin/rsh: rsh.c

Log Message:
Fix signal delivery to remote process; As described in rcmd(3), a signal
is delivered to the remote process via the secondary channel.  So,
the backend driver, rcmd(1), is responsible to watch the file descriptor 2
and transfer the data to the remote process, rather than receiving signal
by itself.  Previously, signal generated by tty was sent since rcmd was
incorrectly generated the data, but, for example, signal sent to rsh command
by kill command was ignored.


To generate a diff of this commit:
cvs rdiff -u -r1.35 -r1.36 src/usr.bin/rsh/rsh.c

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

Modified files:

Index: src/usr.bin/rsh/rsh.c
diff -u src/usr.bin/rsh/rsh.c:1.35 src/usr.bin/rsh/rsh.c:1.36
--- src/usr.bin/rsh/rsh.c:1.35	Sun Jun  8 02:02:41 2014
+++ src/usr.bin/rsh/rsh.c	Sun Jun  8 02:44:15 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: rsh.c,v 1.35 2014/06/08 02:02:41 enami Exp $	*/
+/*	$NetBSD: rsh.c,v 1.36 2014/06/08 02:44:15 enami Exp $	*/
 
 /*-
  * Copyright (c) 1983, 1990, 1993, 1994
@@ -39,7 +39,7 @@ __COPYRIGHT(@(#) Copyright (c) 1983, 19
 #if 0
 static char sccsid[] = @(#)rsh.c	8.4 (Berkeley) 4/29/95;
 #else
-__RCSID($NetBSD: rsh.c,v 1.35 2014/06/08 02:02:41 enami Exp $);
+__RCSID($NetBSD: rsh.c,v 1.36 2014/06/08 02:44:15 enami Exp $);
 #endif
 #endif /* not lint */
 
@@ -76,7 +76,9 @@ int	remerr;
 static int sigs[] = { SIGINT, SIGTERM, SIGQUIT };
 
 static char   *copyargs(char **);
+#ifndef IN_RCMD
 static void	sendsig(int);
+#endif
 static int	checkfd(struct pollfd *, int);
 static void	talk(int, sigset_t *, pid_t, int);
 __dead static void	usage(void);
@@ -265,6 +267,7 @@ main(int argc, char **argv)
 
 	(void)sigprocmask(SIG_BLOCK, nset, oset);
 
+#ifndef IN_RCMD
 	for (i = 0; i  sizeof(sigs) / sizeof(sigs[0]); i++) {
 		struct sigaction sa;
 
@@ -273,6 +276,7 @@ main(int argc, char **argv)
 			(void)sigaction(sigs[i], sa, NULL);
 		}
 	}
+#endif
 
 	if (!nflag) {
 		pid = fork();
@@ -329,7 +333,7 @@ static void
 talk(int nflag, sigset_t *oset, __pid_t pid, int rem)
 {
 	int nr, nw, nfds;
-	struct pollfd fds[2], *fdp = fds[0];
+	struct pollfd fds[3], *fdp = fds[0];
 	char *bp, buf[BUFSIZ];
 
 	if (!nflag  pid == 0) {
@@ -385,31 +389,48 @@ done:
 		exit(0);
 	}
 
-	(void)sigprocmask(SIG_SETMASK, oset, NULL);
-	fds[0].events = fds[1].events = POLLIN|POLLNVAL|POLLERR|POLLHUP;
-	fds[0].fd = remerr;
-	fds[1].fd = rem;
+#ifdef IN_RCMD
 	fdp = fds[0];
+	nfds = 3;
+	fds[0].events = POLLIN|POLLNVAL|POLLERR|POLLHUP;
+	fds[0].fd = 2;
+#else
+	(void)sigprocmask(SIG_SETMASK, oset, NULL);
+	fdp = fds[1];
 	nfds = 2;
+	fds[0].events = 0;
+#endif
+	fds[1].events = fds[2].events = POLLIN|POLLNVAL|POLLERR|POLLHUP;
+	fds[1].fd = remerr;
+	fds[2].fd = rem;
 	do {
 		if (poll(fdp, nfds, INFTIM) == -1) {
 			if (errno != EINTR)
 err(1, poll);
 			continue;
 		}
-		if (fds[0].events != 0  checkfd(fds[0], 2) == -1) {
+		if ((fds[1].events != 0  checkfd(fds[1], 2) == -1)
+#ifdef IN_RCMD
+		|| (fds[0].events != 0  checkfd(fds[0], remerr) == -1)
+#endif
+		) {
+			nfds--;
+			fds[1].events = 0;
+#ifdef IN_RCMD
 			nfds--;
 			fds[0].events = 0;
-			fdp = fds[1];
+#endif
+			fdp = fds[2];
 		}
-		if (fds[1].events != 0  checkfd(fds[1], 1) == -1) {
+		if (fds[2].events != 0  checkfd(fds[2], 1) == -1) {
 			nfds--;
-			fds[1].events = 0;
+			fds[2].events = 0;
 		}
 	}
 	while (nfds);
 }
 
+#ifndef IN_RCMD
 static void
 sendsig(int sig)
 {
@@ -418,6 +439,7 @@ sendsig(int sig)
 	signo = sig;
 	(void)write(remerr, signo, 1);
 }
+#endif
 
 
 static char *



CVS commit: src/usr.bin/rsh

2011-08-29 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Mon Aug 29 14:22:47 UTC 2011

Modified Files:
src/usr.bin/rsh: rsh.c

Log Message:
static + __dead


To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/usr.bin/rsh/rsh.c

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

Modified files:

Index: src/usr.bin/rsh/rsh.c
diff -u src/usr.bin/rsh/rsh.c:1.32 src/usr.bin/rsh/rsh.c:1.33
--- src/usr.bin/rsh/rsh.c:1.32	Sat Oct  2 09:24:16 2010
+++ src/usr.bin/rsh/rsh.c	Mon Aug 29 14:22:46 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: rsh.c,v 1.32 2010/10/02 09:24:16 gson Exp $	*/
+/*	$NetBSD: rsh.c,v 1.33 2011/08/29 14:22:46 joerg Exp $	*/
 
 /*-
  * Copyright (c) 1983, 1990, 1993, 1994
@@ -39,7 +39,7 @@
 #if 0
 static char sccsid[] = @(#)rsh.c	8.4 (Berkeley) 4/29/95;
 #else
-__RCSID($NetBSD: rsh.c,v 1.32 2010/10/02 09:24:16 gson Exp $);
+__RCSID($NetBSD: rsh.c,v 1.33 2011/08/29 14:22:46 joerg Exp $);
 #endif
 #endif /* not lint */
 
@@ -75,12 +75,11 @@
 
 static int sigs[] = { SIGINT, SIGTERM, SIGQUIT };
 
-char   *copyargs(char **);
-void	sendsig(int);
-int	checkfd(struct pollfd *, int);
-void	talk(int, sigset_t *, pid_t, int);
-void	usage(void);
-int	main(int, char **);
+static char   *copyargs(char **);
+static void	sendsig(int);
+static int	checkfd(struct pollfd *, int);
+static void	talk(int, sigset_t *, pid_t, int);
+__dead static void	usage(void);
 #ifdef IN_RCMD
 int	 orcmd(char **, int, const char *,
 const char *, const char *, int *);
@@ -298,7 +297,7 @@
 	exit(0);
 }
 
-int
+static int
 checkfd(struct pollfd *fdp, int outfd)
 {
 	int nr, nw;
@@ -336,7 +335,7 @@
 	}
 }
 
-void
+static void
 talk(int nflag, sigset_t *oset, __pid_t pid, int rem)
 {
 	int nr, nw, nfds;
@@ -426,7 +425,7 @@
 	while (nfds);
 }
 
-void
+static void
 sendsig(int sig)
 {
 	char signo;
@@ -436,7 +435,7 @@
 }
 
 
-char *
+static char *
 copyargs(char **argv)
 {
 	int cc;
@@ -458,7 +457,7 @@
 	return (args);
 }
 
-void
+static void
 usage(void)
 {
 



CVS commit: src/usr.bin/rsh

2010-10-02 Thread Andreas Gustafsson
Module Name:src
Committed By:   gson
Date:   Sat Oct  2 09:24:16 UTC 2010

Modified Files:
src/usr.bin/rsh: rsh.c

Log Message:
putenv() no longer accepts a const string


To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 src/usr.bin/rsh/rsh.c

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

Modified files:

Index: src/usr.bin/rsh/rsh.c
diff -u src/usr.bin/rsh/rsh.c:1.31 src/usr.bin/rsh/rsh.c:1.32
--- src/usr.bin/rsh/rsh.c:1.31	Sun Jan 18 00:42:35 2009
+++ src/usr.bin/rsh/rsh.c	Sat Oct  2 09:24:16 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: rsh.c,v 1.31 2009/01/18 00:42:35 lukem Exp $	*/
+/*	$NetBSD: rsh.c,v 1.32 2010/10/02 09:24:16 gson Exp $	*/
 
 /*-
  * Copyright (c) 1983, 1990, 1993, 1994
@@ -39,7 +39,7 @@
 #if 0
 static char sccsid[] = @(#)rsh.c	8.4 (Berkeley) 4/29/95;
 #else
-__RCSID($NetBSD: rsh.c,v 1.31 2009/01/18 00:42:35 lukem Exp $);
+__RCSID($NetBSD: rsh.c,v 1.32 2010/10/02 09:24:16 gson Exp $);
 #endif
 #endif /* not lint */
 
@@ -135,7 +135,7 @@
 	if ((loop = getenv(RCMD_LOOP))  strcmp(loop, YES) == 0)
 		warnx(rcmd appears to be looping!);
 
-	putenv(RCMD_LOOP=YES);
+	setenv(RCMD_LOOP, YES, 1);
 
 #  define	OPTIONS	468KLdel:np:u:w