Always define LD_32_PRELOAD so it works for 32 bits binaries on
64 bits platforms. Let rtld(1) decide if it needs to honor it or not. While here, fix a small bug in error reporting when asprintf(3) returns an error. Submitted by: kib Reviewed by: kib (mentor) MFC after: 1 week
This commit is contained in:
parent
9f63b42217
commit
d3dee93474
@ -32,6 +32,7 @@
|
||||
#include <unistd.h>
|
||||
|
||||
#define LIBSTDBUF "/usr/lib/libstdbuf.so"
|
||||
#define LIBSTDBUF32 "/usr/lib32/libstdbuf.so"
|
||||
|
||||
extern char *__progname;
|
||||
|
||||
@ -92,7 +93,17 @@ main(int argc, char *argv[])
|
||||
LIBSTDBUF);
|
||||
|
||||
if (i < 0 || putenv(preload1) == -1)
|
||||
warn("Failed to set environment variable: %s", preload1);
|
||||
warn("Failed to set environment variable: LD_PRELOAD");
|
||||
|
||||
preload0 = getenv("LD_32_PRELOAD");
|
||||
if (preload0 == NULL)
|
||||
i = asprintf(&preload1, "LD_32_PRELOAD=" LIBSTDBUF32);
|
||||
else
|
||||
i = asprintf(&preload1, "LD_32_PRELOAD=%s:%s", preload0,
|
||||
LIBSTDBUF32);
|
||||
|
||||
if (i < 0 || putenv(preload1) == -1)
|
||||
warn("Failed to set environment variable: LD_32_PRELOAD");
|
||||
|
||||
execvp(argv[0], argv);
|
||||
err(2, "%s", argv[0]);
|
||||
|
Loading…
Reference in New Issue
Block a user