Skip to content

execle() doesn't pass environment #1465

@adamdebek

Description

@adamdebek

Reproduction (ia32-generic-qemu):

First program:

#include <stdio.h>

extern char **environ;

int main(void)
{
        int i = 1;
        char *var;

        puts("Printing environment...");

        while ((var = *environ++)) {
                printf("%d: %s\n", i++, var);
        }

        return 0;
}

Second program:

#include <stdio.h>
#include <errno.h>
#include <unistd.h>

int main(void)
{
        int ret;
        char *env[] = {
                "USER=adam",
                "SHELL=bash",
                "HOME=/home/adam",
                "PATH=/usr/bin:/bin",
                "EDITOR=nano",
                NULL
        };

        errno = 0;
        ret = execle("/usr/bin/print_env", "print_env", NULL, env);
        printf("execv ret: %d errno: %d\n", ret, errno);

        return 1;
}
Image

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions