diff --git a/servers/slapd/controls.c b/servers/slapd/controls.c
index 88a60794264f9fede90550c498acd5e5b5edfc4b..ba0527a433ce5f64e8474f8138084a4491053f1b 100644
--- a/servers/slapd/controls.c
+++ b/servers/slapd/controls.c
@@ -1392,6 +1392,7 @@ static int parseAssert (
 		}
 		if( op->o_assertion != NULL ) {
 			filter_free_x( op, op->o_assertion, 1 );
+			op->o_assertion = NULL;
 		}
 		return rs->sr_err;
 	}
diff --git a/servers/slapd/saslauthz.c b/servers/slapd/saslauthz.c
index 6e49fe189aa61021424eb8b75eba97e89941b4d5..d65c7b52f924956e136d1e9c509614807bd87c10 100644
--- a/servers/slapd/saslauthz.c
+++ b/servers/slapd/saslauthz.c
@@ -1226,7 +1226,10 @@ is_dn:		bv.bv_len = uri->bv_len - (bv.bv_val - uri->bv_val);
 
 done:
 	if( rc != LDAP_SUCCESS ) {
-		if( *filter ) filter_free_x( op, *filter, 1 );
+		if( *filter ) {
+			filter_free_x( op, *filter, 1 );
+			*filter = NULL;
+		}
 		BER_BVZERO( base );
 		BER_BVZERO( fstr );
 	} else {