diff options
author | Volker Lendecke <vl@samba.org> | 2008-01-20 09:03:32 +0100 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2008-01-20 09:05:42 +0100 |
commit | 611609ee2584cc0703c0524ae712ee385ae006f4 (patch) | |
tree | a6c91e7d7372bd8de25bad94e108d652cb7dccfb /source3/winbindd | |
parent | 0bb6fb7b6f8ea1c039e710f55bba779363716f2d (diff) | |
download | samba-611609ee2584cc0703c0524ae712ee385ae006f4.tar.gz samba-611609ee2584cc0703c0524ae712ee385ae006f4.tar.bz2 samba-611609ee2584cc0703c0524ae712ee385ae006f4.zip |
Fix a segfault
Pointed out by Steven Danneman on irc, thanks!
Jerry, Günther, please check!
(This used to be commit 9e71c89ac648040739ef2161a2e6c4299be1e35b)
Diffstat (limited to 'source3/winbindd')
-rw-r--r-- | source3/winbindd/winbindd_cm.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c index 908228717e..ef159f0670 100644 --- a/source3/winbindd/winbindd_cm.c +++ b/source3/winbindd/winbindd_cm.c @@ -613,7 +613,13 @@ static bool get_dc_name_via_netlogon(struct winbindd_domain *domain, DS_RETURN_DNS_NAME, &domain_info); if (W_ERROR_IS_OK(werr)) { - fstrcpy(tmp, domain_info->domain_controller_name); + tmp = talloc_strdup( + mem_ctx, domain_info->domain_controller_name); + if (tmp == NULL) { + DEBUG(0, ("talloc_strdup failed\n")); + talloc_destroy(mem_ctx); + return false; + } if (strlen(domain->alt_name) == 0) { fstrcpy(domain->alt_name, domain_info->domain_name); @@ -635,11 +641,10 @@ static bool get_dc_name_via_netlogon(struct winbindd_domain *domain, /* And restore our original timeout. */ cli_set_timeout(netlogon_pipe->cli, orig_timeout); - talloc_destroy(mem_ctx); - if (!W_ERROR_IS_OK(werr)) { DEBUG(10, ("rpccli_netlogon_getanydcname failed: %s\n", dos_errstr(werr))); + talloc_destroy(mem_ctx); return False; } @@ -654,6 +659,8 @@ static bool get_dc_name_via_netlogon(struct winbindd_domain *domain, fstrcpy(dcname, p); + talloc_destroy(mem_ctx); + DEBUG(10, ("rpccli_netlogon_getanydcname returned %s\n", dcname)); if (!resolve_name(dcname, dc_ss, 0x20)) { |