Implement support for a SYS:ENV attribute on executable
__flatten_process_args() does now have the executable path as an additional (optional) parameter. If specified, the function will read the file's SYS:ENV attribute (if set) and use its value to modified the environment it is preparing for the new process. Currently supported attribute values are strings consisting of "<var>=<value>" substrings separated by "\0" (backslash zero), with '\' being used as an escape character. The environment will be altered to contain the specified "<var>=<value>" elements, replacing a preexisting <var> element (if any). A possible use case would be setting a SYS:ENV attribute with value "DISABLE_ASLR=1" on an executable that needs ASLR disabled.
This commit is contained in:
@@ -29,8 +29,8 @@ status_t __get_next_image_dependency(image_id id, uint32 *cookie,
|
||||
const char **_name);
|
||||
status_t __test_executable(const char *path, char *invoker);
|
||||
status_t __flatten_process_args(const char* const* args, int32 argCount,
|
||||
const char* const* env, int32 envCount, char*** _flatArgs,
|
||||
size_t* _flatSize);
|
||||
const char* const* env, int32* envCount, const char* executablePath,
|
||||
char*** _flatArgs, size_t* _flatSize);
|
||||
void _call_atexit_hooks_for_range(addr_t start, addr_t size);
|
||||
void __init_env(const struct user_space_program_args *args);
|
||||
status_t __init_heap(void);
|
||||
|
||||
Reference in New Issue
Block a user