r16324: Klocwork #499. Allways check results from alloc.
authorJeremy Allison <jra@samba.org>
Fri, 16 Jun 2006 23:21:36 +0000 (23:21 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 16:17:33 +0000 (11:17 -0500)
Jeremy.
(This used to be commit 2b69d436da7b2902ea419f3bcc45c7b5a5c571fb)

source3/libads/ldap.c

index be15643ba2f01ec8952bac1de55b283b73377c48..13459ba40d38387705bfab7794b89eb3735f2567 100644 (file)
@@ -1430,16 +1430,28 @@ ADS_STATUS ads_add_service_principal_name(ADS_STRUCT *ads, const char *machine_n
        if (!(host_spn = talloc_asprintf(ctx, "HOST/%s", my_fqdn))) {
                talloc_destroy(ctx);
                ads_msgfree(ads, res);
-               return ADS_ERROR(LDAP_NO_SUCH_OBJECT);
+               return ADS_ERROR(LDAP_NO_MEMORY);
        }
 
        /* Add the extra principal */
        psp1 = talloc_asprintf(ctx, "%s/%s", spn, machine_name);
+       if (!psp1) {
+               talloc_destroy(ctx);
+               ads_msgfree(ads, res);
+               return ADS_ERROR(LDAP_NO_MEMORY);
+       }
+
        strupper_m(psp1);
        strlower_m(&psp1[strlen(spn)]);
        DEBUG(5,("ads_add_service_principal_name: INFO: Adding %s to host %s\n", psp1, machine_name));
        servicePrincipalName[0] = psp1;
        psp2 = talloc_asprintf(ctx, "%s/%s.%s", spn, machine_name, ads->config.realm);
+       if (!psp2) {
+               talloc_destroy(ctx);
+               ads_msgfree(ads, res);
+               return ADS_ERROR(LDAP_NO_MEMORY);
+       }
+
        strupper_m(psp2);
        strlower_m(&psp2[strlen(spn)]);
        DEBUG(5,("ads_add_service_principal_name: INFO: Adding %s to host %s\n", psp2, machine_name));
@@ -1449,6 +1461,12 @@ ADS_STATUS ads_add_service_principal_name(ADS_STRUCT *ads, const char *machine_n
         * the KDC doesn't send "server principal unknown" errors to clients
         * which use the DNS name in determining service principal names. */
        psp3 = talloc_asprintf(ctx, "%s/%s", spn, my_fqdn);
+       if (!psp3) {
+               talloc_destroy(ctx);
+               ads_msgfree(ads, res);
+               return ADS_ERROR(LDAP_NO_MEMORY);
+       }
+
        strupper_m(psp3);
        strlower_m(&psp3[strlen(spn)]);
        if (strcmp(psp2, psp3) != 0) {