From: Theodore Ts'o Date: Sun, 8 May 2011 03:14:06 +0000 (-0400) Subject: e2fsck: make the "fs is mounted; continue?" prompt more paranoid X-Git-Tag: v1.42-WIP-0702~13^2~12 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=1760d167b2c0f91069a8b6e4a8fef1a5bc0f9ed1;p=tools%2Fe2fsprogs.git e2fsck: make the "fs is mounted; continue?" prompt more paranoid A user received the "file system is mounted; do you really want to continue" prompt, and then instead of typing "n" for no, forgot that he hadn't declined to continuation question, and typed the up-arrow key, which in his locale, the 'A' in "^[[A" was interpreted as "yes", and he lost data. This was clearly the user's fault, but to make e2fsck a bit safer against user stupidity/carelessness, we will change the "fs is mounted; continue?" prompt to default to no, and treat the escape character (along with the return and space characters, currently) as a request for the default answer. Addresses-Debian-Bug: #619859 Signed-off-by: "Theodore Ts'o" --- diff --git a/e2fsck/unix.c b/e2fsck/unix.c index 624e11b..f4792a5 100644 --- a/e2fsck/unix.c +++ b/e2fsck/unix.c @@ -232,7 +232,7 @@ static void check_mount(e2fsck_t ctx) printf(_("\n\n\007\007\007\007WARNING!!! " "The filesystem is mounted. If you continue you ***WILL***\n" "cause ***SEVERE*** filesystem damage.\007\007\007\n\n")); - cont = ask_yn(_("Do you really want to continue"), -1); + cont = ask_yn(_("Do you really want to continue"), 0); if (!cont) { printf (_("check aborted.\n")); exit (0); diff --git a/e2fsck/util.c b/e2fsck/util.c index 56c6b35..6c3117d 100644 --- a/e2fsck/util.c +++ b/e2fsck/util.c @@ -180,7 +180,7 @@ int ask_yn(const char * string, int def) def = 0; break; } - else if ((c == ' ' || c == '\n') && (def != -1)) + else if ((c == 27 || c == ' ' || c == '\n') && (def != -1)) break; } if (def)