summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2014-02-18 13:16:27 +0100
committerJakub Hrozek <jhrozek@redhat.com>2014-02-18 22:55:26 +0100
commit25ac7bda643c8872b5a29bc856c374e76a7f8363 (patch)
tree6760380085cf7ab065bd135cee90db96834c0476 /src
parentad73be9b4d8712dfd9c14da4b984e63eaa8f2499 (diff)
downloadsssd-25ac7bda643c8872b5a29bc856c374e76a7f8363.tar.gz
sssd-25ac7bda643c8872b5a29bc856c374e76a7f8363.tar.xz
sssd-25ac7bda643c8872b5a29bc856c374e76a7f8363.zip
sdap: move non async functions from sdap_async.c to sdap_utils.c
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'src')
-rw-r--r--src/providers/ldap/sdap_async.c118
-rw-r--r--src/providers/ldap/sdap_utils.c142
2 files changed, 142 insertions, 118 deletions
diff --git a/src/providers/ldap/sdap_async.c b/src/providers/ldap/sdap_async.c
index 039510777..a3da4acf0 100644
--- a/src/providers/ldap/sdap_async.c
+++ b/src/providers/ldap/sdap_async.c
@@ -24,26 +24,8 @@
#include "util/strtonum.h"
#include "providers/ldap/sdap_async_private.h"
-#define REALM_SEPARATOR '@'
#define REPLY_REALLOC_INCREMENT 10
-void make_realm_upper_case(const char *upn)
-{
- char *c;
-
- c = strchr(upn, REALM_SEPARATOR);
- if (c == NULL) {
- DEBUG(SSSDBG_TRACE_ALL, "No realm delimiter found in upn [%s].\n", upn);
- return;
- }
-
- while(*(++c) != '\0') {
- c[0] = toupper(*c);
- }
-
- return;
-}
-
/* ==LDAP-Memory-Handling================================================= */
static int lmsg_destructor(void *mem)
@@ -2466,103 +2448,3 @@ bool sdap_has_deref_support(struct sdap_handle *sh, struct sdap_options *opts)
return false;
}
-
-errno_t
-sdap_attrs_add_ldap_attr(struct sysdb_attrs *ldap_attrs,
- const char *attr_name,
- const char *attr_desc,
- bool multivalued,
- const char *name,
- struct sysdb_attrs *attrs)
-{
- errno_t ret;
- struct ldb_message_element *el;
- const char *objname = name ?: "object";
- const char *desc = attr_desc ?: attr_name;
- unsigned int num_values, i;
-
- ret = sysdb_attrs_get_el(ldap_attrs, attr_name, &el);
- if (ret) {
- DEBUG(SSSDBG_OP_FAILURE, "Could not get %s from the "
- "list of the LDAP attributes [%d]: %s\n",
- attr_name, ret, strerror(ret));
- return ret;
- }
-
- if (el->num_values == 0) {
- DEBUG(SSSDBG_TRACE_INTERNAL, "%s is not available "
- "for [%s].\n", desc, objname);
- } else {
- num_values = multivalued ? el->num_values : 1;
- for (i = 0; i < num_values; i++) {
- DEBUG(SSSDBG_TRACE_INTERNAL, "Adding %s [%s] to attributes "
- "of [%s].\n", desc, el->values[i].data, objname);
-
- ret = sysdb_attrs_add_mem(attrs, attr_name, el->values[i].data,
- el->values[i].length);
- if (ret) {
- return ret;
- }
- }
- }
-
- return EOK;
-}
-
-errno_t
-sdap_save_all_names(const char *name,
- struct sysdb_attrs *ldap_attrs,
- struct sss_domain_info *dom,
- struct sysdb_attrs *attrs)
-{
- const char **aliases = NULL;
- const char *domname;
- errno_t ret;
- TALLOC_CTX *tmp_ctx;
- int i;
- bool lowercase = !dom->case_sensitive;
-
- tmp_ctx = talloc_new(NULL);
- if (!tmp_ctx) {
- ret = ENOMEM;
- goto done;
- }
-
- ret = sysdb_attrs_get_aliases(tmp_ctx, ldap_attrs, name,
- lowercase, &aliases);
- if (ret != EOK) {
- DEBUG(SSSDBG_OP_FAILURE, "Failed to get the alias list");
- goto done;
- }
-
- for (i = 0; aliases[i]; i++) {
- domname = sss_get_domain_name(tmp_ctx, aliases[i], dom);
- if (domname == NULL) {
- ret = ENOMEM;
- goto done;
- }
-
- if (lowercase) {
- ret = sysdb_attrs_add_lc_name_alias(attrs, domname);
- if (ret) {
- DEBUG(SSSDBG_OP_FAILURE, "Failed to add lower-cased version "
- "of alias [%s] into the "
- "attribute list\n", aliases[i]);
- goto done;
- }
- } else {
- ret = sysdb_attrs_add_string(attrs, SYSDB_NAME_ALIAS, domname);
- if (ret) {
- DEBUG(SSSDBG_OP_FAILURE, "Failed to add alias [%s] into the "
- "attribute list\n", aliases[i]);
- goto done;
- }
- }
-
- }
-
- ret = EOK;
-done:
- talloc_free(tmp_ctx);
- return ret;
-}
diff --git a/src/providers/ldap/sdap_utils.c b/src/providers/ldap/sdap_utils.c
new file mode 100644
index 000000000..194f4a133
--- /dev/null
+++ b/src/providers/ldap/sdap_utils.c
@@ -0,0 +1,142 @@
+/*
+ Authors:
+ Simo Sorce <ssorce@redhat.com>
+
+ Copyright (C) 2013 Red Hat
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <ctype.h>
+#include "util/util.h"
+#include "providers/ldap/sdap_async.h"
+
+#define REALM_SEPARATOR '@'
+
+void make_realm_upper_case(const char *upn)
+{
+ char *c;
+
+ c = strchr(upn, REALM_SEPARATOR);
+ if (c == NULL) {
+ DEBUG(SSSDBG_TRACE_ALL, "No realm delimiter found in upn [%s].\n", upn);
+ return;
+ }
+
+ while(*(++c) != '\0') {
+ c[0] = toupper(*c);
+ }
+
+ return;
+}
+
+errno_t
+sdap_attrs_add_ldap_attr(struct sysdb_attrs *ldap_attrs,
+ const char *attr_name,
+ const char *attr_desc,
+ bool multivalued,
+ const char *name,
+ struct sysdb_attrs *attrs)
+{
+ errno_t ret;
+ struct ldb_message_element *el;
+ const char *objname = name ?: "object";
+ const char *desc = attr_desc ?: attr_name;
+ unsigned int num_values, i;
+
+ ret = sysdb_attrs_get_el(ldap_attrs, attr_name, &el);
+ if (ret) {
+ DEBUG(SSSDBG_OP_FAILURE, "Could not get %s from the "
+ "list of the LDAP attributes [%d]: %s\n",
+ attr_name, ret, strerror(ret));
+ return ret;
+ }
+
+ if (el->num_values == 0) {
+ DEBUG(SSSDBG_TRACE_INTERNAL, "%s is not available "
+ "for [%s].\n", desc, objname);
+ } else {
+ num_values = multivalued ? el->num_values : 1;
+ for (i = 0; i < num_values; i++) {
+ DEBUG(SSSDBG_TRACE_INTERNAL, "Adding %s [%s] to attributes "
+ "of [%s].\n", desc, el->values[i].data, objname);
+
+ ret = sysdb_attrs_add_mem(attrs, attr_name, el->values[i].data,
+ el->values[i].length);
+ if (ret) {
+ return ret;
+ }
+ }
+ }
+
+ return EOK;
+}
+
+errno_t
+sdap_save_all_names(const char *name,
+ struct sysdb_attrs *ldap_attrs,
+ struct sss_domain_info *dom,
+ struct sysdb_attrs *attrs)
+{
+ const char **aliases = NULL;
+ const char *domname;
+ errno_t ret;
+ TALLOC_CTX *tmp_ctx;
+ int i;
+ bool lowercase = !dom->case_sensitive;
+
+ tmp_ctx = talloc_new(NULL);
+ if (!tmp_ctx) {
+ ret = ENOMEM;
+ goto done;
+ }
+
+ ret = sysdb_attrs_get_aliases(tmp_ctx, ldap_attrs, name,
+ lowercase, &aliases);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_OP_FAILURE, "Failed to get the alias list");
+ goto done;
+ }
+
+ for (i = 0; aliases[i]; i++) {
+ domname = sss_get_domain_name(tmp_ctx, aliases[i], dom);
+ if (domname == NULL) {
+ ret = ENOMEM;
+ goto done;
+ }
+
+ if (lowercase) {
+ ret = sysdb_attrs_add_lc_name_alias(attrs, domname);
+ if (ret) {
+ DEBUG(SSSDBG_OP_FAILURE, "Failed to add lower-cased version "
+ "of alias [%s] into the "
+ "attribute list\n", aliases[i]);
+ goto done;
+ }
+ } else {
+ ret = sysdb_attrs_add_string(attrs, SYSDB_NAME_ALIAS, domname);
+ if (ret) {
+ DEBUG(SSSDBG_OP_FAILURE, "Failed to add alias [%s] into the "
+ "attribute list\n", aliases[i]);
+ goto done;
+ }
+ }
+
+ }
+
+ ret = EOK;
+done:
+ talloc_free(tmp_ctx);
+ return ret;
+}