summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/utils/net_ads.c93
1 files changed, 47 insertions, 46 deletions
diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c
index c52dfb9bf9..09235051e9 100644
--- a/source3/utils/net_ads.c
+++ b/source3/utils/net_ads.c
@@ -1309,6 +1309,10 @@ static int net_ads_join_usage(struct net_context *c, int argc, const char **argv
static void _net_ads_join_dns_updates(TALLOC_CTX *ctx, struct libnet_JoinCtx *r)
{
#if defined(WITH_DNS_UPDATES)
+ ADS_STRUCT *ads_dns = NULL;
+ int ret;
+ NTSTATUS status;
+
/*
* In a clustered environment, don't do dynamic dns updates:
* Registering the set of ip addresses that are assigned to
@@ -1323,67 +1327,64 @@ static void _net_ads_join_dns_updates(TALLOC_CTX *ctx, struct libnet_JoinCtx *r)
if (lp_clustering()) {
d_fprintf(stderr, _("Not doing automatic DNS update in a "
"clustered setup.\n"));
- goto done;
+ return;
}
- if (r->out.domain_is_ad) {
- /*
- * We enter this block with user creds.
- * kinit with the machine password to do dns update.
- */
- ADS_STRUCT *ads_dns = NULL;
- int ret;
- NTSTATUS status;
+ if (!r->out.domain_is_ad) {
+ return;
+ }
- ads_dns = ads_init(lp_realm(), NULL, r->in.dc_name);
+ /*
+ * We enter this block with user creds.
+ * kinit with the machine password to do dns update.
+ */
- if (ads_dns == NULL) {
- d_fprintf(stderr, _("DNS update failed: out of memory!\n"));
- goto done;
- }
+ ads_dns = ads_init(lp_realm(), NULL, r->in.dc_name);
- use_in_memory_ccache();
+ if (ads_dns == NULL) {
+ d_fprintf(stderr, _("DNS update failed: out of memory!\n"));
+ goto done;
+ }
- ret = asprintf(&ads_dns->auth.user_name, "%s$", lp_netbios_name());
- if (ret == -1) {
- d_fprintf(stderr, _("DNS update failed: out of memory\n"));
- goto dns_done;
- }
+ use_in_memory_ccache();
- ads_dns->auth.password = secrets_fetch_machine_password(
- r->out.netbios_domain_name, NULL, NULL);
- if (ads_dns->auth.password == NULL) {
- d_fprintf(stderr, _("DNS update failed: out of memory\n"));
- goto dns_done;
- }
+ ret = asprintf(&ads_dns->auth.user_name, "%s$", lp_netbios_name());
+ if (ret == -1) {
+ d_fprintf(stderr, _("DNS update failed: out of memory\n"));
+ goto done;
+ }
- ads_dns->auth.realm = SMB_STRDUP(r->out.dns_domain_name);
- if (ads_dns->auth.realm == NULL) {
- d_fprintf(stderr, _("DNS update failed: out of memory\n"));
- goto dns_done;
- }
+ ads_dns->auth.password = secrets_fetch_machine_password(
+ r->out.netbios_domain_name, NULL, NULL);
+ if (ads_dns->auth.password == NULL) {
+ d_fprintf(stderr, _("DNS update failed: out of memory\n"));
+ goto done;
+ }
- strupper_m(ads_dns->auth.realm);
+ ads_dns->auth.realm = SMB_STRDUP(r->out.dns_domain_name);
+ if (ads_dns->auth.realm == NULL) {
+ d_fprintf(stderr, _("DNS update failed: out of memory\n"));
+ goto done;
+ }
- ret = ads_kinit_password(ads_dns);
- if (ret != 0) {
- d_fprintf(stderr,
- _("DNS update failed: kinit failed: %s\n"),
- error_message(ret));
- goto dns_done;
- }
+ strupper_m(ads_dns->auth.realm);
- status = net_update_dns(ctx, ads_dns, NULL);
- if (!NT_STATUS_IS_OK(status)) {
- d_fprintf( stderr, _("DNS update failed: %s\n"),
- nt_errstr(status));
- }
+ ret = ads_kinit_password(ads_dns);
+ if (ret != 0) {
+ d_fprintf(stderr,
+ _("DNS update failed: kinit failed: %s\n"),
+ error_message(ret));
+ goto done;
+ }
-dns_done:
- ads_destroy(&ads_dns);
+ status = net_update_dns(ctx, ads_dns, NULL);
+ if (!NT_STATUS_IS_OK(status)) {
+ d_fprintf( stderr, _("DNS update failed: %s\n"),
+ nt_errstr(status));
}
done:
+ ads_destroy(&ads_dns);
#endif
return;