Skip to content

Commit 276daa4

Browse files
committed
Harden shell parameter substitution
1 parent 38fe238 commit 276daa4

File tree

1 file changed

+29
-29
lines changed

1 file changed

+29
-29
lines changed

bin/install-package-tests

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,74 +11,74 @@
1111
HOST=localhost
1212
PORT=""
1313
HOST_STRING=''
14-
if [ -n "$WP_CLI_TEST_DBHOST" ]; then
14+
if [ -n "${WP_CLI_TEST_DBHOST}" ]; then
1515
case ${WP_CLI_TEST_DBHOST##*[]]} in
1616
(*:*) HOST=${WP_CLI_TEST_DBHOST%:*} PORT=${WP_CLI_TEST_DBHOST##*:};;
17-
(*) HOST=$WP_CLI_TEST_DBHOST;;
17+
(*) HOST=${WP_CLI_TEST_DBHOST};;
1818
esac
19-
HOST_STRING="-h$HOST"
20-
if [ -n "$PORT" ]; then
21-
HOST_STRING="$HOST_STRING -P$PORT --protocol=tcp"
19+
HOST_STRING="-h${HOST}"
20+
if [ -n "${PORT}" ]; then
21+
HOST_STRING="${HOST_STRING} -P${PORT} --protocol=tcp"
2222
fi
2323
fi
2424

2525
USER=root
26-
if [ -n "$WP_CLI_TEST_DBROOTUSER" ]; then
27-
USER="$WP_CLI_TEST_DBROOTUSER"
26+
if [ -n "${WP_CLI_TEST_DBROOTUSER}" ]; then
27+
USER="${WP_CLI_TEST_DBROOTUSER}"
2828
fi
2929

3030
PASSWORD_STRING=""
31-
if [ -n "$WP_CLI_TEST_DBROOTPASS" ]; then
32-
PASSWORD_STRING="-p$WP_CLI_TEST_DBROOTPASS"
31+
if [ -n "${WP_CLI_TEST_DBROOTPASS}" ]; then
32+
PASSWORD_STRING="-p${WP_CLI_TEST_DBROOTPASS}"
3333
fi
3434

3535
TEST_DB=wp_cli_test
36-
if [ -n "$WP_CLI_TEST_DBNAME" ]; then
37-
TEST_DB="$WP_CLI_TEST_DBNAME"
36+
if [ -n "${WP_CLI_TEST_DBNAME}" ]; then
37+
TEST_DB="${WP_CLI_TEST_DBNAME}"
3838
fi
3939

4040
TEST_USER=wp_cli_test
41-
if [ -n "$WP_CLI_TEST_DBUSER" ]; then
42-
TEST_USER="$WP_CLI_TEST_DBUSER"
41+
if [ -n "${WP_CLI_TEST_DBUSER}" ]; then
42+
TEST_USER="${WP_CLI_TEST_DBUSER}"
4343
fi
4444

4545
TEST_PASSWORD=password1
46-
if [ -n "$WP_CLI_TEST_DBPASS" ]; then
47-
TEST_PASSWORD="$WP_CLI_TEST_DBPASS"
46+
if [ -n "${WP_CLI_TEST_DBPASS}" ]; then
47+
TEST_PASSWORD="${WP_CLI_TEST_DBPASS}"
4848
fi
4949

5050
# Prepare the database for running the tests with a MySQL version 8.0 or higher.
5151
install_mysql_db_8_0_plus() {
5252
set -ex
53-
mysql -e "CREATE DATABASE IF NOT EXISTS \`$TEST_DB\`;" $HOST_STRING -u"$USER" "$PASSWORD_STRING"
54-
mysql -e "CREATE USER IF NOT EXISTS \`$TEST_DB\`@'%' IDENTIFIED WITH mysql_native_password BY '$TEST_PASSWORD'" $HOST_STRING -u"$USER" "$PASSWORD_STRING"
55-
mysql -e "GRANT ALL PRIVILEGES ON \`$TEST_DB\`.* TO '$TEST_USER'@'%'" $HOST_STRING -u"$USER" "$PASSWORD_STRING"
56-
mysql -e "GRANT ALL PRIVILEGES ON \`$TEST_DB_scaffold\`.* TO '$TEST_USER'@'%'" $HOST_STRING -u"$USER" "$PASSWORD_STRING"
53+
mysql -e "CREATE DATABASE IF NOT EXISTS \`${TEST_DB}\`;" ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}"
54+
mysql -e "CREATE USER IF NOT EXISTS \`${TEST_DB}\`@'%' IDENTIFIED WITH mysql_native_password BY '${TEST_PASSWORD}'" ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}"
55+
mysql -e "GRANT ALL PRIVILEGES ON \`${TEST_DB}\`.* TO '${TEST_USER}'@'%'" ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}"
56+
mysql -e "GRANT ALL PRIVILEGES ON \`${TEST_DB}_scaffold\`.* TO '${TEST_USER}'@'%'" ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}"
5757
}
5858

