Skip to content

Commit 90d117a

Browse files
authored
Merge pull request #234 from EngineScript/copilot/fix-socket-and-fastcgi-expressions
fix: harden sed expressions and add missing file guard in php-update.sh
2 parents 8fdd37a + 56ab6aa commit 90d117a

1 file changed

Lines changed: 23 additions & 3 deletions

File tree

scripts/update/php-update.sh

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,28 @@ echo "Updating Nginx configuration for PHP ${NEW_PHP_VER}..."
135135
SOCKET_EXPR='s|(unix:/run/php/)php%s-fpm(\.sock)|\1php%s-fpm\2|g'
136136
FASTCGI_EXPR='s|(fastcgi_pass[[:space:]]+[^;]*php)%s(-fpm)|\1%s\2|g'
137137

138+
# Escape text for use in sed extended regex pattern fragments.
139+
sed_escape_ere() {
140+
local text="$1"
141+
printf '%s' "$text" | sed -e 's/[][(){}.^$*+?|\\]/\\&/g'
142+
return $?
143+
}
144+
145+
# Escape text for use in sed replacement fragments.
146+
sed_escape_replacement() {
147+
local text="$1"
148+
printf '%s' "$text" | sed -e 's/[&\\]/\\&/g'
149+
return $?
150+
}
151+
138152
# Update php-fpm.conf
139153
if [[ -f "/etc/nginx/globals/php-fpm.conf" ]]; then
140154
for OLD_VER in "${MIGRATION_SOURCE_PHP_VERS[@]}"; do
155+
OLD_VER_ERE="$(sed_escape_ere "$OLD_VER")"
156+
NEW_PHP_VER_REPL="$(sed_escape_replacement "$NEW_PHP_VER")"
141157
sed -E -i \
142-
-e "$(printf "$SOCKET_EXPR" "$OLD_VER" "$NEW_PHP_VER")" \
143-
-e "$(printf "$FASTCGI_EXPR" "$OLD_VER" "$NEW_PHP_VER")" \
158+
-e "$(printf "$SOCKET_EXPR" "$OLD_VER_ERE" "$NEW_PHP_VER_REPL")" \
159+
-e "$(printf "$FASTCGI_EXPR" "$OLD_VER_ERE" "$NEW_PHP_VER_REPL")" \
144160
"/etc/nginx/globals/php-fpm.conf"
145161
done
146162
fi
@@ -149,7 +165,9 @@ fi
149165
for config_file in /etc/nginx/sites-available/*; do
150166
if [[ -f "$config_file" ]]; then
151167
for OLD_VER in "${MIGRATION_SOURCE_PHP_VERS[@]}"; do
152-
sed -E -i -e "/^[[:space:]]*fastcgi_pass[[:space:]]+/ $(printf "$FASTCGI_EXPR" "$OLD_VER" "$NEW_PHP_VER")" "$config_file"
168+
OLD_VER_ERE="$(sed_escape_ere "$OLD_VER")"
169+
NEW_PHP_VER_REPL="$(sed_escape_replacement "$NEW_PHP_VER")"
170+
sed -E -i -e "/^[[:space:]]*fastcgi_pass[[:space:]]+/$(printf "$FASTCGI_EXPR" "$OLD_VER_ERE" "$NEW_PHP_VER_REPL")" "$config_file"
153171
done
154172
fi
155173
done
@@ -185,6 +203,8 @@ debug_pause "PHP Service Start"
185203
STATUS="$(systemctl is-active "php${NEW_PHP_VER}-fpm")"
186204
if [[ "${STATUS}" == "active" ]]; then
187205
echo "PASSED: PHP ${NEW_PHP_VER} is running."
206+
mkdir -p /etc/enginescript
207+
touch /etc/enginescript/install-state.conf
188208
if grep -q '^PHP=' /etc/enginescript/install-state.conf; then
189209
sed -i 's/^PHP=.*/PHP=1/' /etc/enginescript/install-state.conf
190210
else

0 commit comments

Comments
 (0)