summaryrefslogtreecommitdiffstats
path: root/src/providers
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2011-06-27 10:03:03 +0200
committerStephen Gallagher <sgallagh@redhat.com>2011-06-30 14:07:38 -0400
commit87243a0a62b68f475b13e2117587dcdcc192b87b (patch)
tree32631fe002d152e599c3e28f391727878f5cae34 /src/providers
parent70a393104a1311d4a048823aaad1ab82bc8eb45f (diff)
downloadsssd-87243a0a62b68f475b13e2117587dcdcc192b87b.tar.gz
sssd-87243a0a62b68f475b13e2117587dcdcc192b87b.tar.xz
sssd-87243a0a62b68f475b13e2117587dcdcc192b87b.zip
Add sockaddr_storage to sdap_service
Diffstat (limited to 'src/providers')
-rw-r--r--src/providers/ipa/ipa_common.c10
-rw-r--r--src/providers/ldap/ldap_common.c11
-rw-r--r--src/providers/ldap/sdap.h1
3 files changed, 22 insertions, 0 deletions
diff --git a/src/providers/ipa/ipa_common.c b/src/providers/ipa/ipa_common.c
index 647c1c187..82e22e5cc 100644
--- a/src/providers/ipa/ipa_common.c
+++ b/src/providers/ipa/ipa_common.c
@@ -558,6 +558,7 @@ static void ipa_resolve_callback(void *private_data, struct fo_server *server)
TALLOC_CTX *tmp_ctx = NULL;
struct ipa_service *service;
struct resolv_hostent *srvaddr;
+ struct sockaddr_storage *sockaddr;
char *address;
const char *safe_address;
char *new_uri;
@@ -584,6 +585,13 @@ static void ipa_resolve_callback(void *private_data, struct fo_server *server)
return;
}
+ sockaddr = resolv_get_sockaddr_address(tmp_ctx, srvaddr, LDAP_PORT);
+ if (sockaddr == NULL) {
+ DEBUG(1, ("resolv_get_sockaddr_address failed.\n"));
+ talloc_free(tmp_ctx);
+ return;
+ }
+
address = resolv_get_string_address(tmp_ctx, srvaddr);
if (address == NULL) {
DEBUG(1, ("resolv_get_string_address failed.\n"));
@@ -611,6 +619,8 @@ static void ipa_resolve_callback(void *private_data, struct fo_server *server)
/* free old one and replace with new one */
talloc_zfree(service->sdap->uri);
service->sdap->uri = new_uri;
+ talloc_zfree(service->sdap->sockaddr);
+ service->sdap->sockaddr = talloc_steal(service, sockaddr);
talloc_zfree(service->krb5_service->address);
service->krb5_service->address = talloc_steal(service, address);
diff --git a/src/providers/ldap/ldap_common.c b/src/providers/ldap/ldap_common.c
index 950c6e5aa..0621b09b4 100644
--- a/src/providers/ldap/ldap_common.c
+++ b/src/providers/ldap/ldap_common.c
@@ -532,6 +532,7 @@ static void sdap_uri_callback(void *private_data, struct fo_server *server)
struct resolv_hostent *srvaddr;
char *address;
const char *safe_address;
+ struct sockaddr_storage *sockaddr;
const char *tmp;
char *new_uri;
LDAPURLDesc *lud;
@@ -566,6 +567,14 @@ static void sdap_uri_callback(void *private_data, struct fo_server *server)
return;
}
+ sockaddr = resolv_get_sockaddr_address(tmp_ctx, srvaddr,
+ fo_get_server_port(server));
+ if (sockaddr == NULL) {
+ DEBUG(1, ("resolv_get_sockaddr_address failed.\n"));
+ talloc_free(tmp_ctx);
+ return;
+ }
+
safe_address = sss_ldap_escape_ip_address(tmp_ctx,
srvaddr->family,
address);
@@ -613,6 +622,8 @@ static void sdap_uri_callback(void *private_data, struct fo_server *server)
/* free old one and replace with new one */
talloc_zfree(service->uri);
service->uri = new_uri;
+ talloc_zfree(service->sockaddr);
+ service->sockaddr = talloc_steal(service, sockaddr);
talloc_free(tmp_ctx);
}
diff --git a/src/providers/ldap/sdap.h b/src/providers/ldap/sdap.h
index e03e7e624..7fa56331e 100644
--- a/src/providers/ldap/sdap.h
+++ b/src/providers/ldap/sdap.h
@@ -108,6 +108,7 @@ struct sdap_service {
char *name;
char *uri;
char *kinit_service_name;
+ struct sockaddr_storage *sockaddr;
};
struct sdap_ppolicy_data {