exploit the possibilities
Home Files News &[SERVICES_TAB]About Contact Add New

rdist-patches

rdist-patches
Posted Dec 21, 1999

rdist-patches

tags | encryption
SHA-256 | de8a7a622d58f6e06b449c0946a7e7f67ff61710a37c8de8fcf0054bf2e64836

rdist-patches

Change Mirror Download
Summary for making sdist:

- Take rdist-6.1.0
- Make the patches below
- Write a front-end script "sdist", that essentially runs "rdist -P ssh"

Sdist will later be merged into the distribution (probably in ssh-1.3.1).

12 January 1996 //ylo



From ssh-owner@clinet.fi Mon Oct 16 21:05:04 1995
Subject: Re: Follow-up: rdist via ssh
To: cbh@cs.washington.edu (craig horman)
Date: Mon, 16 Oct 1995 20:05:04 +0100 (MET)
In-Reply-To: <Pine.LNX.3.91.951015133659.11297A-100000@yeahwell.cs.washington.edu> from "craig horman" at Oct 15, 95 02:02:46 pm
From: Thomas.Koenig@ciw.uni-karlsruhe.de (Thomas König)
X-Mailer: ELM [version 2.4 PL24 ME8b]
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
Content-Length: 7976
Sender: ig25@mvmampc66.ciw.uni-karlsruhe.de


craig horman wrote:

>The problem: rdistd writes to stdin (!?) when it begins dialogue with
>the rdist client end.

Please try the following patch, against stock rdist-6.1.0 (you might
need to unapply the Linux patches before, with
"patch -p1 -R < README.Linux", if you've got the Linux version of
rdist), and see wether this helps.

I'll forward this to the rdist maintainers if it works, but they
haven't even integrated the other set of patches yet *sigh*.

Thomas

diff -u --recursive rdist-6.1.0/include/defs.h rdist-6.1.0-l2/include/defs.h
--- rdist-6.1.0/include/defs.h Tue Apr 12 01:19:22 1994
+++ rdist-6.1.0-l2/include/defs.h Mon Oct 16 19:43:18 1995
@@ -325,7 +325,8 @@
extern opt_t options; /* Global options */
extern int proto_version; /* Protocol version number */
extern int realargc; /* Real argc */
-extern int rem; /* Remote file descriptor */
+extern int rem_r; /* Remote file descriptor, reading */
+extern int rem_w; /* Remote file descriptor, writing */
extern int rtimeout; /* Response time out in seconds */
extern UID_T userid; /* User ID of rdist user */
extern jmp_buf finish_jmpbuf; /* Setjmp buffer for finish() */
diff -u --recursive rdist-6.1.0/mf/Makefile.var rdist-6.1.0-l2/mf/Makefile.var
--- rdist-6.1.0/mf/Makefile.var Tue Apr 12 01:20:17 1994
+++ rdist-6.1.0-l2/mf/Makefile.var Mon Jun 5 16:57:30 1995
@@ -95,7 +95,7 @@
#
#YACC = bison -y

-OPT = -g
+OPT = -O2 -fomit-frame-pointer
RM = rm
AR = ar
RANLIB = ranlib
diff -u --recursive rdist-6.1.0/src/child.c rdist-6.1.0-l2/src/child.c
--- rdist-6.1.0/src/child.c Thu Mar 31 04:56:26 1994
+++ rdist-6.1.0-l2/src/child.c Mon Jun 5 16:49:38 1995
@@ -203,8 +203,16 @@
debugmsg(DM_MISC, "[readchild(%s, %d, %d) got %d bytes]",
child->c_name, child->c_pid, child->c_readfd, amt);

