OSDN Git Service

e2fsck: make the "fs is mounted; continue?" prompt more paranoid
authorTheodore Ts'o <tytso@mit.edu>
Sun, 8 May 2011 03:14:06 +0000 (23:14 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 8 May 2011 03:14:06 +0000 (23:14 -0400)
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" <tytso@mit.edu>
e2fsck/unix.c
e2fsck/util.c

index 624e11b..f4792a5 100644 (file)
@@ -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);
index 56c6b35..6c3117d 100644 (file)
@@ -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)