exit(EXIT_FAILURE);
if (!streq(u.release, TEST_UNAME)) {
- char *ldpreload = getenv("LD_PRELOAD");
+ const char *ldpreload = getenv("LD_PRELOAD");
ERR("u.release=%s should be %s\n", u.release, TEST_UNAME);
ERR("LD_PRELOAD=%s\n", ldpreload);
exit(EXIT_FAILURE);
size_t i;
const struct keyval *env;
- unsetenv("LD_PRELOAD");
-
for (i = 0; i < _TC_LAST; i++) {
const char *ldpreload;
size_t ldpreloadlen;
preload[preloadlen] = '\0';
}
- if (preload != NULL)
+ if (preload != NULL) {
+ const char *existing_preload = getenv("LD_PRELOAD");
+ if (existing_preload) {
+ char *tmp;
+ size_t len = strlen(existing_preload);
+
+ tmp = malloc(preloadlen + 2 + len);
+ if (tmp == NULL) {
+ ERR("oom: test_export_environ()\n");
+ return;
+ }
+ memcpy(tmp, existing_preload, len);
+ tmp[len++] = ' ';
+ memcpy(tmp + len, preload, preloadlen);
+ preloadlen += len;
+ tmp[preloadlen] = '\0';
+ free(preload);
+ preload = tmp;
+ }
setenv("LD_PRELOAD", preload, 1);
+ }
free(preload);