Whamcloud - gitweb
e2fsck: always make sure e2fsck_global_ctx is set
authorTheodore Ts'o <tytso@mit.edu>
Wed, 5 Mar 2014 00:05:00 +0000 (19:05 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 5 Mar 2014 00:05:00 +0000 (19:05 -0500)
The e2fsck_global_ctx varible was only being set if HAVE_SIGNAL_H is
defined.  There are systems, such as Android, where this is not true.

This was causing e2fsck_set_bitmap_type() to seg fault since
e2fsck_global_ctx was not NULL.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reported-by: JP Abgrall <jpa@google.com>
e2fsck/unix.c

index 6f94644..23316b8 100644 (file)
@@ -749,6 +749,7 @@ static errcode_t PRS(int argc, char *argv[], e2fsck_t *ret_ctx)
                return retval;
 
        *ret_ctx = ctx;
+       e2fsck_global_ctx = ctx;
 
        setvbuf(stdout, NULL, _IONBF, BUFSIZ);
        setvbuf(stderr, NULL, _IONBF, BUFSIZ);
@@ -990,7 +991,6 @@ static errcode_t PRS(int argc, char *argv[], e2fsck_t *ret_ctx)
 #ifdef SA_RESTART
        sa.sa_flags = SA_RESTART;
 #endif
-       e2fsck_global_ctx = ctx;
        sa.sa_handler = signal_progress_on;
        sigaction(SIGUSR1, &sa, 0);
        sa.sa_handler = signal_progress_off;