s3: libsmb: Correctly trim a trailing \\ character in cli_smb2_create_fnum_send(...
authorJeremy Allison <jra@samba.org>
Tue, 21 Jun 2016 22:49:27 +0000 (15:49 -0700)
committerUri Simchoni <uri@samba.org>
Wed, 22 Jun 2016 08:33:29 +0000 (10:33 +0200)
We already trim any leading \\ characters in this function, so this is the simplest place
to clean the pathname.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=11986

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Uri Simchoni <uri@samba.org>
Autobuild-User(master): Uri Simchoni <uri@samba.org>
Autobuild-Date(master): Wed Jun 22 10:33:29 CEST 2016 on sn-devel-144

source3/libsmb/cli_smb2_fnum.c

index a17d918c7881fe5f8ed590ec02a28bd0ebe0d60e..c5b1434eaaa844c84c6788976fbc6edb2e69c833 100644 (file)
@@ -176,6 +176,7 @@ struct tevent_req *cli_smb2_create_fnum_send(TALLOC_CTX *mem_ctx,
 {
        struct tevent_req *req, *subreq;
        struct cli_smb2_create_fnum_state *state;
+       size_t fname_len = 0;
 
        req = tevent_req_create(mem_ctx, &state,
                                struct cli_smb2_create_fnum_state);
@@ -199,6 +200,17 @@ struct tevent_req *cli_smb2_create_fnum_send(TALLOC_CTX *mem_ctx,
                fname++;
        }
 
+       /* Or end in a '\' */
+       fname_len = strlen(fname);
+       if (fname_len > 0 && fname[fname_len-1] == '\\') {
+               char *new_fname = talloc_strdup(state, fname);
+               if (tevent_req_nomem(new_fname, req)) {
+                       return tevent_req_post(req, ev);
+               }
+               new_fname[fname_len-1] = '\0';
+               fname = new_fname;
+       }
+
        subreq = smb2cli_create_send(state, ev,
                                     cli->conn,
                                     cli->timeout,