diff options
author | Sumit Bose <sbose@redhat.com> | 2010-05-21 16:06:28 +0200 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2010-05-23 12:15:59 -0400 |
commit | cafdaae81594a97918189ec2b8537db5f11b1e3f (patch) | |
tree | 1ac8e090524d1d564d50dbea0c3ebe44f7c8c955 | |
parent | 209e37c000d1a236263af6dc89ca63909d1b8a45 (diff) | |
download | sssd-cafdaae81594a97918189ec2b8537db5f11b1e3f.tar.gz sssd-cafdaae81594a97918189ec2b8537db5f11b1e3f.tar.xz sssd-cafdaae81594a97918189ec2b8537db5f11b1e3f.zip |
Do not modify IPA_DOMAIN when setting Kerberos realm
-rw-r--r-- | src/providers/ipa/ipa_common.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/providers/ipa/ipa_common.c b/src/providers/ipa/ipa_common.c index 76ac02e16..b6f4d65f4 100644 --- a/src/providers/ipa/ipa_common.c +++ b/src/providers/ipa/ipa_common.c @@ -282,11 +282,17 @@ int ipa_get_id_options(struct ipa_options *ipa_opts, /* set krb realm */ if (NULL == dp_opt_get_string(ipa_opts->id->basic, SDAP_KRB5_REALM)) { realm = dp_opt_get_string(ipa_opts->basic, IPA_DOMAIN); - for (i = 0; realm[i]; i++) { - realm[i] = toupper(realm[i]); + value = talloc_strdup(tmpctx, realm); + if (value == NULL) { + DEBUG(1, ("talloc_strdup failed.\n")); + ret = ENOMEM; + goto done; + } + for (i = 0; value[i]; i++) { + value[i] = toupper(value[i]); } ret = dp_opt_set_string(ipa_opts->id->basic, - SDAP_KRB5_REALM, realm); + SDAP_KRB5_REALM, value); if (ret != EOK) { goto done; } @@ -370,6 +376,7 @@ int ipa_get_auth_options(struct ipa_options *ipa_opts, struct dp_option **_opts) { char *value; + char *copy = NULL; int ret; int i; @@ -402,10 +409,16 @@ int ipa_get_auth_options(struct ipa_options *ipa_opts, ret = ENOMEM; goto done; } - for (i = 0; value[i]; i++) { - value[i] = toupper(value[i]); + copy = talloc_strdup(ipa_opts->auth, value); + if (copy == NULL) { + DEBUG(1, ("talloc_strdup failed.\n")); + ret = ENOMEM; + goto done; + } + for (i = 0; copy[i]; i++) { + copy[i] = toupper(copy[i]); } - ret = dp_opt_set_string(ipa_opts->auth, KRB5_REALM, value); + ret = dp_opt_set_string(ipa_opts->auth, KRB5_REALM, copy); if (ret != EOK) { goto done; } @@ -418,6 +431,7 @@ int ipa_get_auth_options(struct ipa_options *ipa_opts, ret = EOK; done: + talloc_free(copy); if (ret != EOK) { talloc_zfree(ipa_opts->auth); } |