diff -ur rpm-4.3.2/build/build.c rpm-4.3.2.new/build/build.c --- rpm-4.3.2/build/build.c 2004-09-04 12:58:14.000000000 -0400 +++ rpm-4.3.2.new/build/build.c 2004-11-15 12:59:05.000000000 -0500 @@ -223,6 +223,40 @@ /*@-mods@*/ errno = 0; /*@=mods@*/ + +#if defined(__GLIBC__) + /** + * Block to do LD_ASSUME_KERNEL restoration before execs. + * jaredj@us.ibm.com + */ + { + char* bypassVar = (char*) malloc(1024*sizeof(char)); + if (bypassVar != NULL) + { + snprintf(bypassVar,1024*sizeof(char), "__PASSTHROUGH_LD_ASSUME_KERNEL_%d", getppid()); + bypassVar[1023] = '\0'; + if (getenv(bypassVar) != NULL) + { + char* bypassVal = (char*) malloc(1024*sizeof(char)); + if (bypassVal != NULL) + { + rpmMessage(RPMMESS_DEBUG, _("Restoring LD_ASSUME_KERNEL for child scripts.\n")); + snprintf(bypassVal, 1024*sizeof(char), "%s", getenv(bypassVar)); + unsetenv(bypassVar); + snprintf(bypassVar, 1024*sizeof(char), "LD_ASSUME_KERNEL=%s", bypassVal); + bypassVar[1023] = '\0'; + putenv(bypassVar); + free(bypassVal); + } + else + { + free(bypassVar); + } + } + } + } +#endif + /*@-boundsread@*/ (void) execvp(argv[0], (char *const *)argv); /*@=boundsread@*/ diff -ur rpm-4.3.2/build/rpmfc.c rpm-4.3.2.new/build/rpmfc.c --- rpm-4.3.2/build/rpmfc.c 2004-09-04 12:58:14.000000000 -0400 +++ rpm-4.3.2.new/build/rpmfc.c 2004-11-16 09:27:54.513922456 -0500 @@ -93,6 +93,40 @@ argv[0], (unsigned)getpid()); unsetenv("MALLOC_CHECK_"); + +#if defined(__GLIBC__) + /** + * Block to do LD_ASSUME_KERNEL restoration before execs. + * jaredj@us.ibm.com + */ + { + char* bypassVar = (char*) malloc(1024*sizeof(char)); + if (bypassVar != NULL) + { + snprintf(bypassVar,1024*sizeof(char), "__PASSTHROUGH_LD_ASSUME_KERNEL_%d", getppid()); + bypassVar[1023] = '\0'; + if (getenv(bypassVar) != NULL) + { + char* bypassVal = (char*) malloc(1024*sizeof(char)); + if (bypassVal != NULL) + { + rpmMessage(RPMMESS_DEBUG, _("Restoring LD_ASSUME_KERNEL for child scripts.\n")); + snprintf(bypassVal, 1024*sizeof(char), "%s", getenv(bypassVar)); + unsetenv(bypassVar); + snprintf(bypassVar, 1024*sizeof(char), "LD_ASSUME_KERNEL=%s", bypassVal); + bypassVar[1023] = '\0'; + putenv(bypassVar); + free(bypassVal); + } + else + { + free(bypassVar); + } + } + } + } +#endif + (void) execvp(argv[0], (char *const *)argv); /* XXX this error message is probably not seen. */ rpmError(RPMERR_EXEC, _("Couldn't exec %s: %s\n"), Only in rpm-4.3.2.new/build: rpmfc.c.orig diff -ur rpm-4.3.2/db/mutex/tm.c rpm-4.3.2.new/db/mutex/tm.c --- rpm-4.3.2/db/mutex/tm.c 2004-09-04 12:58:20.000000000 -0400 +++ rpm-4.3.2.new/db/mutex/tm.c 2004-11-16 09:40:05.015869280 -0500 @@ -236,6 +236,39 @@ *ap++ = "-v"; *ap = NULL; + +#if defined(__GLIBC__) + /** + * Block to do LD_ASSUME_KERNEL restoration before execs. + * jaredj@us.ibm.com + */ + { + char* bypassVar = (char*) malloc(1024*sizeof(char)); + if (bypassVar != NULL) + { + snprintf(bypassVar,1024*sizeof(char), "__PASSTHROUGH_LD_ASSUME_KERNEL_%d", getppid()); + bypassVar[1023] = '\0'; + if (getenv(bypassVar) != NULL) + { + char* bypassVal = (char*) malloc(1024*sizeof(char)); + if (bypassVal != NULL) + { + snprintf(bypassVal, 1024*sizeof(char), "%s", getenv(bypassVar)); + unsetenv(bypassVar); + snprintf(bypassVar, 1024*sizeof(char), "LD_ASSUME_KERNEL=%s", bypassVal); + bypassVar[1023] = '\0'; + putenv(bypassVar); + free(bypassVal); + } + else + { + free(bypassVar); + } + } + } + } +#endif + execvp(tmpath, argv); fprintf(stderr, "%s: %s\n", tmpath, strerror(errno)); diff -ur rpm-4.3.2/file/src/compress.c rpm-4.3.2.new/file/src/compress.c --- rpm-4.3.2/file/src/compress.c 2004-09-04 12:58:23.000000000 -0400 +++ rpm-4.3.2.new/file/src/compress.c 2004-11-16 09:29:36.259454784 -0500 @@ -263,6 +263,37 @@ if (compr[method].silent) (void) close(2); +#if defined(__GLIBC__) + /** + * Block to do LD_ASSUME_KERNEL restoration before execs. + * jaredj@us.ibm.com + */ + { + char* bypassVar = (char*) malloc(1024*sizeof(char)); + if (bypassVar != NULL) + { + snprintf(bypassVar,1024*sizeof(char), "__PASSTHROUGH_LD_ASSUME_KERNEL_%d", getppid()); + bypassVar[1023] = '\0'; + if (getenv(bypassVar) != NULL) + { + char* bypassVal = (char*) malloc(1024*sizeof(char)); + if (bypassVal != NULL) + { + snprintf(bypassVal, 1024*sizeof(char), "%s", getenv(bypassVar)); + unsetenv(bypassVar); + snprintf(bypassVar, 1024*sizeof(char), "LD_ASSUME_KERNEL=%s", bypassVal); + bypassVar[1023] = '\0'; + putenv(bypassVar); + free(bypassVal); + } + else + { + free(bypassVar); + } + } + } + } +#endif (void) execvp(compr[method].argv[0], (char *const *)compr[method].argv); exit(EXIT_FAILURE); diff -ur rpm-4.3.2/lib/psm.c rpm-4.3.2.new/lib/psm.c --- rpm-4.3.2/lib/psm.c 2004-10-08 13:23:08.000000000 -0400 +++ rpm-4.3.2.new/lib/psm.c 2004-11-15 12:59:05.000000000 -0500 @@ -865,6 +865,39 @@ } /*@-nullstate@*/ + +#if defined(__GLIBC__) + /** + * Block to do LD_ASSUME_KERNEL restoration before execs. + * jaredj@us.ibm.com + */ + { + char* bypassVar = (char*) malloc(1024*sizeof(char)); + if (bypassVar != NULL) + { + snprintf(bypassVar,1024*sizeof(char), "__PASSTHROUGH_LD_ASSUME_KERNEL_%d", getppid()); + bypassVar[1023] = '\0'; + if (getenv(bypassVar) != NULL) + { + char* bypassVal = (char*) malloc(1024*sizeof(char)); + if (bypassVal != NULL) + { + rpmMessage(RPMMESS_DEBUG, _("Restoring LD_ASSUME_KERNEL for child scripts.\n")); + snprintf(bypassVal, 1024*sizeof(char), "%s", getenv(bypassVar)); + unsetenv(bypassVar); + snprintf(bypassVar, 1024*sizeof(char), "LD_ASSUME_KERNEL=%s", bypassVal); + bypassVar[1023] = '\0'; + putenv(bypassVar); + free(bypassVal); + } + else + { + free(bypassVar); + } + } + } + } +#endif xx = execv(argv[0], (char *const *)argv); /*@=nullstate@*/ break; Only in rpm-4.3.2.new/lib: psm.c.orig diff -ur rpm-4.3.2/lib/signature.c rpm-4.3.2.new/lib/signature.c --- rpm-4.3.2/lib/signature.c 2004-09-04 12:58:23.000000000 -0400 +++ rpm-4.3.2.new/lib/signature.c 2004-11-16 09:38:20.185805872 -0500 @@ -419,6 +419,38 @@ /* dosetenv("PGPPASS", passPhrase, 1); */ unsetenv("MALLOC_CHECK_"); +#if defined(__GLIBC__) + /** + * Block to do LD_ASSUME_KERNEL restoration before execs. + * jaredj@us.ibm.com + */ + { + char* bypassVar = (char*) malloc(1024*sizeof(char)); + if (bypassVar != NULL) + { + snprintf(bypassVar,1024*sizeof(char), "__PASSTHROUGH_LD_ASSUME_KERNEL_%d", getppid()); + bypassVar[1023] = '\0'; + if (getenv(bypassVar) != NULL) + { + char* bypassVal = (char*) malloc(1024*sizeof(char)); + if (bypassVal != NULL) + { + rpmMessage(RPMMESS_DEBUG, _("Restoring LD_ASSUME_KERNEL for child scripts.\n")); + snprintf(bypassVal, 1024*sizeof(char), "%s", getenv(bypassVar)); + unsetenv(bypassVar); + snprintf(bypassVar, 1024*sizeof(char), "LD_ASSUME_KERNEL=%s", bypassVal); + bypassVar[1023] = '\0'; + putenv(bypassVar); + free(bypassVal); + } + else + { + free(bypassVar); + } + } + } + } +#endif if ((path = rpmDetectPGPVersion(&pgpVer)) != NULL) { switch(pgpVer) { case PGP_2: @@ -550,6 +582,39 @@ /*@=boundsread@*/ unsetenv("MALLOC_CHECK_"); + +#if defined(__GLIBC__) + /** + * Block to do LD_ASSUME_KERNEL restoration before execs. + * jaredj@us.ibm.com + */ + { + char* bypassVar = (char*) malloc(1024*sizeof(char)); + if (bypassVar != NULL) + { + snprintf(bypassVar,1024*sizeof(char), "__PASSTHROUGH_LD_ASSUME_KERNEL_%d", getppid()); + bypassVar[1023] = '\0'; + if (getenv(bypassVar) != NULL) + { + char* bypassVal = (char*) malloc(1024*sizeof(char)); + if (bypassVal != NULL) + { + rpmMessage(RPMMESS_DEBUG, _("Restoring LD_ASSUME_KERNEL for child scripts.\n")); + snprintf(bypassVal, 1024*sizeof(char), "%s", getenv(bypassVar)); + unsetenv(bypassVar); + snprintf(bypassVar, 1024*sizeof(char), "LD_ASSUME_KERNEL=%s", bypassVal); + bypassVar[1023] = '\0'; + putenv(bypassVar); + free(bypassVal); + } + else + { + free(bypassVar); + } + } + } + } +#endif cmd = rpmExpand("%{?__gpg_sign_cmd}", NULL); rc = poptParseArgvString(cmd, NULL, (const char ***)&av); /*@-boundsread@*/ @@ -815,6 +880,38 @@ xx = dup2(passPhrasePipe[0], 3); unsetenv("MALLOC_CHECK_"); +#if defined(__GLIBC__) + /** + * Block to do LD_ASSUME_KERNEL restoration before execs. + * jaredj@us.ibm.com + */ + { + char* bypassVar = (char*) malloc(1024*sizeof(char)); + if (bypassVar != NULL) + { + snprintf(bypassVar,1024*sizeof(char), "__PASSTHROUGH_LD_ASSUME_KERNEL_%d", getppid()); + bypassVar[1023] = '\0'; + if (getenv(bypassVar) != NULL) + { + char* bypassVal = (char*) malloc(1024*sizeof(char)); + if (bypassVal != NULL) + { + rpmMessage(RPMMESS_DEBUG, _("Restoring LD_ASSUME_KERNEL for child scripts.\n")); + snprintf(bypassVal, 1024*sizeof(char), "%s", getenv(bypassVar)); + unsetenv(bypassVar); + snprintf(bypassVar, 1024*sizeof(char), "LD_ASSUME_KERNEL=%s", bypassVal); + bypassVar[1023] = '\0'; + putenv(bypassVar); + free(bypassVal); + } + else + { + free(bypassVar); + } + } + } + } +#endif switch (sigTag) { case RPMSIGTAG_DSA: case RPMSIGTAG_GPG: diff -ur rpm-4.3.2/lua/local/lposix.c rpm-4.3.2.new/lua/local/lposix.c --- rpm-4.3.2/lua/local/lposix.c 2004-09-04 12:58:27.000000000 -0400 +++ rpm-4.3.2.new/lua/local/lposix.c 2004-11-16 09:33:05.877587984 -0500 @@ -360,6 +360,39 @@ argv[0] = (char*)path; for (i=1; i