diff options
Diffstat (limited to 'source3/libads')
-rw-r--r-- | source3/libads/cldap.c | 4 | ||||
-rw-r--r-- | source3/libads/kerberos.c | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/source3/libads/cldap.c b/source3/libads/cldap.c index da1dec6b93..8e34e27353 100644 --- a/source3/libads/cldap.c +++ b/source3/libads/cldap.c @@ -188,6 +188,8 @@ static int recv_cldap_netlogon(int sock, struct cldap_netlogon_reply *reply) DATA_BLOB blob; DATA_BLOB os1, os2, os3; int i1; + /* half the time of a regular ldap timeout, not less than 3 seconds. */ + unsigned int al_secs = MAX(3,lp_ldap_timeout()/2); char *p; blob = data_blob(NULL, 8192); @@ -200,7 +202,7 @@ static int recv_cldap_netlogon(int sock, struct cldap_netlogon_reply *reply) /* Setup timeout */ gotalarm = 0; CatchSignal(SIGALRM, SIGNAL_CAST gotalarm_sig); - alarm(lp_ldap_timeout()); + alarm(al_secs); /* End setup timeout. */ ret = read(sock, blob.data, blob.length); diff --git a/source3/libads/kerberos.c b/source3/libads/kerberos.c index c872508fe8..57233f2182 100644 --- a/source3/libads/kerberos.c +++ b/source3/libads/kerberos.c @@ -494,10 +494,13 @@ static char *get_kdc_ip_string(char *mem_ctx, const char *realm, struct in_addr kdc_str = talloc_asprintf(mem_ctx, "%s\tkdc = %s\n", kdc_str, inet_ntoa(ip_srv[i].ip)); if (!kdc_str) { + SAFE_FREE(ip_srv); return NULL; } } + SAFE_FREE(ip_srv); + DEBUG(10,("get_kdc_ip_string: Returning %s\n", kdc_str )); |