]> git.wh0rd.org - dump.git/blobdiff - common/dumprmt.c
noos -> popies.net
[dump.git] / common / dumprmt.c
index dbbe618485159856189496c5ef9d4717cb4d1e9f..4c1bedf23e8a11b298a9b39535ddb931b7af411b 100644 (file)
@@ -2,7 +2,8 @@
  *     Ported to Linux's Second Extended File System as part of the
  *     dump and restore backup suit
  *     Remy Card <card@Linux.EU.Org>, 1994-1997
- *     Stelian Pop <pop@cybercable.fr>, 1999-2000
+ *     Stelian Pop <stelian@popies.net>, 1999-2000
+ *     Stelian Pop <stelian@popies.net> - AlcĂ´ve <www.alcove.com>, 2000-2002
  */
 
 /*-
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: dumprmt.c,v 1.11 2000/01/21 10:17:41 stelian Exp $";
+       "$Id: dumprmt.c,v 1.19 2002/01/16 09:32:14 stelian Exp $";
 #endif /* not lint */
 
-#ifdef __linux__
-#include <sys/types.h>
-#include <linux/types.h>
-#endif
+#include <config.h>
 #include <sys/param.h>
 #include <sys/mtio.h>
 #include <sys/socket.h>
 #include <sys/time.h>
 #ifdef __linux__
+#include <sys/types.h>
+#ifdef HAVE_EXT2FS_EXT2_FS_H
+#include <ext2fs/ext2_fs.h>
+#else
 #include <linux/ext2_fs.h>
+#endif
 #include <bsdcompat.h>
 #include <signal.h>
-#else
-#ifdef sunos
+#elif defined sunos
 #include <sys/vnode.h>
 
 #include <ufs/inode.h>
 #else
 #include <ufs/ufs/dinode.h>
 #endif
-#endif
 
 #include <netinet/in.h>
 #include <netinet/in_systm.h>
@@ -88,8 +89,8 @@ static const char rcsid[] =
 #include <ext2fs/ext2fs.h>
 #endif
 
-#include "pathnames.h"
-#include "dump.h"
+#include <pathnames.h>
+#include "dump.h"      /* for X_STARTUP, X_ABORT etc */
 
 #define        TS_CLOSED       0
 #define        TS_OPEN         1
@@ -205,6 +206,12 @@ rmtgetconn(void)
                rshcmd[4] = rmt;
                rshcmd[5] = NULL;
 
+               /* Restore the uid and gid. We really don't want
+                * to execute whatever is put into RSH variable with
+                * more priviledges than needed... */
+               setuid(getuid());
+               setgid(getgid());
+
                if ((rshpid = piped_child(rshcmd)) < 0) {
                        msg("cannot open connection\n");
                        return 0;
@@ -310,7 +317,7 @@ rmtwrite(const char *buf, size_t count)
 {
        char line[30];
 
-       (void)snprintf(line, sizeof (line), "W%d\n", count);
+       (void)snprintf(line, sizeof (line), "W%ld\n", (long)count);
        write(tormtape, line, strlen(line));
        write(tormtape, buf, count);
        return (rmtreply("write"));