texlive[58347] Build/source/texk/xdvik: escape all shell
commits+karl at tug.org
commits+karl at tug.org
Sun Mar 14 23:19:56 CET 2021
Revision: 58347
http://tug.org/svn/texlive?view=revision&revision=58347
Author: karl
Date: 2021-03-14 23:19:56 +0100 (Sun, 14 Mar 2021)
Log Message:
-----------
escape all shell metacharacters and whitespace
Modified Paths:
--------------
trunk/Build/source/texk/xdvik/ChangeLog
trunk/Build/source/texk/xdvik/string-utils.c
Modified: trunk/Build/source/texk/xdvik/ChangeLog
===================================================================
--- trunk/Build/source/texk/xdvik/ChangeLog 2021-03-14 12:03:08 UTC (rev 58346)
+++ trunk/Build/source/texk/xdvik/ChangeLog 2021-03-14 22:19:56 UTC (rev 58347)
@@ -1,3 +1,16 @@
+2021-03-14 Karl Berry <karl at freefriends.org>
+
+ * string-utils.c (shell_escape_string): escape other shell
+ metacharacters and whitespace.
+
+2021-03-12 Norbert Preining <norbert at preining.info>
+
+ * string-utils.c (shell_escape_string): also escape &.
+
+2021-03-14 Norbert Preining <norbert at preining.info>
+
+ * string-utils.c (shell_escape_string): also escape &.
+
2020-03-02 Karl Berry <karl at freefriends.org>
* main.c (is_good_dvi_file): avoid using strnlen, not present
Modified: trunk/Build/source/texk/xdvik/string-utils.c
===================================================================
--- trunk/Build/source/texk/xdvik/string-utils.c 2021-03-14 12:03:08 UTC (rev 58346)
+++ trunk/Build/source/texk/xdvik/string-utils.c 2021-03-14 22:19:56 UTC (rev 58347)
@@ -635,10 +635,10 @@
return start;
}
-/* Escape all of the following characters in str:
- ` \ ; ( ) &
- making it safe to pass str to a shell. Return result in a newly
- allocated string, which the caller is responsible to free() after use.
+/* Escape shell metacharacters in str, hopefully making it safe to pass
+ str to system(), i.e., /bin/sh -c, without further quoting. Return
+ result in a newly allocated string, which the caller is responsible
+ to free() after use.
*/
char *
shell_escape_string(const char *str)
@@ -651,10 +651,20 @@
while (*src_ptr != '\0') {
if (*src_ptr == '\\'
|| *src_ptr == '`'
- || *src_ptr == '('
- || *src_ptr == ')'
+ || *src_ptr == '\''
+ || *src_ptr == '"'
+ || *src_ptr == '(' || *src_ptr == ')'
+ || *src_ptr == '{' || *src_ptr == '}'
+ || *src_ptr == '[' || *src_ptr == ']'
+ || *src_ptr == '<' || *src_ptr == '>'
|| *src_ptr == '&'
- || *src_ptr == ';') {
+ || *src_ptr == '|'
+ || *src_ptr == '!'
+ || *src_ptr == '$'
+ || *src_ptr == '*'
+ || *src_ptr == '?'
+ || *src_ptr == ';'
+ || *src_ptr == ' ' || *src_ptr == '\t' || *src_ptr == '\n') {
#if 0
/* only if not yet escaped? */
&& (src_ptr == str || (src_ptr > str && *(src_ptr - 1) != '\\'))) {
More information about the tex-live-commits
mailing list.