summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Kos <okos@redhat.com>2012-08-21 16:03:32 +0200
committerJakub Hrozek <jhrozek@redhat.com>2012-08-23 14:25:23 +0200
commite4c29d1f8e3b2c2b268105f169e5156a0a36aebf (patch)
tree5e2940d4366e363d993e63a90693282acfffce32
parente523233315f44b8f77ab9c5143a3d80364ebf955 (diff)
downloadsssd-e4c29d1f8e3b2c2b268105f169e5156a0a36aebf.tar.gz
sssd-e4c29d1f8e3b2c2b268105f169e5156a0a36aebf.tar.bz2
sssd-e4c29d1f8e3b2c2b268105f169e5156a0a36aebf.zip
Consolidation of functions that make realm upper-case
-rw-r--r--src/providers/ad/ad_common.c7
-rw-r--r--src/providers/ipa/ipa_common.c10
-rw-r--r--src/providers/ipa/ipa_subdomains.c18
-rw-r--r--src/util/usertools.c21
-rw-r--r--src/util/util.h3
5 files changed, 28 insertions, 31 deletions
diff --git a/src/providers/ad/ad_common.c b/src/providers/ad/ad_common.c
index 90cfe412..7568798a 100644
--- a/src/providers/ad/ad_common.c
+++ b/src/providers/ad/ad_common.c
@@ -33,7 +33,6 @@ ad_get_common_options(TALLOC_CTX *mem_ctx,
{
errno_t ret;
int gret;
- size_t i;
struct ad_options *opts = NULL;
char *domain;
char *server;
@@ -98,16 +97,12 @@ ad_get_common_options(TALLOC_CTX *mem_ctx,
/* Always use the upper-case AD domain for the kerberos realm */
- realm = talloc_strdup(opts, domain);
+ realm = get_uppercase_realm(opts, domain);
if (!realm) {
ret = ENOMEM;
goto done;
}
- for (i = 0; realm[i]; i++) {
- realm[i] = toupper(realm[i]);
- }
-
ret = dp_opt_set_string(opts->basic, AD_KRB5_REALM, realm);
if (ret != EOK) {
goto done;
diff --git a/src/providers/ipa/ipa_common.c b/src/providers/ipa/ipa_common.c
index 6ad67845..2e504738 100644
--- a/src/providers/ipa/ipa_common.c
+++ b/src/providers/ipa/ipa_common.c
@@ -47,7 +47,6 @@ int ipa_get_options(TALLOC_CTX *memctx,
char *realm;
char *ipa_hostname;
int ret;
- int i;
char hostname[HOST_NAME_MAX + 1];
opts = talloc_zero(memctx, struct ipa_options);
@@ -95,18 +94,13 @@ int ipa_get_options(TALLOC_CTX *memctx,
/* First check whether the realm has been manually specified */
realm = dp_opt_get_string(opts->basic, IPA_KRB5_REALM);
if (!realm) {
- /* No explicit krb5_realm, use the IPA domain */
- realm = talloc_strdup(opts, domain);
+ /* No explicit krb5_realm, use the IPA domain, transform to upper-case */
+ realm = get_uppercase_realm(opts, domain);
if (!realm) {
ret = ENOMEM;
goto done;
}
- /* Use the upper-case IPA domain for the kerberos realm */
- for (i = 0; realm[i]; i++) {
- realm[i] = toupper(realm[i]);
- }
-
ret = dp_opt_set_string(opts->basic, IPA_KRB5_REALM,
realm);
if (ret != EOK) {
diff --git a/src/providers/ipa/ipa_subdomains.c b/src/providers/ipa/ipa_subdomains.c
index 98c7de34..1da2b8cd 100644
--- a/src/providers/ipa/ipa_subdomains.c
+++ b/src/providers/ipa/ipa_subdomains.c
@@ -178,22 +178,6 @@ done:
return ret;
}
-static char *name_to_realm(TALLOC_CTX *memctx, const char *name)
-{
- char *realm;
- char *p;
-
- realm = talloc_strdup(memctx, name);
- if (!realm) {
- return NULL;
- }
- for (p = realm; *p; p++) {
- *p = toupper(*p);
- }
-
- return realm;
-}
-
static errno_t ipa_subdom_parse(TALLOC_CTX *memctx,
struct sysdb_attrs *attrs,
struct sysdb_subdom *subdom)
@@ -219,7 +203,7 @@ static errno_t ipa_subdom_parse(TALLOC_CTX *memctx,
if (subdom->realm == NULL) {
/* Add Realm as upper(domain name), this is generally always correct
* with AD domains */
- subdom->realm = name_to_realm(memctx, subdom->name);
+ subdom->realm = get_uppercase_realm(memctx, subdom->name);
if (!subdom->realm) {
return ENOMEM;
}
diff --git a/src/util/usertools.c b/src/util/usertools.c
index 36641d49..adef2b00 100644
--- a/src/util/usertools.c
+++ b/src/util/usertools.c
@@ -45,6 +45,27 @@ char *get_username_from_uid(TALLOC_CTX *mem_ctx, uid_t uid)
return username;
}
+/* Function returns given realm name as new uppercase string */
+char *get_uppercase_realm(TALLOC_CTX *memctx, const char *name)
+{
+ char *realm;
+ char *c;
+
+ realm = talloc_strdup(memctx, name);
+ if (!realm) {
+ return NULL;
+ }
+
+ c = realm;
+ while(*c != '\0') {
+ *c = toupper(*c);
+ c++;
+ }
+
+ return realm;
+}
+
+
static int sss_names_ctx_destructor(struct sss_names_ctx *snctx)
{
if (snctx->re) {
diff --git a/src/util/util.h b/src/util/util.h
index b51aebbd..7ff91af5 100644
--- a/src/util/util.h
+++ b/src/util/util.h
@@ -28,6 +28,7 @@
#include <unistd.h>
#include <string.h>
#include <strings.h>
+#include <ctype.h>
#include <errno.h>
#include <libintl.h>
#include <limits.h>
@@ -388,6 +389,8 @@ int password_destructor(void *memctx);
/* from usertools.c */
char *get_username_from_uid(TALLOC_CTX *mem_ctx, uid_t uid);
+char *get_uppercase_realm(TALLOC_CTX *memctx, const char *name);
+
struct sss_names_ctx {
char *re_pattern;
char *fq_fmt;