Fix more asprintf warnings and some error path errors.
[jra/samba/.git] / source3 / libads / util.c
index a0c9d8f4c4b1db516e030986f3efc39ef9f22403..2c7ccfebd6cf53cb826123866dcf4900f9839883 100644 (file)
@@ -33,7 +33,7 @@ ADS_STATUS ads_change_trust_account_password(ADS_STRUCT *ads, char *host_princip
                return ADS_ERROR_SYSTEM(ENOENT);
        }
 
-       new_password = generate_random_str(DEFAULT_TRUST_ACCOUNT_PASSWORD_LENGTH);
+       new_password = generate_random_str(talloc_tos(), DEFAULT_TRUST_ACCOUNT_PASSWORD_LENGTH);
     
        ret = kerberos_set_password(ads->auth.kdc_server, host_principal, password, host_principal, new_password, ads->auth.time_offset);
 
@@ -53,7 +53,6 @@ failed:
 }
 
 ADS_STATUS ads_guess_service_principal(ADS_STRUCT *ads,
-                                      const char *given_principal,
                                       char **returned_principal)
 {
        char *princ = NULL;
@@ -65,12 +64,18 @@ ADS_STATUS ads_guess_service_principal(ADS_STRUCT *ads,
                server_realm = SMB_STRDUP(ads->server.realm);
 
                if (!server || !server_realm) {
+                       SAFE_FREE(server);
+                       SAFE_FREE(server_realm);
                        return ADS_ERROR(LDAP_NO_MEMORY);
                }
 
                strlower_m(server);
                strupper_m(server_realm);
-               asprintf(&princ, "ldap/%s@%s", server, server_realm);
+               if (asprintf(&princ, "ldap/%s@%s", server, server_realm) == -1) {
+                       SAFE_FREE(server);
+                       SAFE_FREE(server_realm);
+                       return ADS_ERROR(LDAP_NO_MEMORY);
+               }
 
                SAFE_FREE(server);
                SAFE_FREE(server_realm);
@@ -85,12 +90,18 @@ ADS_STATUS ads_guess_service_principal(ADS_STRUCT *ads,
                server_realm = SMB_STRDUP(ads->config.realm);
 
                if (!server || !server_realm) {
+                       SAFE_FREE(server);
+                       SAFE_FREE(server_realm);
                        return ADS_ERROR(LDAP_NO_MEMORY);
                }
 
                strlower_m(server);
                strupper_m(server_realm);
-               asprintf(&princ, "ldap/%s@%s", server, server_realm);
+               if (asprintf(&princ, "ldap/%s@%s", server, server_realm) == -1) {
+                       SAFE_FREE(server);
+                       SAFE_FREE(server_realm);
+                       return ADS_ERROR(LDAP_NO_MEMORY);
+               }
 
                SAFE_FREE(server);
                SAFE_FREE(server_realm);