diff options
author | Sergei Golubchik <serg@mariadb.org> | 2021-02-22 21:25:16 +0100 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2021-02-22 22:42:27 +0100 |
commit | 0ab1e3914c78e4a82a8e4502b58b20e5598727ab (patch) | |
tree | 403a06406bd6998e588cb51a0f058cfa668e96da /sql/wsrep_sst.cc | |
parent | ca126d96f5175ba03c32ea79774075d6d42c98cb (diff) | |
parent | 3c021485c913828b83510967c1ff277011a9d59a (diff) | |
download | mariadb-git-0ab1e3914c78e4a82a8e4502b58b20e5598727ab.tar.gz |
Merge branch '10.2' into 10.3
Diffstat (limited to 'sql/wsrep_sst.cc')
-rw-r--r-- | sql/wsrep_sst.cc | 62 |
1 files changed, 52 insertions, 10 deletions
diff --git a/sql/wsrep_sst.cc b/sql/wsrep_sst.cc index 2d7d6748c2e..f16050866a6 100644 --- a/sql/wsrep_sst.cc +++ b/sql/wsrep_sst.cc @@ -701,8 +701,20 @@ static size_t estimate_cmd_len (bool* extra_args) char c; while ((c = *arg++) != 0) { - /* A whitespace or a single quote requires double quotation marks: */ - if (isspace(c) || c == '\'') + /* + Space, single quote, ampersand, and I/O redirection characters + require text to be enclosed in double quotes: + */ + if (isspace(c) || c == '\'' || c == '&' || c == '|' || +#ifdef __WIN__ + c == '>' || c == '<') +#else + /* + The semicolon is used to separate shell commands, so it must be + enclosed in double quotes as well: + */ + c == '>' || c == '<' || c == ';') +#endif { quotation= true; } @@ -725,10 +737,19 @@ static size_t estimate_cmd_len (bool* extra_args) while ((c = *arg++) != 0) { /* - A whitespace or a single quote requires double - quotation marks: + Space, single quote, ampersand, and I/O redirection characters + require text to be enclosed in double quotes: + */ + if (isspace(c) || c == '\'' || c == '&' || c == '|' || +#ifdef __WIN__ + c == '>' || c == '<') +#else + /* + The semicolon is used to separate shell commands, so it must be + enclosed in double quotes as well: */ - if (isspace(c) || c == '\'') + c == '>' || c == '<' || c == ';') +#endif { quotation= true; } @@ -809,8 +830,20 @@ static void copy_orig_argv (char* cmd_str) char c; while ((c = *arg_scan++) != 0) { - /* A whitespace or a single quote requires double quotation marks: */ - if (isspace(c) || c == '\'') + /* + Space, single quote, ampersand, and I/O redirection characters + require text to be enclosed in double quotes: + */ + if (isspace(c) || c == '\'' || c == '&' || c == '|' || +#ifdef __WIN__ + c == '>' || c == '<') +#else + /* + The semicolon is used to separate shell commands, so it must be + enclosed in double quotes as well: + */ + c == '>' || c == '<' || c == ';') +#endif { quotation= true; } @@ -884,10 +917,19 @@ static void copy_orig_argv (char* cmd_str) while ((c = *arg_scan++) != 0) { /* - A whitespace or a single quote requires double - quotation marks: + Space, single quote, ampersand, and I/O redirection characters + require text to be enclosed in double quotes: + */ + if (isspace(c) || c == '\'' || c == '&' || c == '|' || +#ifdef __WIN__ + c == '>' || c == '<') +#else + /* + The semicolon is used to separate shell commands, so it must be + enclosed in double quotes as well: */ - if (isspace(c) || c == '\'') + c == '>' || c == '<' || c == ';') +#endif { quotation= true; } |