aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoam Postavsky2016-07-03 09:56:36 -0400
committerNoam Postavsky2016-07-03 15:05:20 -0400
commit178b2f590982e37991bc72b08a9e02b64d750601 (patch)
treebbc08a39311cd65d9870376dda28de3d451efb16
parentdec756756070d271925c8c2a705de97eb8d7fb0b (diff)
downloademacs-178b2f590982e37991bc72b08a9e02b64d750601.tar.gz
emacs-178b2f590982e37991bc72b08a9e02b64d750601.zip
Note combine-and-quote-strings doesn't shell quote
* doc/lispref/processes.texi (Shell Arguments): * lisp/subr.el (combine-and-quote-strings): Add a note that combine-and-quote-strings doesn't protect arguments against shell evaluation (Bug #20333).
-rw-r--r--doc/lispref/processes.texi5
-rw-r--r--lisp/subr.el5
2 files changed, 9 insertions, 1 deletions
diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi
index 5bd0b11cda0..b4542f65cc1 100644
--- a/doc/lispref/processes.texi
+++ b/doc/lispref/processes.texi
@@ -215,6 +215,11 @@ converting user input in the minibuffer, a Lisp string, into a list of
215string arguments to be passed to @code{call-process} or 215string arguments to be passed to @code{call-process} or
216@code{start-process}, or for converting such lists of arguments into 216@code{start-process}, or for converting such lists of arguments into
217a single Lisp string to be presented in the minibuffer or echo area. 217a single Lisp string to be presented in the minibuffer or echo area.
218Note that if a shell is involved (e.g., if using
219@code{call-process-shell-command}), arguments should still be
220protected by @code{shell-quote-argument};
221@code{combine-and-quote-strings} is @emph{not} intended to protect
222special characters from shell evaluation.
218 223
219@defun split-string-and-unquote string &optional separators 224@defun split-string-and-unquote string &optional separators
220This function splits @var{string} into substrings at matches for the 225This function splits @var{string} into substrings at matches for the
diff --git a/lisp/subr.el b/lisp/subr.el
index ed2166a0ee2..e9e19d35f65 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -3706,7 +3706,10 @@ Modifies the match data; use `save-match-data' if necessary."
3706 "Concatenate the STRINGS, adding the SEPARATOR (default \" \"). 3706 "Concatenate the STRINGS, adding the SEPARATOR (default \" \").
3707This tries to quote the strings to avoid ambiguity such that 3707This tries to quote the strings to avoid ambiguity such that
3708 (split-string-and-unquote (combine-and-quote-strings strs)) == strs 3708 (split-string-and-unquote (combine-and-quote-strings strs)) == strs
3709Only some SEPARATORs will work properly." 3709Only some SEPARATORs will work properly.
3710
3711Note that this is not intended to protect STRINGS from
3712interpretation by shells, use `shell-quote-argument' for that."
3710 (let* ((sep (or separator " ")) 3713 (let* ((sep (or separator " "))
3711 (re (concat "[\\\"]" "\\|" (regexp-quote sep)))) 3714 (re (concat "[\\\"]" "\\|" (regexp-quote sep))))
3712 (mapconcat 3715 (mapconcat