]>
Commit | Line | Data |
---|---|---|
ef3b736f | 1 | From: "David J. MacKenzie" <djm@web.us.uu.net> |
2 | Subject: [Notice] rdist environment limit exceeded | |
3 | To: bugs@linux-mandrake.com | |
4 | Date: Sat, 15 Apr 2000 15:49:01 -0400 | |
5 | ||
6 | Package: rdist | |
7 | Version: 6.1.5-10 | |
8 | ||
9 | I hit an arbitrary limit on the environment size in rdist. | |
10 | I used "rdist -P rsh" to get whichever rsh comes first in my PATH (the | |
11 | krb5 rsh, which is in different directories on different machines I use). | |
12 | My environment contains more than 40 variables, and PATH doesn't | |
13 | happen to be among the first 40. Thus, rdist dies with: | |
14 | ||
15 | djm@dagger 35 $ rdist -P rsh -c /var/tmp/services catapult | |
16 | catapult: updating host catapult | |
17 | catapult: LOCAL ERROR: Unexpected input from server: "catapult: LOCAL ERROR: execlp rsh failed: No such file or directory.". | |
18 | catapult: updating of catapult finished | |
19 | ||
20 | because the PATH environment variable is not set any longer. | |
21 | ||
22 | Fix (also sent to the rdist-bugs mailing list): | |
23 | ||
24 | --- src/setargs.c.old Mon Nov 9 23:15:56 1998 | |
25 | +++ src/setargs.c Sat Apr 15 15:30:49 2000 | |
26 | @@ -58,10 +58,9 @@ | |
27 | * Set process argument functions | |
28 | */ | |
29 | ||
30 | -#define MAXUSERENVIRON 40 | |
31 | char **Argv = NULL; | |
32 | char *LastArgv = NULL; | |
33 | -char *UserEnviron[MAXUSERENVIRON+1]; | |
34 | +char **UserEnviron; | |
35 | ||
36 | /* | |
37 | * Settup things for using setproctitle() | |
38 | @@ -74,9 +73,15 @@ | |
39 | register int i; | |
40 | extern char **environ; | |
41 | ||
42 | + /* Count the size of the environment. */ | |
43 | + for (i = 0; envp[i] != NULL; i++) | |
44 | + ; | |
45 | + i++; | |
46 | + UserEnviron = (char **) xmalloc(i * sizeof(char *)); | |
47 | + | |
48 | /* Remember the User Environment */ | |
49 | ||
50 | - for (i = 0; i < MAXUSERENVIRON && envp[i] != NULL; i++) | |
51 | + for (i = 0; envp[i] != NULL; i++) | |
52 | UserEnviron[i] = strdup(envp[i]); | |
53 | UserEnviron[i] = NULL; | |
54 | environ = UserEnviron; | |
55 |