r16945: Sync trunk -> 3.0 for 3.0.24 code. Still need
[vlendec/samba-autobuild/.git] / source3 / utils / net_ads.c
index 10831c878b8af9315b2ce31361e55be485c64b40..bfbc80759aa9ae0f495c63c66a625f1f8046ff0c 100644 (file)
@@ -286,6 +286,7 @@ retry:
                        goto retry;
                } else {
                        DEBUG(0,("ads_connect: %s\n", ads_errstr(status)));
+                       ads_destroy(&ads);
                        return NULL;
                }
        }
@@ -505,7 +506,8 @@ static int ads_user_info(int argc, const char **argv)
                return -1;
        }
        
-       grouplist = ldap_get_values(ads->ld, res, "memberOf");
+       grouplist = ldap_get_values((LDAP *)ads->ld,
+                                   (LDAPMessage *)res, "memberOf");
 
        if (grouplist) {
                int i;
@@ -590,7 +592,7 @@ int net_ads_user(int argc, const char **argv)
                                          shortattrs, usergrp_display, 
                                          disp_fields);
                ads_destroy(&ads);
-               return 0;
+               return ADS_ERR_OK(rc) ? 0 : -1;
        }
 
        return net_run_function(argc, argv, func, net_ads_user_usage);
@@ -715,7 +717,7 @@ int net_ads_group(int argc, const char **argv)
                                          disp_fields);
 
                ads_destroy(&ads);
-               return 0;
+               return ADS_ERR_OK(rc) ? 0 : -1;
        }
        return net_run_function(argc, argv, func, net_ads_group_usage);
 }
@@ -794,7 +796,7 @@ static int net_ads_leave(int argc, const char **argv)
        }
 
        if ( !NT_STATUS_IS_OK(netdom_leave_domain( ctx, cli, dom_sid )) ) {
-               d_printf(stderr, "Failed to disable machine account for '%s' in realm '%s'\n",
+               d_fprintf(stderr, "Failed to disable machine account for '%s' in realm '%s'\n",
                        global_myname(), ads->config.realm);
                goto done;
        }
@@ -863,8 +865,8 @@ static int check_ads_config( void )
 
        if (strlen(global_myname()) > 15) {
                d_printf("Our netbios name can be at most 15 chars long, "
-                        "\"%s\" is %d chars long\n",
-                        global_myname(), strlen(global_myname()));
+                        "\"%s\" is %u chars long\n",
+                        global_myname(), (unsigned int)strlen(global_myname()));
                return -1;
        }
 
@@ -1010,7 +1012,7 @@ static ADS_STATUS net_precreate_machine_acct( ADS_STRUCT *ads, const char *ou )
        asprintf(&dn, "%s,%s", ou_str, ads->config.bind_path);
        free(ou_str);
 
-       rc = ads_search_dn(ads, (void**)&res, dn, NULL);
+       rc = ads_search_dn(ads, &res, dn, NULL);
        ads_msgfree(ads, res);
 
        if (ADS_ERR_OK(rc)) {
@@ -1339,7 +1341,7 @@ static int net_ads_printer_publish(int argc, const char **argv)
                return -1;
        }
 
-       srv_dn = ldap_get_dn(ads->ld, res);
+       srv_dn = ldap_get_dn((LDAP *)ads->ld, (LDAPMessage *)res);
        srv_cn = ldap_explode_dn(srv_dn, 1);
 
        asprintf(&prt_dn, "cn=%s-%s,%s", srv_cn[0], printername, srv_dn);
@@ -1472,7 +1474,7 @@ static int net_ads_password(int argc, const char **argv)
 
        /* use the realm so we can eventually change passwords for users 
        in realms other than default */
-       if (!(ads = ads_init(realm, NULL, NULL))) {
+       if (!(ads = ads_init(realm, opt_workgroup, NULL))) {
                return -1;
        }
 
@@ -1496,7 +1498,7 @@ static int net_ads_password(int argc, const char **argv)
        ret = kerberos_set_password(ads->auth.kdc_server, auth_principal, 
                                auth_password, user, new_password, ads->auth.time_offset);
        if (!ADS_ERR_OK(ret)) {
-               d_fprintf(stderr, "Password change failed :-( ...\n");
+               d_fprintf(stderr, "Password change failed: %s\n", ads_errstr(ret));
                ads_destroy(&ads);
                return -1;
        }
@@ -1529,19 +1531,19 @@ int net_ads_changetrustpw(int argc, const char **argv)
 
        fstrcpy(my_name, global_myname());
        strlower_m(my_name);
-       asprintf(&host_principal, "%s@%s", my_name, ads->config.realm);
-       d_printf("Changing password for principal: HOST/%s\n", host_principal);
+       asprintf(&host_principal, "%s$@%s", my_name, ads->config.realm);
+       d_printf("Changing password for principal: %s\n", host_principal);
 
        ret = ads_change_trust_account_password(ads, host_principal);
 
        if (!ADS_ERR_OK(ret)) {
-               d_fprintf(stderr, "Password change failed :-( ...\n");
+               d_fprintf(stderr, "Password change failed: %s\n", ads_errstr(ret));
                ads_destroy(&ads);
                SAFE_FREE(host_principal);
                return -1;
        }
     
-       d_printf("Password change for principal HOST/%s succeeded.\n", host_principal);
+       d_printf("Password change for principal %s succeeded.\n", host_principal);
 
        if (lp_use_kerberos_keytab()) {
                d_printf("Attempting to update system keytab with new password.\n");