Plug a memory leak with ptrace-based intercept.
This commit is contained in:
@@ -533,7 +533,7 @@ free_exec_closure(struct exec_closure *ec)
|
||||
debug_decl(free_exec_closure, SUDO_DEBUG_EXEC);
|
||||
|
||||
/* Free any remaining intercept resources. */
|
||||
intercept_cleanup();
|
||||
intercept_cleanup(ec);
|
||||
|
||||
sudo_ev_base_free(ec->evbase);
|
||||
sudo_ev_free(ec->backchannel_event);
|
||||
|
@@ -199,13 +199,19 @@ intercept_connection_close(struct intercept_closure *closure)
|
||||
}
|
||||
|
||||
void
|
||||
intercept_cleanup(void)
|
||||
intercept_cleanup(struct exec_closure *ec)
|
||||
{
|
||||
debug_decl(intercept_cleanup, SUDO_DEBUG_EXEC);
|
||||
|
||||
if (accept_closure != NULL) {
|
||||
/* DSO-based intercept. */
|
||||
intercept_connection_close(accept_closure);
|
||||
accept_closure = NULL;
|
||||
} else if (ec->intercept != NULL) {
|
||||
/* ptrace-based intercept. */
|
||||
intercept_closure_reset(ec->intercept);
|
||||
free(ec->intercept);
|
||||
ec->intercept = NULL;
|
||||
}
|
||||
|
||||
debug_return;
|
||||
|
@@ -186,7 +186,7 @@ char **enable_monitor(char *envp[], const char *dso);
|
||||
|
||||
/* exec_intercept.c */
|
||||
void *intercept_setup(int fd, struct sudo_event_base *evbase, struct command_details *details);
|
||||
void intercept_cleanup(void);
|
||||
void intercept_cleanup(struct exec_closure *ec);
|
||||
|
||||
/* exec_iolog.c */
|
||||
bool log_ttyin(const char *buf, unsigned int n, struct io_buffer *iob);
|
||||
|
Reference in New Issue
Block a user