From b509de2164be8fa9a8d52d70883f4ec70b4bddf8 Mon Sep 17 00:00:00 2001 From: Pavel Březina Date: Mon, 10 Jun 2013 10:34:38 +0200 Subject: failover: do not return invalid pointer when server is already present https://fedorahosted.org/sssd/ticket/1947 --- src/providers/fail_over.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/providers/fail_over.c') diff --git a/src/providers/fail_over.c b/src/providers/fail_over.c index 5704e73a9..c4dd1ea01 100644 --- a/src/providers/fail_over.c +++ b/src/providers/fail_over.c @@ -733,6 +733,7 @@ static errno_t fo_add_server_list(struct fo_service *service, struct fo_server **_last_server) { struct fo_server *server = NULL; + struct fo_server *last_server = NULL; struct fo_server *srv_list = NULL; size_t i; errno_t ret; @@ -750,8 +751,11 @@ static errno_t fo_add_server_list(struct fo_service *service, ret = fo_add_server_to_list(&srv_list, service->server_list, server, service->name); if (ret != EOK) { - talloc_free(server); + talloc_zfree(server); + continue; } + + last_server = server; } if (srv_list != NULL) { @@ -760,7 +764,7 @@ static errno_t fo_add_server_list(struct fo_service *service, } if (_last_server != NULL) { - *_last_server = server; + *_last_server = last_server == NULL ? after_server : last_server; } return EOK; -- cgit