From: Darrick J. Wong Date: Tue, 4 Nov 2014 16:49:39 +0000 (-0500) Subject: misc: fix broken libmagic interaction with plausibility check X-Git-Tag: v1.43-WIP-2015-05-18~143 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e49b03e341a06a53a5103c467fd5825ec27b752a;p=thirdparty%2Fe2fsprogs.git misc: fix broken libmagic interaction with plausibility check If we get as far as calling libmagic, return the correct error code so that mkfs asks for confirmation if libmagic finds something and doesn't ask if nothing is found. Signed-off-by: Darrick J. Wong Signed-off-by: Theodore Ts'o --- diff --git a/misc/plausible.c b/misc/plausible.c index 00bc6e27c..1848a26f4 100644 --- a/misc/plausible.c +++ b/misc/plausible.c @@ -243,6 +243,7 @@ int check_plausibility(const char *device, int flags, int *ret_is_dev) if ((flags & CHECK_FS_EXIST) && magic_library_available()) { const char *msg; magic_t mag; + int has_magic = 0; mag = dl_magic_open(MAGIC_RAW | MAGIC_SYMLINK | MAGIC_DEVICES | MAGIC_ERROR | MAGIC_NO_CHECK_ELF | @@ -250,11 +251,13 @@ int check_plausibility(const char *device, int flags, int *ret_is_dev) dl_magic_load(mag, NULL); msg = dl_magic_file(mag, device); - if (msg && strcmp(msg, "data") && strcmp(msg, "empty")) - printf(_("%s contains a `%s'\n"), device, msg); + if (msg && strcmp(msg, "data") && strcmp(msg, "empty")) { + printf(_("%s contains `%s' data\n"), device, msg); + has_magic = 1; + } dl_magic_close(mag); - return 0; + return !has_magic; } #endif diff --git a/tests/f_detect_junk/expect b/tests/f_detect_junk/expect index 57f7f89ab..f3300defc 100644 --- a/tests/f_detect_junk/expect +++ b/tests/f_detect_junk/expect @@ -11,13 +11,13 @@ is corrupt, and you might try running e2fsck with an alternate superblock: or e2fsck -b 32768 -test.img contains a `PNG image data, 148 x 31, 8-bit/color RGBA, non-interlaced' +test.img contains `PNG image data, 148 x 31, 8-bit/color RGBA, non-interlaced' data *** debugfs test.img: Bad magic number in super-block while opening filesystem -test.img contains a `PNG image data, 148 x 31, 8-bit/color RGBA, non-interlaced' +test.img contains `PNG image data, 148 x 31, 8-bit/color RGBA, non-interlaced' data *** tune2fs ../misc/tune2fs: Bad magic number in super-block while trying to open test.img -test.img contains a `PNG image data, 148 x 31, 8-bit/color RGBA, non-interlaced' +test.img contains `PNG image data, 148 x 31, 8-bit/color RGBA, non-interlaced' data *** mke2fs Creating filesystem with 16384 1k blocks and 4096 inodes Superblock backups stored on blocks: diff --git a/tests/f_detect_junk/expect.nodebugfs b/tests/f_detect_junk/expect.nodebugfs index d9281a0bf..0d4ba54b9 100644 --- a/tests/f_detect_junk/expect.nodebugfs +++ b/tests/f_detect_junk/expect.nodebugfs @@ -11,11 +11,11 @@ is corrupt, and you might try running e2fsck with an alternate superblock: or e2fsck -b 32768 -test.img contains a `PNG image data, 148 x 31, 8-bit/color RGBA, non-interlaced' +test.img contains `PNG image data, 148 x 31, 8-bit/color RGBA, non-interlaced' data *** debugfs *** tune2fs ../misc/tune2fs: Bad magic number in super-block while trying to open test.img -test.img contains a `PNG image data, 148 x 31, 8-bit/color RGBA, non-interlaced' +test.img contains `PNG image data, 148 x 31, 8-bit/color RGBA, non-interlaced' data *** mke2fs Creating filesystem with 16384 1k blocks and 4096 inodes Superblock backups stored on blocks: diff --git a/tests/f_detect_junk/script b/tests/f_detect_junk/script index 8409fdd67..3aebcd0fa 100644 --- a/tests/f_detect_junk/script +++ b/tests/f_detect_junk/script @@ -1,6 +1,6 @@ #!/bin/bash -if [ "$(grep -c 'define HAVE_MAGIC_H' $test_dir/../../lib/config.h)" -gt 0 ]; then +if [ "$(grep -c 'define HAVE_MAGIC_H' ../lib/config.h)" -gt 0 ]; then FSCK_OPT=-fn IMAGE=$test_dir/image.bz2