Blob Blame Raw
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;
 }