Skip to content

Commit 336402c

Browse files
committed
Set closure->disabled on I/O error even if not ignoring errors.
Now that we free the client closure contents immediately, we need to set the disabled flag to prevent log_server_close() from trying to use the closure.
1 parent dfca530 commit 336402c

File tree

2 files changed

+8
-9
lines changed

2 files changed

+8
-9
lines changed

plugins/sudoers/audit.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,7 @@ log_server_exit(int status_type, int status)
301301
{
302302
debug_decl(log_server_exit, SUDOERS_DEBUG_PLUGIN);
303303

304+
/* Only send exit status to log server if I/O logging plugin did not. */
304305
if (client_closure != NULL) {
305306
int exit_status = 0, error = 0;
306307

plugins/sudoers/log_client.c

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1883,10 +1883,9 @@ server_msg_cb(int fd, int what, void *v)
18831883
buf->off = 0;
18841884
debug_return;
18851885
bad:
1886-
if (closure->log_details->ignore_log_errors) {
1887-
/* Disable log server connection, the command continues. */
1888-
closure->disabled = true;
1889-
} else {
1886+
/* Disable further log server operations. */
1887+
closure->disabled = true;
1888+
if (!closure->log_details->ignore_log_errors) {
18901889
/* Break out of sudo event loop and kill the command. */
18911890
closure->read_ev->loopbreak(closure->read_ev);
18921891
}
@@ -2004,12 +2003,11 @@ client_msg_cb(int fd, int what, void *v)
20042003
debug_return;
20052004

20062005
bad:
2007-
if (closure->log_details->ignore_log_errors) {
2008-
/* Disable log server connection, the command continues. */
2009-
closure->disabled = true;
2010-
} else {
2006+
/* Disable further log server operations. */
2007+
closure->disabled = true;
2008+
if (!closure->log_details->ignore_log_errors) {
20112009
/* Break out of sudo event loop and kill the command. */
2012-
closure->write_ev->loopbreak(closure->write_ev);
2010+
closure->read_ev->loopbreak(closure->read_ev);
20132011
}
20142012
client_closure_free_contents(closure);
20152013
debug_return;

0 commit comments

Comments
 (0)