s3:smbd: avoid 'goto out' in smbd_smb2_create_send()
authorStefan Metzmacher <metze@samba.org>
Tue, 11 Aug 2009 16:29:06 +0000 (18:29 +0200)
committerStefan Metzmacher <metze@samba.org>
Wed, 12 Aug 2009 11:27:59 +0000 (13:27 +0200)
metze

source3/smbd/smb2_create.c

index 1517ab8b3515290ed5b3b17d5ed726f35da37ae3..707b014388450b1355d04a1ef968f82a61fdb328 100644 (file)
@@ -272,7 +272,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
 
        smbreq = smbd_smb2_fake_smb_request(smb2req);
        if (tevent_req_nomem(smbreq, req)) {
-               goto out;
+               return tevent_req_post(req, ev);
        }
 
        if (IS_IPC(smbreq->conn)) {
@@ -280,7 +280,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
 
                if (!lp_nt_pipe_support()) {
                        tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED);
-                       goto out;
+                       return tevent_req_post(req, ev);
                }
 
                /* Strip \\ off the name. */
@@ -291,7 +291,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
                status = open_np_file(smbreq, pipe_name, &result);
                if (!NT_STATUS_IS_OK(status)) {
                        tevent_req_nterror(req, status);
-                       goto out;
+                       return tevent_req_post(req, ev);
                }
                info = FILE_WAS_OPENED;
                ZERO_STRUCT(sbuf);
@@ -299,7 +299,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
                status = file_new(smbreq, smbreq->conn, &result);
                if(!NT_STATUS_IS_OK(status)) {
                        tevent_req_nterror(req, status);
-                       goto out;
+                       return tevent_req_post(req, ev);
                }
 
                status = print_fsp_open(smbreq,
@@ -311,7 +311,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
                if (!NT_STATUS_IS_OK(status)) {
                        file_free(smbreq, result);
                        tevent_req_nterror(req, status);
-                       goto out;
+                       return tevent_req_post(req, ev);
                }
                info = FILE_WAS_CREATED;
        } else {
@@ -325,21 +325,19 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
                status = check_path_syntax(in_name);
                if (!NT_STATUS_IS_OK(status)) {
                        tevent_req_nterror(req, status);
-                       TALLOC_FREE(smb_fname);
-                       goto out;
+                       return tevent_req_post(req, ev);
                }
 
-               status = filename_convert(talloc_tos(),
-                                       smbreq->conn,
-                                       smbreq->flags2 & FLAGS2_DFS_PATHNAMES,
-                                       in_name,
-                                       0,
-                                       NULL,
-                                       &smb_fname);
+               status = filename_convert(req,
+                                         smbreq->conn,
+                                         smbreq->flags2 & FLAGS2_DFS_PATHNAMES,
+                                         in_name,
+                                         0,
+                                         NULL,
+                                         &smb_fname);
                if (!NT_STATUS_IS_OK(status)) {
                        tevent_req_nterror(req, status);
-                       TALLOC_FREE(smb_fname);
-                       goto out;
+                       return tevent_req_post(req, ev);
                }
 
                status = SMB_VFS_CREATE_FILE(smbreq->conn,
@@ -359,11 +357,9 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
                                             &info);
                if (!NT_STATUS_IS_OK(status)) {
                        tevent_req_nterror(req, status);
-                       TALLOC_FREE(smb_fname);
-                       goto out;
+                       return tevent_req_post(req, ev);
                }
                sbuf = smb_fname->st;
-               TALLOC_FREE(smb_fname);
        }
 
        smb2req->compat_chain_fsp = smbreq->chain_fsp;
@@ -389,7 +385,6 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
        state->out_file_id_volatile = result->fnum;
 
        tevent_req_done(req);
- out:
        return tevent_req_post(req, ev);
 }