- write(fileno(stdout), rbuf, amt);
-
+ {
+ int wamt=amt, ramt, woff=0;
+ while ((ramt = write(fileno(stdout), rbuf+woff, wamt)) > 0) {
+ woff += ramt; wamt -= ramt;
+ debugmsg(DM_MISC,
+ "[readchild(%s, %d, %d) only wrote %d/%d bytes]",
+ child->c_name, child->c_pid, child->c_readfd,
+ ramt, wamt);
+ }
+ }
debugmsg(DM_MISC, "[readchild(%s, %d, %d) write done]",
child->c_name, child->c_pid, child->c_readfd);
}
diff -u --recursive rdist-6.1.0/src/client.c rdist-6.1.0-l2/src/client.c
--- rdist-6.1.0/src/client.c Fri Apr 22 19:24:01 1994
+++ rdist-6.1.0-l2/src/client.c Mon Oct 16 19:44:27 1995
@@ -429,12 +429,18 @@
* this situation gracefully.
*/
}
- if (write(rem, buf, amt) == -1) {
- error("%s: Error writing to client: %s",
- target, SYSERR);
- err();
- ++goterr;
- break;
+ {
+ int ramt, wamt=amt, woff=0;
+ while((ramt=write(rem_w,buf+woff,wamt)) > 0) {
+ woff += ramt; wamt -= ramt;
+ }
+ if (ramt < 0) {
+ error("%s: Error writing to client: %s",
+ target, SYSERR);
+ err();
+ ++goterr;
+ break;
+ }
}
(void) alarm(0);
}
diff -u --recursive rdist-6.1.0/src/common.c rdist-6.1.0-l2/src/common.c
--- rdist-6.1.0/src/common.c Wed Apr 20 20:11:03 1994
+++ rdist-6.1.0-l2/src/common.c Mon Oct 16 19:53:09 1995
@@ -64,7 +64,8 @@
int do_fork = 1; /* Fork child process */
char *currenthost = NULL; /* Current client hostname */
char *progname = NULL; /* Name of this program */
-int rem = -1; /* Client file descriptor */
+int rem_r = -1; /* Client file descriptor */
+int rem_w = -1; /* Client file descriptor */
struct passwd *pw = NULL; /* Local user's pwd entry */
int contimedout = FALSE; /* Connection timed out */
int proto_version = -1; /* Protocol version */
@@ -176,7 +177,7 @@
/* Prevent looping */
(void) signal(SIGPIPE, SIG_IGN);

- rem = -1; /* Ensure we don't try to send to server */
+ rem_r = rem_w = -1; /* Ensure we don't try to send to server */
checkhostname();
error("Lost connection to %s",
(currenthost) ? currenthost : "(unknown)");
@@ -247,7 +248,7 @@
{
int len;

- if (rem < 0)
+ if (rem_w < 0)
return(-1);

/*
@@ -268,7 +269,13 @@
(cmd == C_NONE) ? len-1 : len-2,
(cmd == C_NONE) ? msg : msg + 1);

- return(!(write(rem, msg, len) == len));
+ {
+ int ramt, wamt=len, woff=0;
+ while((ramt = write(rem_w,msg+woff,wamt)) > 0) {
+ woff += ramt; wamt -= ramt;
+ }
+ return ramt<0;
+ }
}

/*
@@ -368,7 +375,7 @@
(void) signal(SIGALRM, sighandler);
(void) alarm(rtimeout);

- remleft = remread(rem, rembuf, sizeof(rembuf));
+ remleft = remread(rem_r, rembuf, sizeof(rembuf));

(void) alarm(0);

@@ -396,7 +403,7 @@
register int c, left = space;
register u_char *p = buffer;

- if (rem < 0) {
+ if (rem_r < 0) {
error("Cannot read remote input: Remote descriptor not open.");
return(-1);
}
@@ -460,7 +467,7 @@
(void) signal(SIGALRM, sighandler);
(void) alarm(rtimeout);

- remleft = remread(rem, rembuf, sizeof(rembuf));
+ remleft = remread(rem_r, rembuf, sizeof(rembuf));

(void) alarm(0);
remptr = rembuf;
@@ -808,7 +815,7 @@
continue;
}
if (isserver)
- (void) write(rem, sbuf, s - sbuf);
+ (void) write(rem_w, sbuf, s - sbuf);
else {
*s = CNULL;
message(MT_INFO, "%s", sbuf+1);
@@ -819,7 +826,7 @@
if (s > (char *) &sbuf[1]) {
*s++ = '\n';
if (isserver)
- (void) write(rem, sbuf, s - sbuf);
+ (void) write(rem_w, sbuf, s - sbuf);
else {
*s = CNULL;
message(MT_INFO, "%s", sbuf+1);
@@ -885,7 +892,7 @@
}

extern char *basename(path)
- char *path;
+ const char *path;
{
register char *cp;

diff -u --recursive rdist-6.1.0/src/docmd.c rdist-6.1.0-l2/src/docmd.c
--- rdist-6.1.0/src/docmd.c Tue Apr 26 19:10:09 1994
+++ rdist-6.1.0-l2/src/docmd.c Mon Oct 16 19:47:20 1995
@@ -72,13 +72,15 @@
{
debugmsg(DM_CALL, "closeconn() called\n");

- if (rem >= 0) {
+ if (rem_w >= 0) {
/* We don't care if the connection is still good or not */
signal(SIGPIPE, SIG_IGN);

(void) sendcmd(C_FERRMSG, NULL);
- (void) close(rem);
- rem = -1;
+ (void) close(rem_w);
+ (void) close(rem_r); /* This can't hurt */
+ rem_w = -1;
+ rem_r = -1;
}
}

