summaryrefslogtreecommitdiffstats
path: root/src/appl/bsd/krcp.c
diff options
context:
space:
mode:
authorMark Eichin <eichin@mit.edu>1994-08-05 23:45:30 +0000
committerMark Eichin <eichin@mit.edu>1994-08-05 23:45:30 +0000
commit187ec3b1e51a42c10f5f57143c524a610176d651 (patch)
treeae93ff37eb969756f47e98edb056c9586402994d /src/appl/bsd/krcp.c
parent609944a5f7dfa77cf0964e75f134da445a113b67 (diff)
downloadkrb5-187ec3b1e51a42c10f5f57143c524a610176d651.tar.gz
krb5-187ec3b1e51a42c10f5f57143c524a610176d651.tar.xz
krb5-187ec3b1e51a42c10f5f57143c524a610176d651.zip
rest of signal cleanups plus strsave
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4053 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/appl/bsd/krcp.c')
-rw-r--r--src/appl/bsd/krcp.c39
1 files changed, 32 insertions, 7 deletions
diff --git a/src/appl/bsd/krcp.c b/src/appl/bsd/krcp.c
index 57b5d8464e..b181a5cabe 100644
--- a/src/appl/bsd/krcp.c
+++ b/src/appl/bsd/krcp.c
@@ -1,12 +1,7 @@
/*
- * $Source$
- * $Header$
+ * appl/bsd/krcp.c
*/
-#ifndef lint
-static char *rcsid_rcp_c = "$Header$";
-#endif /* lint */
-
/*
* Copyright (c) 1983 The Regents of the University of California.
* All rights reserved.
@@ -60,6 +55,11 @@ static char sccsid[] = "@(#)rcp.c 5.10 (Berkeley) 9/20/88";
#include <errno.h>
#include <string.h>
+#ifdef HAVE_SETRESUID
+#ifndef HAVE_SETREUID
+#define setreuid(r,e) setresuid(r,e,-1)
+#endif
+#endif
#ifndef roundup
#define roundup(x,y) ((((x)+(y)-1)/(y))*(y))
#endif
@@ -88,7 +88,10 @@ krb5_encrypt_block eblock; /* eblock for encrypt/decrypt */
krb5_keyblock *session_key; /* static key for session */
void try_normal();
-char **save_argv(), *strsave();
+char **save_argv();
+#ifndef HAVE_STRSAVE
+char *strsave();
+#endif
int des_write(), des_read();
void send_auth(), answer_auth();
int encryptflag = 0;
@@ -446,17 +449,39 @@ main(argc, argv)
if (encryptflag)
send_auth();
}
+#ifdef HAVE_SETREUID
(void) setreuid(0, userid);
sink(1, argv+argc-1);
(void) setreuid(userid, 0);
#else
+ (void) setuid(0);
+ if(seteuid(userid)) {
+ perror("rcp seteuid user"); errs++; exit(errs);
+ }
+ sink(1, argv+argc-1);
+ if(seteuid(0)) {
+ perror("rcp seteuid 0"); errs++; exit(errs);
+ }
+#endif
+#else
rem = rcmd(&host, port, pwd->pw_name, suser,
buf, 0);
if (rem < 0)
continue;
+#ifdef HAVE_SETREUID
(void) setreuid(0, userid);
sink(1, argv+argc-1);
(void) setreuid(userid, 0);
+#else
+ (void) setuid(0);
+ if(seteuid(userid)) {
+ perror("rcp seteuid user"); errs++; exit(errs);
+ }
+ sink(1, argv+argc-1);
+ if(seteuid(0)) {
+ perror("rcp seteuid 0"); errs++; exit(errs);
+ }
+#endif
#endif /* KERBEROS */
(void) close(rem);
rem = -1;