lib: launch: add terminating null ptr to environ array
This commit is contained in:
@@ -70,15 +70,14 @@ static virt_addr_t write_bootstrap_data(
|
|||||||
bs->bs_argv = (const char **)remote_argv;
|
bs->bs_argv = (const char **)remote_argv;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bs->bs_envc > 0) {
|
/* envc+1 so there is space for a null terminator */
|
||||||
virt_addr_t remote_envp;
|
virt_addr_t remote_envp;
|
||||||
envp = stack_writer_put(
|
envp = stack_writer_put(
|
||||||
stack,
|
stack,
|
||||||
NULL,
|
NULL,
|
||||||
bs->bs_envc * sizeof(char *),
|
(bs->bs_envc + 1) * sizeof(char *),
|
||||||
&remote_envp);
|
&remote_envp);
|
||||||
bs->bs_envp = (const char **)remote_envp;
|
bs->bs_envp = (const char **)remote_envp;
|
||||||
}
|
|
||||||
|
|
||||||
size_t i = 0, j = 0;
|
size_t i = 0, j = 0;
|
||||||
if (interpreter) {
|
if (interpreter) {
|
||||||
@@ -95,11 +94,12 @@ static virt_addr_t write_bootstrap_data(
|
|||||||
argv[i] = (const char *)arg_ptr;
|
argv[i] = (const char *)arg_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < bs->bs_envc; i++) {
|
virt_addr_t env_ptr;
|
||||||
virt_addr_t env_ptr;
|
for (i = 0; i < bs->bs_envc; i++) {
|
||||||
stack_writer_put_string(stack, params->p_envp[i], &env_ptr);
|
stack_writer_put_string(stack, params->p_envp[i], &env_ptr);
|
||||||
envp[i] = (const char *)env_ptr;
|
envp[i] = (const char *)env_ptr;
|
||||||
}
|
}
|
||||||
|
envp[i] = NULL;
|
||||||
|
|
||||||
return bs_remote;
|
return bs_remote;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user