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;
}