From: Michael Albinus Date: Thu, 9 Jun 2022 12:44:00 +0000 (+0200) Subject: Fix file name quoting in tramp-smb.el (do not merge) X-Git-Tag: emacs-28.1.90~41^2~1 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3fd08543782d0d417eaa2dda0727ea16b3271710;p=emacs.git Fix file name quoting in tramp-smb.el (do not merge) * lisp/net/tramp-smb.el (tramp-smb-handle-write-region): Quote tmpfile. (tramp-smb-get-localname): Remove superfluous test. (Bug#55855) * test/lisp/net/tramp-tests.el (tramp-test03-file-name-method-rules): Remove superfluous checks. --- diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el index 2aaa6e8ab3f..dfcb7162c80 100644 --- a/lisp/net/tramp-smb.el +++ b/lisp/net/tramp-smb.el @@ -1631,7 +1631,7 @@ errors for shares like \"C$/\", which are common in Microsoft Windows." v 3 (format "Moving tmp file %s to %s" tmpfile filename) (unwind-protect (unless (tramp-smb-send-command - v (format "put %s \"%s\"" + v (format "put \"%s\" \"%s\"" tmpfile (tramp-smb-get-localname v))) (tramp-error v 'file-error "Cannot write `%s'" filename)) (delete-file tmpfile))) @@ -1695,9 +1695,8 @@ If VEC has no cifs capabilities, exchange \"/\" by \"\\\\\"." (when (string-match "\\(\\$\\$\\)\\(/\\|$\\)" localname) (setq localname (replace-match "$" nil nil localname 1))) - ;; A period followed by a space, or trailing periods and spaces, - ;; are not supported. - (when (string-match-p "\\. \\|\\.$\\| $" localname) + ;; A trailing space is not supported. + (when (string-match-p " $" localname) (tramp-error vec 'file-error "Invalid file name %s" (tramp-make-tramp-file-name vec localname))) diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index 61fa6a5ae4e..9071beedf2e 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -2028,17 +2028,7 @@ Also see `ignore'." :type 'user-error) (should-error (expand-file-name "/method:user1@host1|ssh:user2@host2:/path/to/file") - :type 'user-error)) - - ;; Samba does not support file names with periods followed by - ;; spaces, and trailing periods or spaces. - (when (tramp--test-smb-p) - (dolist (file '("foo." "foo. bar" "foo ")) - (should-error - (tramp-smb-get-localname - (tramp-dissect-file-name - (expand-file-name file tramp-test-temporary-file-directory))) - :type 'file-error)))) + :type 'user-error))) (ert-deftest tramp-test04-substitute-in-file-name () "Check `substitute-in-file-name'."