summaryrefslogtreecommitdiffstats
path: root/src/responder
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2016-02-12 12:20:04 +0100
committerJakub Hrozek <jhrozek@redhat.com>2016-03-14 17:34:05 +0100
commit9bc1ba22fb14742c9c73aa57faaa9c725800616e (patch)
treecb626465140c4aa02f69db1751d70a562e356b5a /src/responder
parente42e8022f463fdb9136a9c3adb29d2d9d6b3780e (diff)
downloadsssd-9bc1ba22fb14742c9c73aa57faaa9c725800616e.tar.gz
sssd-9bc1ba22fb14742c9c73aa57faaa9c725800616e.tar.xz
sssd-9bc1ba22fb14742c9c73aa57faaa9c725800616e.zip
cache_req: break cache_req_input_create into more functions
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'src/responder')
-rw-r--r--src/responder/common/responder_cache_req.c69
1 files changed, 46 insertions, 23 deletions
diff --git a/src/responder/common/responder_cache_req.c b/src/responder/common/responder_cache_req.c
index 6d4053375..8e9010fe5 100644
--- a/src/responder/common/responder_cache_req.c
+++ b/src/responder/common/responder_cache_req.c
@@ -94,24 +94,13 @@ struct cache_req_input {
time_t req_start;
};
-struct cache_req_input *
-cache_req_input_create(TALLOC_CTX *mem_ctx,
- enum cache_req_type type,
- const char *name,
- uint32_t id,
- const char *cert)
+static errno_t
+cache_req_input_set_data(struct cache_req_input *input,
+ enum cache_req_type type,
+ uint32_t id,
+ const char *name,
+ const char *cert)
{
- struct cache_req_input *input;
-
- input = talloc_zero(mem_ctx, struct cache_req_input);
- if (input == NULL) {
- return NULL;
- }
-
- input->type = type;
- input->req_start = time(NULL);
-
- /* Check that input parameters match selected type. */
switch (input->type) {
case CACHE_REQ_USER_BY_NAME:
case CACHE_REQ_USER_BY_UPN:
@@ -122,37 +111,42 @@ cache_req_input_create(TALLOC_CTX *mem_ctx,
case CACHE_REQ_INITGROUPS_BY_UPN:
if (name == NULL) {
DEBUG(SSSDBG_CRIT_FAILURE, "Bug: name cannot be NULL!\n");
- goto fail;
+ return ERR_INTERNAL;
}
input->data.name.input = talloc_strdup(input, name);
if (input->data.name.input == NULL) {
- goto fail;
+ return ENOMEM;
}
break;
case CACHE_REQ_USER_BY_CERT:
if (cert == NULL) {
DEBUG(SSSDBG_CRIT_FAILURE, "Bug: certificate cannot be NULL!\n");
- goto fail;
+ return ERR_INTERNAL;
}
input->data.cert = talloc_strdup(input, cert);
if (input->data.cert == NULL) {
- goto fail;
+ return ENOMEM;
}
break;
case CACHE_REQ_USER_BY_ID:
case CACHE_REQ_GROUP_BY_ID:
if (id == 0) {
DEBUG(SSSDBG_CRIT_FAILURE, "Bug: id cannot be 0!\n");
- goto fail;
+ return ERR_INTERNAL;
}
input->data.id = id;
break;
}
- /* Resolve Data Provider request type. */
+ return EOK;
+}
+
+static void
+cache_req_input_set_dp(struct cache_req_input *input, enum cache_req_type type)
+{
switch (type) {
case CACHE_REQ_USER_BY_NAME:
case CACHE_REQ_USER_BY_UPN:
@@ -183,6 +177,35 @@ cache_req_input_create(TALLOC_CTX *mem_ctx,
break;
}
+ return;
+}
+
+struct cache_req_input *
+cache_req_input_create(TALLOC_CTX *mem_ctx,
+ enum cache_req_type type,
+ const char *name,
+ uint32_t id,
+ const char *cert)
+{
+ struct cache_req_input *input;
+ errno_t ret;
+
+ input = talloc_zero(mem_ctx, struct cache_req_input);
+ if (input == NULL) {
+ return NULL;
+ }
+
+ input->type = type;
+ input->req_start = time(NULL);
+
+ ret = cache_req_input_set_data(input, type, id, name, cert);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_CRIT_FAILURE, "Unable to set input data!\n");
+ goto fail;
+ }
+
+ cache_req_input_set_dp(input, type);
+
return input;
fail: