* kern_execve() has the astonishing property of not always returning to * the caller. If sufficiently bad things happen during the call to * do_execve(), it can end up calling exit1(); as a result, callers must * avoid doing anything which they might need to undo (e.g., allocating * memory). */
| 342 | * memory). |
| 343 | */ |
| 344 | int |
| 345 | kern_execve(struct thread *td, struct image_args *args, struct mac *mac_p, |
| 346 | struct vmspace *oldvmspace) |
| 347 | { |
| 348 | |
| 349 | AUDIT_ARG_ARGV(args->begin_argv, args->argc, |
| 350 | exec_args_get_begin_envv(args) - args->begin_argv); |
| 351 | AUDIT_ARG_ENVV(exec_args_get_begin_envv(args), args->envc, |
| 352 | args->endp - exec_args_get_begin_envv(args)); |
| 353 | return (do_execve(td, args, mac_p, oldvmspace)); |
| 354 | } |
| 355 | |
| 356 | /* |
| 357 | * In-kernel implementation of execve(). All arguments are assumed to be |
no test coverage detected