>From 33cd2be90bc8d7e7b3dab9c8719732bce205a31f Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Tue, 25 Jun 2013 09:44:17 +0200 Subject: [PATCH 2/2] Do not call sss_cmd_done in function check_cache. Function sysdb_getpwnam return more results than 1 and therefore sss_cmd_done was called. Inside of function sss_cmd_done memory was freed, but this freed memory was used in caller functions, therefore sssd crashed. https://fedorahosted.org/sssd/ticket/1980 --- src/responder/nss/nsssrv_cmd.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index 3e5e8a78cf16550130be86114380df2c8a8d7a42..62a564a41c2a6173f13b13bb23f24fe8438ab8a6 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -494,7 +494,6 @@ static int nss_cmd_getpw_send_reply(struct nss_dom_ctx *dctx, bool filter) static void nsssrv_dp_send_acct_req_done(struct tevent_req *req); /* FIXME: do not check res->count, but get in a msgs and check in parent */ -/* FIXME: do not sss_cmd_done, but return error and let parent do it */ errno_t check_cache(struct nss_dom_ctx *dctx, struct nss_ctx *nctx, struct ldb_result *res, @@ -518,11 +517,6 @@ errno_t check_cache(struct nss_dom_ctx *dctx, (res->count > 1)) { DEBUG(1, ("getpwXXX call returned more than one result!" " DB Corrupted?\n")); - ret = nss_cmd_send_error(cmdctx, ENOENT); - if (ret != EOK) { - NSS_CMD_FATAL_ERROR_CODE(cctx, ENOENT); - } - sss_cmd_done(cctx, cmdctx); return ENOENT; } -- 1.8.1.4