From: Jeremy Allison Date: Tue, 21 Jun 2016 22:49:27 +0000 (-0700) Subject: s3: libsmb: Correctly trim a trailing \\ character in cli_smb2_create_fnum_send(... X-Git-Tag: samba-4.3.12~124 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a04a2ce48d7eeb90265bf2242eb49a064b0a7bcb;p=thirdparty%2Fsamba.git s3: libsmb: Correctly trim a trailing \\ character in cli_smb2_create_fnum_send() when passing a pathname to SMB2 create. 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 Reviewed-by: Uri Simchoni Autobuild-User(master): Uri Simchoni Autobuild-Date(master): Wed Jun 22 10:33:29 CEST 2016 on sn-devel-144 (cherry picked from commit c0704d99ce43a5497a29bfc53331159e4f978441) --- diff --git a/source3/libsmb/cli_smb2_fnum.c b/source3/libsmb/cli_smb2_fnum.c index a17d918c788..c5b1434eaaa 100644 --- a/source3/libsmb/cli_smb2_fnum.c +++ b/source3/libsmb/cli_smb2_fnum.c @@ -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,