From 9492b3b26ac0b1898f836094074a9d8b38916e13 Mon Sep 17 00:00:00 2001 From: Pavel Březina Date: Feb 08 2017 10:05:38 +0000 Subject: cache_req: add api to create ldb_result from message Some sysdb methods doesn't return ldb_result as output but return ldb_message instead. Changing sysdb to be consistent is too big so I added this helper function that will wrap resulting message into ldb_result. Reviewed-by: Jakub Hrozek --- diff --git a/src/responder/common/cache_req/cache_req.c b/src/responder/common/cache_req/cache_req.c index aed8f1b..31c220b 100644 --- a/src/responder/common/cache_req/cache_req.c +++ b/src/responder/common/cache_req/cache_req.c @@ -78,7 +78,6 @@ static errno_t cache_req_set_plugin(struct cache_req *cr, } cr->reqname = plugin->name; - cr->dp_type = plugin->dp_type; cr->plugin = plugin; CACHE_REQ_DEBUG(SSSDBG_TRACE_INTERNAL, cr, "Setting \"%s\" plugin\n", @@ -820,16 +819,11 @@ cache_req_create_result(TALLOC_CTX *mem_ctx, return result; } -struct cache_req_result * -cache_req_create_result_from_msg(TALLOC_CTX *mem_ctx, - struct sss_domain_info *domain, - struct ldb_message *ldb_msg, - const char *lookup_name, - const char *well_known_domain) +struct ldb_result * +cache_req_create_ldb_result_from_msg(TALLOC_CTX *mem_ctx, + struct ldb_message *ldb_msg) { - struct cache_req_result *result; struct ldb_result *ldb_result; - errno_t ret; if (ldb_msg == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, "No message set!\n"); @@ -847,23 +841,38 @@ cache_req_create_result_from_msg(TALLOC_CTX *mem_ctx, ldb_result->count = 1; ldb_result->msgs = talloc_zero_array(ldb_result, struct ldb_message *, 2); if (ldb_result->msgs == NULL) { - ret = ENOMEM; - goto done; + talloc_free(ldb_result); + return NULL; } ldb_result->msgs[0] = talloc_steal(ldb_result->msgs, ldb_msg); - result = cache_req_create_result(mem_ctx, domain, ldb_result, - lookup_name, well_known_domain); - if (result == NULL) { - ret = ENOMEM; - goto done; + return ldb_result; +} + +struct cache_req_result * +cache_req_create_result_from_msg(TALLOC_CTX *mem_ctx, + struct sss_domain_info *domain, + struct ldb_message *ldb_msg, + const char *lookup_name, + const char *well_known_domain) +{ + struct cache_req_result *result; + struct ldb_result *ldb_result; + + if (ldb_msg == NULL) { + DEBUG(SSSDBG_CRIT_FAILURE, "No message set!\n"); + return NULL; } - ret = EOK; + ldb_result = cache_req_create_ldb_result_from_msg(mem_ctx, ldb_msg); + if (ldb_result == NULL) { + return NULL; + } -done: - if (ret != EOK) { + result = cache_req_create_result(mem_ctx, domain, ldb_result, + lookup_name, well_known_domain); + if (result == NULL) { talloc_free(ldb_result); return NULL; }