Sophie

Sophie

distrib > Mageia > 3 > i586 > media > core-release-src > by-pkgid > 5b6b1fc478e114913dc114cd076118b8 > files > 3

rdist-6.1.5-27.mga3.src.rpm

From: "David J. MacKenzie" <djm@web.us.uu.net>
Subject: [Notice] rdist environment limit exceeded
To: bugs@linux-mandrake.com
Date: Sat, 15 Apr 2000 15:49:01 -0400

Package: rdist
Version: 6.1.5-10

I hit an arbitrary limit on the environment size in rdist.
I used "rdist -P rsh" to get whichever rsh comes first in my PATH (the
krb5 rsh, which is in different directories on different machines I use).
My environment contains more than 40 variables, and PATH doesn't
happen to be among the first 40.  Thus, rdist dies with:

djm@dagger 35 $ rdist -P rsh -c /var/tmp/services catapult
catapult: updating host catapult
catapult: LOCAL ERROR: Unexpected input from server: "catapult: LOCAL ERROR: execlp rsh failed: No such file or directory.".
catapult: updating of catapult finished

because the PATH environment variable is not set any longer.

Fix (also sent to the rdist-bugs mailing list):

--- src/setargs.c.old	Mon Nov  9 23:15:56 1998
+++ src/setargs.c	Sat Apr 15 15:30:49 2000
@@ -58,10 +58,9 @@
  * Set process argument functions
  */
 
-#define MAXUSERENVIRON 		40
 char 			      **Argv = NULL;
 char 			       *LastArgv = NULL;
-char 			       *UserEnviron[MAXUSERENVIRON+1];
+char 			      **UserEnviron;
 
 /*
  * Settup things for using setproctitle()
@@ -74,9 +73,15 @@
 	register int 		i;
 	extern char 	      **environ;
 
+	/* Count the size of the environment.  */
+	for (i = 0; envp[i] != NULL; i++)
+		;
+	i++;
+	UserEnviron = (char **) xmalloc(i * sizeof(char *));
+
   	/* Remember the User Environment */
 
-	for (i = 0; i < MAXUSERENVIRON && envp[i] != NULL; i++)
+	for (i = 0; envp[i] != NULL; i++)
 		UserEnviron[i] = strdup(envp[i]);
 	UserEnviron[i] = NULL;
 	environ = UserEnviron;