Prepare for 2.5.
[febootstrap.git] / fakechroot-svn-no-dup-envs.patch
1 Note, this patch has been included in upstream fakechroot >= 2.9
2
3 Index: src/libfakechroot.c
4 ===================================================================
5 --- src/libfakechroot.c (revision 311)
6 +++ src/libfakechroot.c (working copy)
7 @@ -1479,7 +1479,7 @@
8      char *env;
9      char tmp[FAKECHROOT_MAXPATH], newfilename[FAKECHROOT_MAXPATH], argv0[FAKECHROOT_MAXPATH];
10      char *ptr;
11 -    unsigned int i, j, n;
12 +    unsigned int i, j, n, len;
13      size_t sizeenvp;
14      char c;
15      char *fakechroot_path, *fakechroot_ptr, fakechroot_buf[FAKECHROOT_MAXPATH];
16 @@ -1519,12 +1519,19 @@
17          errno = ENOMEM;
18          return -1;
19      }
20 -    for (ep = envp, i = 0; *ep != NULL; ++ep, ++i) {
21 -        newenvp[i] = *ep;
22 +    for (ep = envp, i = 0; *ep != NULL; ++ep) {
23 +       for (j = 0; j < sizeof (envkey) / sizeof (char *); j++) {
24 +           len = strlen (envkey[j]);
25 +           if (strncmp (*ep, envkey[j], len) == 0 && (*ep)[len] == '=')
26 +               goto skip;
27 +       }
28 +       newenvp[i] = *ep;
29 +       i++;
30 +    skip: ;
31      }
32  
33      /* Add our variables to newenvp */
34 -    newenvp = realloc( newenvp, ((sizeenvp + 1) * sizeof(char *) + sizeof(envkey)) );
35 +    newenvp = realloc( newenvp, i * sizeof(char *) + sizeof(envkey) );
36      if (newenvp == NULL) {
37          errno = ENOMEM;
38          return -1;