summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shell/ash.c5
-rw-r--r--shell/shell_common.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/shell/ash.c b/shell/ash.c
index b20c32b..153bcc0 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -12803,6 +12803,10 @@ readcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
}
}
+ /* "read -s" needs to save/restore termios, can't allow ^C
+ * to jump out of it.
+ */
+ INT_OFF;
r = shell_builtin_read(setvar2,
argptr,
bltinlookup("IFS"), /* can be NULL */
@@ -12812,6 +12816,7 @@ readcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
opt_t,
opt_u
);
+ INT_ON;
if ((uintptr_t)r > 1)
ash_msg_and_raise_error(r);
diff --git a/shell/shell_common.c b/shell/shell_common.c
index 780e27e..0051f21 100644
--- a/shell/shell_common.c
+++ b/shell/shell_common.c
@@ -170,7 +170,7 @@ shell_builtin_read(void FAST_FUNC (*setvar)(const char *name, const char *val),
int timeout;
if ((bufpos & 0xff) == 0)
- buffer = xrealloc(buffer, bufpos + 0x100);
+ buffer = xrealloc(buffer, bufpos + 0x101);
timeout = -1;
if (end_ms) {