>From a511ab3b9794b7e81e698aa53666d7dca50103ff Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Sun, 11 Oct 2015 15:34:44 +0200 Subject: [PATCH 3/4] tests: Reproduce use-after free when SRV result list expires --- src/tests/cmocka/test_fo_srv.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/tests/cmocka/test_fo_srv.c b/src/tests/cmocka/test_fo_srv.c index 109f664c84238cf9c1055a1cbc1a8c8870f2dc39..ffdc2d0fc2615e13dd472aa219bbc7cd79611451 100644 --- a/src/tests/cmocka/test_fo_srv.c +++ b/src/tests/cmocka/test_fo_srv.c @@ -201,6 +201,8 @@ struct test_fo_ctx { struct fo_service *fo_svc; struct sss_test_ctx *ctx; int ttl; + + struct fo_server *srv; }; int test_fo_srv_data_cmp(void *ud1, void *ud2) @@ -588,6 +590,8 @@ static void test_fo_srv_before(struct tevent_req *req) mock_srv_results(s1, test_ctx->ttl, dns_domain); sleep(test_ctx->ttl + 1); + test_ctx->srv = srv; + req = fo_resolve_service_send(test_ctx, test_ctx->ctx->ev, test_ctx->resolv, test_ctx->fo_ctx, test_ctx->fo_svc); @@ -606,6 +610,11 @@ static void test_fo_srv_after(struct tevent_req *req) talloc_zfree(req); assert_int_equal(ret, ERR_OK); + /* Try accessing server from a previous iteration. The + * server should be collapsed, but at least we shouldn't crash + */ + fo_set_server_status(test_ctx->srv, SERVER_WORKING); + /* Must be a different server now */ check_server(test_ctx, srv, 389, "ldap3.sssd.com"); -- 2.4.3