@@ -313,7 +315,7 @@
/*
* See if we're already connected to this host
*/
- if (cur_host != NULL && rem >= 0) {
+ if (cur_host != NULL && rem_w >= 0) {
if (strcmp(cur_host, rhost) == 0)
return(1);
closeconn();
@@ -345,7 +347,7 @@

(void) sprintf(buf, "%.*s -S", sizeof(buf)-5, path_rdistd);

- if ((rem = remotecmd(rhost, locuser, ruser, buf)) < 0)
+ if ((rem_r = rem_w = remotecmd(rhost, locuser, ruser, buf)) < 0)
return(0);

/*
diff -u --recursive rdist-6.1.0/src/message.c rdist-6.1.0-l2/src/message.c
--- rdist-6.1.0/src/message.c Wed Apr 20 19:53:29 1994
+++ rdist-6.1.0-l2/src/message.c Mon Oct 16 19:48:25 1995
@@ -325,7 +325,7 @@
char cmd;

if (isserver) {
- if (rem < 0 || IS_ON(flags, MT_NOREMOTE))
+ if (rem_w < 0 || IS_ON(flags, MT_NOREMOTE))
return;

cmd = CNULL;
diff -u --recursive rdist-6.1.0/src/rdistd.c rdist-6.1.0-l2/src/rdistd.c
--- rdist-6.1.0/src/rdistd.c Sat Feb 26 00:53:38 1994
+++ rdist-6.1.0-l2/src/rdistd.c Mon Oct 16 19:53:52 1995
@@ -95,8 +95,9 @@
exit(1);
}

- /* Use stdin for remote descriptor */
- rem = fileno(stdin);
+ /* Use stdin and stdout for remote descriptors */
+ rem_r = fileno(stdin);
+ rem_w = fileno(stdout);

/* Set logging */
if (cp = msgparseopts(localmsglist, TRUE))
diff -u --recursive rdist-6.1.0/src/server.c rdist-6.1.0-l2/src/server.c
--- rdist-6.1.0/src/server.c Tue Apr 26 18:58:56 1994
+++ rdist-6.1.0-l2/src/server.c Mon Jun 5 17:03:51 1995
@@ -230,7 +230,7 @@
} else
gid = gr->gr_gid;

- if (userid && gid >= 0 && gid != primegid) {
+ if (userid && gid >= 0x7fff && gid != primegid) {
if (gr)
for (i = 0; gr->gr_mem[i] != NULL; i++)
if (strcmp(locuser, gr->gr_mem[i]) == 0)
--
Thomas König, Thomas.Koenig@ciw.uni-karlsruhe.de, ig25@dkauni2.bitnet.
The joy of engineering is to find a straight line on a double
logarithmic diagram.
Login or Register to add favorites

File Archive:

April 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Apr 1st
    10 Files
  • 2
    Apr 2nd
    26 Files
  • 3
    Apr 3rd
    40 Files
  • 4
    Apr 4th
    6 Files
  • 5
    Apr 5th
    26 Files
  • 6
    Apr 6th
    0 Files
  • 7
    Apr 7th
    0 Files
  • 8
    Apr 8th
    22 Files
  • 9
    Apr 9th
    14 Files
  • 10
    Apr 10th
    10 Files
  • 11
    Apr 11th
    13 Files
  • 12
    Apr 12th
    14 Files
  • 13
    Apr 13th
    0 Files
  • 14
    Apr 14th
    0 Files
  • 15
    Apr 15th
    30 Files
  • 16
    Apr 16th
    10 Files
  • 17
    Apr 17th
    22 Files
  • 18
    Apr 18th
    45 Files
  • 19
    Apr 19th
    0 Files
  • 20
    Apr 20th
    0 Files
  • 21
    Apr 21st
    0 Files
  • 22
    Apr 22nd
    0 Files
  • 23
    Apr 23rd
    0 Files
  • 24
    Apr 24th
    0 Files
  • 25
    Apr 25th
    0 Files
  • 26
    Apr 26th
    0 Files
  • 27
    Apr 27th
    0 Files
  • 28
    Apr 28th
    0 Files
  • 29
    Apr 29th
    0 Files
  • 30
    Apr 30th
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close