diff options
author | jimw@mysql.com <> | 2005-08-31 10:23:29 -0700 |
---|---|---|
committer | jimw@mysql.com <> | 2005-08-31 10:23:29 -0700 |
commit | 2ef8b1e7de0c20db2c4311307c8ed8d7d4f1de0d (patch) | |
tree | ed7b60a1540ed527aa5e713766490f8448de317f /scripts | |
parent | 298af8ccb9c807bfd438cca55df4b0140d9f1d80 (diff) | |
download | mariadb-git-2ef8b1e7de0c20db2c4311307c8ed8d7d4f1de0d.tar.gz |
Fix quoting of options passed to external commands by mysqld_multi. (Bug #11280)
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/mysqld_multi.sh | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/scripts/mysqld_multi.sh b/scripts/mysqld_multi.sh index ba46fd6fa29..7fff4cbb731 100644 --- a/scripts/mysqld_multi.sh +++ b/scripts/mysqld_multi.sh @@ -289,8 +289,10 @@ sub start_mysqlds() } else { - $options[$j]=~ s/;/\\;/g; - $tmp.= " $options[$j]"; + # we single-quote the argument, but first convert single-quotes to + # '"'"' so they are passed through correctly + $options[$j]=~ s/'/'"'"'/g; + $tmp.= " '$options[$j]'"; } } if ($opt_verbose && $com =~ m/\/safe_mysqld$/ && !$info_sent) @@ -374,7 +376,12 @@ sub get_mysqladmin_options $mysqladmin_found= 0 if (!length($mysqladmin)); $com = "$mysqladmin"; $tmp = " -u $opt_user"; - $tmp.= defined($opt_password) ? " -p$opt_password" : ""; + if (defined($opt_password)) { + my $pw= $opt_password; + # Protect single quotes in password + $pw =~ s/'/'"'"'/g; + $tmp.= " -p'$pw'"; + } $tmp.= $opt_tcp_ip ? " -h 127.0.0.1" : ""; for ($j = 0; defined($options[$j]); $j++) { |