diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c
index 72e8e61514c4e4d0deda937e64e2e80b285d64f6..5ffbc7b954ed3081f3bbc73fd732dbbc0131bbc9 100644
--- a/src/lib-sieve/sieve-storage.c
+++ b/src/lib-sieve/sieve-storage.c
@@ -1025,13 +1025,17 @@ sieve_storage_list_next(struct sieve_storage_list_context *lctx, bool *active_r)
 int sieve_storage_list_deinit(struct sieve_storage_list_context **_lctx)
 {
 	struct sieve_storage_list_context *lctx = *_lctx;
+
+	if (lctx == NULL)
+		return 0;
+	*_lctx = NULL;
+
 	struct sieve_storage *storage = lctx->storage;
 	int ret;
 
 	i_assert(storage->v.list_deinit != NULL);
 	ret = storage->v.list_deinit(lctx);
 
-	*_lctx = NULL;
 	return ret;
 }
 
diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c
index 5028dcf1f23a47ec87680427fa1742a5b7a7ef1b..1ea6eb65e851231a170ab64ded8b8ce90f41365a 100644
--- a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c
+++ b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c
@@ -728,8 +728,7 @@ static int sieve_attribute_iter_deinit(struct mailbox_attribute_iter *iter)
 		if (sbox->super.attribute_iter_deinit(siter->super) < 0)
 			ret = -1;
 	}
-	if (siter->sieve_list != NULL)
-		(void)sieve_storage_list_deinit(&siter->sieve_list);
+	(void)sieve_storage_list_deinit(&siter->sieve_list);
 	str_free(&siter->name);
 	i_free(siter);
 	return ret;