5959
# Prepare the database for running the tests with a MySQL version lower than 8.0.
6060
install_mysql_db_lower_than_8_0() {
6161
set -ex
62-
mysql -e "CREATE DATABASE IF NOT EXISTS \`$TEST_DB\`;" $HOST_STRING -u"$USER" "$PASSWORD_STRING"
63-
mysql -e "GRANT ALL ON \`$TEST_DB\`.* TO '$TEST_USER'@'%' IDENTIFIED BY '$TEST_PASSWORD'" $HOST_STRING -u"$USER" "$PASSWORD_STRING"
64-
mysql -e "GRANT ALL ON \`$TEST_DB_scaffold\`.* TO '$TEST_USER'@'%' IDENTIFIED BY '$TEST_PASSWORD'" $HOST_STRING -u"$USER" "$PASSWORD_STRING"
62+
mysql -e "CREATE DATABASE IF NOT EXISTS \`${TEST_DB}\`;" ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}"
63+
mysql -e "GRANT ALL ON \`${TEST_DB}\`.* TO '${TEST_USER}'@'%' IDENTIFIED BY '${TEST_PASSWORD}'" ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}"
64+
mysql -e "GRANT ALL ON \`${TEST_DB}_scaffold\`.* TO '${TEST_USER}'@'%' IDENTIFIED BY '${TEST_PASSWORD}'" ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}"
6565
}
6666

67-
VERSION_STRING=$(mysql -e "SELECT VERSION()" --skip-column-names $HOST_STRING -u"$USER" "$PASSWORD_STRING")
68-
VERSION=$(echo "$VERSION_STRING" | grep -o '^[^-]*')
69-
MAJOR=$(echo "$VERSION" | cut -d. -f1)
70-
MINOR=$(echo "$VERSION" | cut -d. -f2)
67+
VERSION_STRING=$(mysql -e "SELECT VERSION()" --skip-column-names ${HOST_STRING} -u"${USER}" "${PASSWORD_STRING}")
68+
VERSION=$(echo "${VERSION_STRING}" | grep -o '^[^-]*')
69+
MAJOR=$(echo "${VERSION}" | cut -d. -f1)
70+
MINOR=$(echo "${VERSION}" | cut -d. -f2)
7171
TYPE="MySQL"
72-
case "$VERSION_STRING" in
72+
case "${VERSION_STRING}" in
7373
*"MariaDB"*)
7474
TYPE="MariaDB"
7575
;;
7676
esac
7777

78-
echo "Detected $TYPE at version $MAJOR.$MINOR"
78+
echo "Detected ${TYPE} at version ${MAJOR}.${MINOR}"
7979

8080

81-
if [ "$TYPE" != "MariaDB" ] && [ "$MAJOR" -ge 8 ]; then
81+
if [ "${TYPE}" != "MariaDB" ] && [ "${MAJOR}" -ge 8 ]; then
8282
install_mysql_db_8_0_plus
8383
else
8484
install_mysql_db_lower_than_8_0

0 commit comments

Comments
 (0)