Remove a number of NT_STATUS_HAVE_NO_MEMORY_AND_FREE macros from the codebase.
[metze/samba/wip.git] / source4 / rpc_server / lsa / dcesrv_lsa.c
index 02ff0dad332b5e7ff70fb626d586ed6f4ffe8373..c1ddd90a58d12990bf479c7cbeb176ae470d29c8 100644 (file)
@@ -87,13 +87,22 @@ static NTSTATUS dcesrv_build_lsa_sd(TALLOC_CTX *mem_ctx,
        NT_STATUS_NOT_OK_RETURN_AND_FREE(status, tmp_ctx);
 
        domain_admins_sid = dom_sid_add_rid(tmp_ctx, domain_sid, DOMAIN_RID_ADMINS);
-       NT_STATUS_HAVE_NO_MEMORY_AND_FREE(domain_admins_sid, tmp_ctx);
+       if (domain_admins_sid == NULL) {
+               TALLOC_FREE(tmp_ctx);
+               return NT_STATUS_NO_MEMORY;
+       }
 
        domain_admins_sid_str = dom_sid_string(tmp_ctx, domain_admins_sid);
-       NT_STATUS_HAVE_NO_MEMORY_AND_FREE(domain_admins_sid_str, tmp_ctx);
+       if (domain_admins_sid_str == NULL) {
+               TALLOC_FREE(tmp_ctx);
+               return NT_STATUS_NO_MEMORY;
+       }
 
        sidstr = dom_sid_string(tmp_ctx, sid);
-       NT_STATUS_HAVE_NO_MEMORY_AND_FREE(sidstr, tmp_ctx);
+       if (sidstr == NULL) {
+               TALLOC_FREE(tmp_ctx);
+               return NT_STATUS_NO_MEMORY;
+       }
 
        *sd = security_descriptor_dacl_create(mem_ctx,
                                              0, sidstr, NULL,
@@ -144,7 +153,8 @@ static NTSTATUS dcesrv_lsa_AddRemoveAccountRights(struct dcesrv_call_state *dce_
 static NTSTATUS dcesrv_lsa_Close(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
                          struct lsa_Close *r)
 {
-       enum dcerpc_transport_t transport = dce_call->conn->endpoint->ep_description->transport;
+       enum dcerpc_transport_t transport =
+               dcerpc_binding_get_transport(dce_call->conn->endpoint->ep_description);
        struct dcesrv_handle *h;
 
        if (transport != NCACN_NP && transport != NCALRPC) {
@@ -296,15 +306,12 @@ static NTSTATUS dcesrv_lsa_EnumPrivs(struct dcesrv_call_state *dce_call, TALLOC_
                              struct lsa_EnumPrivs *r)
 {
        struct dcesrv_handle *h;
-       struct lsa_policy_state *state;
        uint32_t i;
        enum sec_privilege priv;
        const char *privname;
 
        DCESRV_PULL_HANDLE(h, r->in.handle, LSA_HANDLE_POLICY);
 
-       state = h->data;
-
        i = *r->in.resume_handle;
 
        while (((priv = sec_privilege_from_index(i)) != SEC_PRIV_INVALID) &&
@@ -2589,16 +2596,28 @@ static NTSTATUS dcesrv_lsa_AddRemoveAccountRights(struct dcesrv_call_state *dce_
        }
 
        sidndrstr = ldap_encode_ndr_dom_sid(msg, sid);
-       NT_STATUS_HAVE_NO_MEMORY_AND_FREE(sidndrstr, msg);
+       if (sidndrstr == NULL) {
+               TALLOC_FREE(msg);
+               return NT_STATUS_NO_MEMORY;
+       }
 
        sidstr = dom_sid_string(msg, sid);
-       NT_STATUS_HAVE_NO_MEMORY_AND_FREE(sidstr, msg);
+       if (sidstr == NULL) {
+               TALLOC_FREE(msg);
+               return NT_STATUS_NO_MEMORY;
+       }
 
        dnstr = talloc_asprintf(msg, "sid=%s", sidstr);
-       NT_STATUS_HAVE_NO_MEMORY_AND_FREE(dnstr, msg);
+       if (dnstr == NULL) {
+               TALLOC_FREE(msg);
+               return NT_STATUS_NO_MEMORY;
+       }
 
        msg->dn = ldb_dn_new(msg, state->pdb, dnstr);
-       NT_STATUS_HAVE_NO_MEMORY_AND_FREE(msg->dn, msg);
+       if (msg->dn == NULL) {
+               TALLOC_FREE(msg);
+               return NT_STATUS_NO_MEMORY;
+       }
 
        if (LDB_FLAG_MOD_TYPE(ldb_flag) == LDB_FLAG_MOD_ADD) {
                NTSTATUS status;
@@ -3345,7 +3364,7 @@ static NTSTATUS dcesrv_lsa_QuerySecret(struct dcesrv_call_state *dce_call, TALLO
                if (!r->out.old_val) {
                        return NT_STATUS_NO_MEMORY;
                }
-               prior_val = ldb_msg_find_ldb_val(res[0], "priorValue");
+               prior_val = ldb_msg_find_ldb_val(msg, "priorValue");
 
                if (prior_val && prior_val->length) {
                        secret.data = prior_val->data;
@@ -3371,7 +3390,7 @@ static NTSTATUS dcesrv_lsa_QuerySecret(struct dcesrv_call_state *dce_call, TALLO
                if (!r->out.old_mtime) {
                        return NT_STATUS_NO_MEMORY;
                }
-               *r->out.old_mtime = ldb_msg_find_attr_as_uint64(res[0], "priorSetTime", 0);
+               *r->out.old_mtime = ldb_msg_find_attr_as_uint64(msg, "priorSetTime", 0);
        }
 
        if (r->in.new_val) {
@@ -3381,7 +3400,7 @@ static NTSTATUS dcesrv_lsa_QuerySecret(struct dcesrv_call_state *dce_call, TALLO
                        return NT_STATUS_NO_MEMORY;
                }
 
-               new_val = ldb_msg_find_ldb_val(res[0], "currentValue");
+               new_val = ldb_msg_find_ldb_val(msg, "currentValue");
 
                if (new_val && new_val->length) {
                        secret.data = new_val->data;
@@ -3407,7 +3426,7 @@ static NTSTATUS dcesrv_lsa_QuerySecret(struct dcesrv_call_state *dce_call, TALLO
                if (!r->out.new_mtime) {
                        return NT_STATUS_NO_MEMORY;
                }
-               *r->out.new_mtime = ldb_msg_find_attr_as_uint64(res[0], "lastSetTime", 0);
+               *r->out.new_mtime = ldb_msg_find_attr_as_uint64(msg, "lastSetTime", 0);
        }
 
        return NT_STATUS_OK;
@@ -3625,7 +3644,8 @@ static NTSTATUS dcesrv_lsa_RetrievePrivateData(struct dcesrv_call_state *dce_cal
 static NTSTATUS dcesrv_lsa_GetUserName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
                                struct lsa_GetUserName *r)
 {
-       enum dcerpc_transport_t transport = dce_call->conn->endpoint->ep_description->transport;
+       enum dcerpc_transport_t transport =
+               dcerpc_binding_get_transport(dce_call->conn->endpoint->ep_description);
        NTSTATUS status = NT_STATUS_OK;
        const char *account_name;
        const char *authority_name;
@@ -4114,7 +4134,7 @@ static NTSTATUS check_ft_info(TALLOC_CTX *mem_ctx,
        const char *tname;
        size_t dns_len;
        size_t tlen;
-       NTSTATUS nt_status;
+       NTSTATUS nt_status = NT_STATUS_OK;
        uint32_t new_fti_idx;
        uint32_t i;
        /* use always TDO type, until we understand when Xref can be used */
@@ -4219,22 +4239,32 @@ static NTSTATUS check_ft_info(TALLOC_CTX *mem_ctx,
                                                  collision_type,
                                                  LSA_TLN_DISABLED_CONFLICT,
                                                  tdo_name);
+                       if (!NT_STATUS_IS_OK(nt_status)) {
+                               goto done;
+                       }
                }
                if (sid_conflict) {
                        nt_status = add_collision(c_info, new_fti_idx,
                                                  collision_type,
                                                  LSA_SID_DISABLED_CONFLICT,
                                                  tdo_name);
+                       if (!NT_STATUS_IS_OK(nt_status)) {
+                               goto done;
+                       }
                }
                if (nb_conflict) {
                        nt_status = add_collision(c_info, new_fti_idx,
                                                  collision_type,
                                                  LSA_NB_DISABLED_CONFLICT,
                                                  tdo_name);
+                       if (!NT_STATUS_IS_OK(nt_status)) {
+                               goto done;
+                       }
                }
        }
 
-       return NT_STATUS_OK;
+done:
+       return nt_status;
 }
 
 static NTSTATUS add_collision(struct lsa_ForestTrustCollisionInfo *c_info,