Commit d0e7a795 authored by Stéphane Lesimple's avatar Stéphane Lesimple Committed by Franco Fichtner

rc: fix an infinite loop on tty close

if the tty is closed while the script is running,
it would previously go in an infinite loop trying
to read from and write to the now-defunct tty.

PR: https://github.com/opnsense/core/issues/1240

(cherry picked from commit a11850cc)
(cherry picked from commit 8986792d)
parent 2c944e73
...@@ -18,6 +18,13 @@ fi ...@@ -18,6 +18,13 @@ fi
# endless loop # endless loop
while : ; do while : ; do
# We `set -e' to force exit if we encounter an error.
# This is mainly useful in case we lose our tty (happens when
# an ssh connection breaks, for example), in which case our stdout
# is closed and the `echo' commands in the while loop will silently fail.
# Failure to exit at that moment would lead to an infinite loop.
set -e
echo echo
echo " 0) Logout 7) Ping host" echo " 0) Logout 7) Ping host"
...@@ -32,6 +39,9 @@ echo ...@@ -32,6 +39,9 @@ echo
read -p "Enter an option: " OPCODE read -p "Enter an option: " OPCODE
echo echo
# The scripts we'll call below may return non-zero, don't exit if they do
set +e
# see what the user has chosen # see what the user has chosen
case ${OPCODE} in case ${OPCODE} in
0|exit|logout|quit) 0|exit|logout|quit)
...@@ -77,7 +87,6 @@ case ${OPCODE} in ...@@ -77,7 +87,6 @@ case ${OPCODE} in
/usr/local/etc/rc.restore_config_backup /usr/local/etc/rc.restore_config_backup
;; ;;
*) *)
/bin/sh -c "${OPCODE}"
;; ;;
esac esac
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment