diff -up sudo-1.8.6p7/plugins/sudoers/sssd.c.clangfixes sudo-1.8.6p7/plugins/sudoers/sssd.c --- sudo-1.8.6p7/plugins/sudoers/sssd.c.clangfixes 2014-09-30 10:31:43.920885432 +0200 +++ sudo-1.8.6p7/plugins/sudoers/sssd.c 2014-09-30 10:32:39.413228871 +0200 @@ -313,9 +313,9 @@ static int sudo_sss_close(struct sudo_ns if (nss && nss->handle) { handle = nss->handle; dlclose(handle->ssslib); + efree(nss->handle); } - efree(nss->handle); debug_return_int(0); } @@ -755,12 +755,15 @@ sudo_sss_result_get(struct sudo_nss *nss *state |= _SUDO_SSS_STATE_HOSTMATCH; } } + sudo_debug_printf(SUDO_DEBUG_DEBUG, + "u_sss_result=(%p, %u) => f_sss_result=(%p, %u)", u_sss_result, + u_sss_result->num_rules, f_sss_result, f_sss_result->num_rules); + } else { + sudo_debug_printf(SUDO_DEBUG_DEBUG, + "u_sss_result=(%p, %u) => f_sss_result=NULL", u_sss_result, + u_sss_result->num_rules); } - sudo_debug_printf(SUDO_DEBUG_DEBUG, - "u_sss_result=(%p, %u) => f_sss_result=(%p, %u)", u_sss_result, - u_sss_result->num_rules, f_sss_result, f_sss_result->num_rules); - handle->fn_free_result(u_sss_result); debug_return_ptr(f_sss_result); diff -up sudo-1.8.6p7/plugins/sudoers/visudo.c.clangfixes sudo-1.8.6p7/plugins/sudoers/visudo.c --- sudo-1.8.6p7/plugins/sudoers/visudo.c.clangfixes 2014-09-30 10:34:08.689174020 +0200 +++ sudo-1.8.6p7/plugins/sudoers/visudo.c 2014-09-30 11:00:15.215654285 +0200 @@ -544,7 +544,7 @@ reparse_sudoers(char *editor, char *args continue; edit_sudoers(sp, editor, args, errorlineno); } - } while (parse_error); + } while (parse_error && sp != NULL); debug_return; }