From a1687222cb9f33b2055d4f06a4583315edec9acc Mon Sep 17 00:00:00 2001 From: rjones Date: Mon, 23 Mar 2009 15:57:23 +0000 Subject: Updated the fakechroot patches. --- fakechroot-svn-no-dup-envs.patch | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 fakechroot-svn-no-dup-envs.patch (limited to 'fakechroot-svn-no-dup-envs.patch') diff --git a/fakechroot-svn-no-dup-envs.patch b/fakechroot-svn-no-dup-envs.patch new file mode 100644 index 0000000..72b33a9 --- /dev/null +++ b/fakechroot-svn-no-dup-envs.patch @@ -0,0 +1,40 @@ +This patch must be applied to fakechroot SVN in order to +stop it from passing duplicated environment variables to +child processes. It is not necessary for fakechroot <= 2.8. + +Index: src/libfakechroot.c +=================================================================== +--- src/libfakechroot.c (revision 311) ++++ src/libfakechroot.c (working copy) +@@ -1479,7 +1479,7 @@ + char *env; + char tmp[FAKECHROOT_MAXPATH], newfilename[FAKECHROOT_MAXPATH], argv0[FAKECHROOT_MAXPATH]; + char *ptr; +- unsigned int i, j, n; ++ unsigned int i, j, n, len; + size_t sizeenvp; + char c; + char *fakechroot_path, *fakechroot_ptr, fakechroot_buf[FAKECHROOT_MAXPATH]; +@@ -1519,12 +1519,19 @@ + errno = ENOMEM; + return -1; + } +- for (ep = envp, i = 0; *ep != NULL; ++ep, ++i) { +- newenvp[i] = *ep; ++ for (ep = envp, i = 0; *ep != NULL; ++ep) { ++ for (j = 0; j < sizeof (envkey) / sizeof (char *); j++) { ++ len = strlen (envkey[j]); ++ if (strncmp (*ep, envkey[j], len) == 0 && (*ep)[len] == '=') ++ goto skip; ++ } ++ newenvp[i] = *ep; ++ i++; ++ skip: ; + } + + /* Add our variables to newenvp */ +- newenvp = realloc( newenvp, ((sizeenvp + 1) * sizeof(char *) + sizeof(envkey)) ); ++ newenvp = realloc( newenvp, i * sizeof(char *) + sizeof(envkey) ); + if (newenvp == NULL) { + errno = ENOMEM; + return -1; -- cgit