s4:libcli/util/clilsa.c: add explicit check for NTSTATUS r.out.result
authorGünther Deschner <gd@samba.org>
Tue, 23 Mar 2010 14:04:25 +0000 (15:04 +0100)
committerStefan Metzmacher <metze@samba.org>
Mon, 29 Mar 2010 13:35:51 +0000 (15:35 +0200)
Guenther
Signed-off-by: Stefan Metzmacher <metze@samba.org>
source4/libcli/util/clilsa.c

index fda8aa73b1edb46f399032c2a9a37b9a8b4a9922..50435cf00026468a9f1642ebacc04eafc55d2f88 100644 (file)
@@ -125,6 +125,11 @@ static NTSTATUS smblsa_connect(struct smbcli_state *cli)
                return status;
        }
 
+       if (!NT_STATUS_IS_OK(r.out.result)) {
+               talloc_free(lsa);
+               return r.out.result;
+       }
+
        cli->lsa = lsa;
        
        return NT_STATUS_OK;
@@ -150,7 +155,12 @@ NTSTATUS smblsa_sid_privileges(struct smbcli_state *cli, struct dom_sid *sid,
        r.in.sid = sid;
        r.out.rights = rights;
 
-       return dcerpc_lsa_EnumAccountRights_r(cli->lsa->pipe->binding_handle, mem_ctx, &r);
+       status = dcerpc_lsa_EnumAccountRights_r(cli->lsa->pipe->binding_handle, mem_ctx, &r);
+       if (!NT_STATUS_IS_OK(status)) {
+               return status;
+       }
+
+       return r.out.result;
 }
 
 
@@ -239,6 +249,10 @@ NTSTATUS smblsa_lookup_sid(struct smbcli_state *cli,
                talloc_free(mem_ctx2);
                return status;
        }
+       if (!NT_STATUS_IS_OK(r.out.result)) {
+               talloc_free(mem_ctx2);
+               return r.out.result;
+       }
        if (names.count != 1) {
                talloc_free(mem_ctx2);
                return NT_STATUS_UNSUCCESSFUL;
@@ -296,6 +310,10 @@ NTSTATUS smblsa_lookup_name(struct smbcli_state *cli,
                talloc_free(mem_ctx2);
                return status;
        }
+       if (!NT_STATUS_IS_OK(r.out.result)) {
+               talloc_free(mem_ctx2);
+               return r.out.result;
+       }
        if (sids.count != 1) {
                talloc_free(mem_ctx2);
                return NT_STATUS_UNSUCCESSFUL;
@@ -332,7 +350,12 @@ NTSTATUS smblsa_sid_add_privileges(struct smbcli_state *cli, struct dom_sid *sid
        r.in.sid = sid;
        r.in.rights = rights;
 
-       return dcerpc_lsa_AddAccountRights_r(cli->lsa->pipe->binding_handle, mem_ctx, &r);
+       status = dcerpc_lsa_AddAccountRights_r(cli->lsa->pipe->binding_handle, mem_ctx, &r);
+       if (!NT_STATUS_IS_OK(status)) {
+               return status;
+       }
+
+       return r.out.result;
 }
 
 /*
@@ -355,5 +378,10 @@ NTSTATUS smblsa_sid_del_privileges(struct smbcli_state *cli, struct dom_sid *sid
        r.in.remove_all = 0;
        r.in.rights = rights;
 
-       return dcerpc_lsa_RemoveAccountRights_r(cli->lsa->pipe->binding_handle, mem_ctx, &r);
+       status = dcerpc_lsa_RemoveAccountRights_r(cli->lsa->pipe->binding_handle, mem_ctx, &r);
+       if (!NT_STATUS_IS_OK(status)) {
+               return status;
+       }
+
+       return r.out.result;
 }