* [PATCH] btrfs-progs: exit with failure when printing bad superblock
@ 2022-07-24 15:32 Mike Fleetwood
2022-07-27 19:04 ` David Sterba
0 siblings, 1 reply; 2+ messages in thread
From: Mike Fleetwood @ 2022-07-24 15:32 UTC (permalink / raw)
To: linux-btrfs; +Cc: Mike Fleetwood
Attempting to dump a bad btrfs superblock returns successful exit status
zero. According to the manual page non-zero should be returned on
failure. Fix this.
$ btrfs inspect-internal dump-super /dev/zero
superblock: bytenr=65536, device=/dev/zero
---------------------------------------------------------
ERROR: bad magic on superblock on /dev/zero at 65536
$ echo $?
0
Signed-off-by: Mike Fleetwood <mike.fleetwood@googlemail.com>
---
cmds/inspect-dump-super.c | 11 ++++++++---
tests/misc-tests/015-dump-super-garbage/test.sh | 6 +++---
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/cmds/inspect-dump-super.c b/cmds/inspect-dump-super.c
index d843562..4187da8 100644
--- a/cmds/inspect-dump-super.c
+++ b/cmds/inspect-dump-super.c
@@ -52,9 +52,9 @@ static int load_and_dump_sb(char *filename, int fd, u64 sb_bytenr, int full,
if (btrfs_super_magic(&sb) != BTRFS_MAGIC && !force) {
error("bad magic on superblock on %s at %llu",
filename, (unsigned long long)sb_bytenr);
- } else {
- btrfs_print_superblock(&sb, full);
+ return 1;
}
+ btrfs_print_superblock(&sb, full);
return 0;
}
@@ -177,7 +177,12 @@ static int cmd_inspect_dump_super(const struct cmd_struct *cmd,
putchar('\n');
}
} else {
- load_and_dump_sb(filename, fd, sb_bytenr, full, force);
+ if (load_and_dump_sb(filename, fd,
+ sb_bytenr, full, force)) {
+ close(fd);
+ ret = 1;
+ goto out;
+ }
putchar('\n');
}
close(fd);
diff --git a/tests/misc-tests/015-dump-super-garbage/test.sh b/tests/misc-tests/015-dump-super-garbage/test.sh
index b346945..1e6afa1 100755
--- a/tests/misc-tests/015-dump-super-garbage/test.sh
+++ b/tests/misc-tests/015-dump-super-garbage/test.sh
@@ -6,9 +6,9 @@ source "$TEST_TOP/common"
check_prereq btrfs
-run_check "$TOP/btrfs" inspect-internal dump-super /dev/urandom
-run_check "$TOP/btrfs" inspect-internal dump-super -a /dev/urandom
-run_check "$TOP/btrfs" inspect-internal dump-super -fa /dev/urandom
+run_mustfail "attempt to print bad superblock without force" "$TOP/btrfs" inspect-internal dump-super /dev/urandom
+run_mustfail "attempt to print bad superblock without force" "$TOP/btrfs" inspect-internal dump-super -a /dev/urandom
+run_mustfail "attempt to print bad superblock without force" "$TOP/btrfs" inspect-internal dump-super -fa /dev/urandom
run_check "$TOP/btrfs" inspect-internal dump-super -Ffa /dev/urandom
run_check "$TOP/btrfs" inspect-internal dump-super -Ffa /dev/urandom
run_check "$TOP/btrfs" inspect-internal dump-super -Ffa /dev/urandom
--
1.8.3.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] btrfs-progs: exit with failure when printing bad superblock
2022-07-24 15:32 [PATCH] btrfs-progs: exit with failure when printing bad superblock Mike Fleetwood
@ 2022-07-27 19:04 ` David Sterba
0 siblings, 0 replies; 2+ messages in thread
From: David Sterba @ 2022-07-27 19:04 UTC (permalink / raw)
To: Mike Fleetwood; +Cc: linux-btrfs
On Sun, Jul 24, 2022 at 04:32:14PM +0100, Mike Fleetwood wrote:
> Attempting to dump a bad btrfs superblock returns successful exit status
> zero. According to the manual page non-zero should be returned on
> failure. Fix this.
> $ btrfs inspect-internal dump-super /dev/zero
> superblock: bytenr=65536, device=/dev/zero
> ---------------------------------------------------------
> ERROR: bad magic on superblock on /dev/zero at 65536
>
> $ echo $?
> 0
>
> Signed-off-by: Mike Fleetwood <mike.fleetwood@googlemail.com>
Makes sense, thanks.
> ---
> cmds/inspect-dump-super.c | 11 ++++++++---
> tests/misc-tests/015-dump-super-garbage/test.sh | 6 +++---
> 2 files changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/cmds/inspect-dump-super.c b/cmds/inspect-dump-super.c
> index d843562..4187da8 100644
> --- a/cmds/inspect-dump-super.c
> +++ b/cmds/inspect-dump-super.c
> @@ -52,9 +52,9 @@ static int load_and_dump_sb(char *filename, int fd, u64 sb_bytenr, int full,
> if (btrfs_super_magic(&sb) != BTRFS_MAGIC && !force) {
> error("bad magic on superblock on %s at %llu",
I've added a notice to use --force to show it.
> filename, (unsigned long long)sb_bytenr);
> - } else {
> - btrfs_print_superblock(&sb, full);
> + return 1;
> }
> + btrfs_print_superblock(&sb, full);
> return 0;
> }
>
> @@ -177,7 +177,12 @@ static int cmd_inspect_dump_super(const struct cmd_struct *cmd,
> putchar('\n');
> }
> } else {
> - load_and_dump_sb(filename, fd, sb_bytenr, full, force);
> + if (load_and_dump_sb(filename, fd,
> + sb_bytenr, full, force)) {
> + close(fd);
> + ret = 1;
> + goto out;
> + }
> putchar('\n');
> }
> close(fd);
> diff --git a/tests/misc-tests/015-dump-super-garbage/test.sh b/tests/misc-tests/015-dump-super-garbage/test.sh
> index b346945..1e6afa1 100755
> --- a/tests/misc-tests/015-dump-super-garbage/test.sh
> +++ b/tests/misc-tests/015-dump-super-garbage/test.sh
> @@ -6,9 +6,9 @@ source "$TEST_TOP/common"
>
> check_prereq btrfs
>
> -run_check "$TOP/btrfs" inspect-internal dump-super /dev/urandom
> -run_check "$TOP/btrfs" inspect-internal dump-super -a /dev/urandom
> -run_check "$TOP/btrfs" inspect-internal dump-super -fa /dev/urandom
> +run_mustfail "attempt to print bad superblock without force" "$TOP/btrfs" inspect-internal dump-super /dev/urandom
> +run_mustfail "attempt to print bad superblock without force" "$TOP/btrfs" inspect-internal dump-super -a /dev/urandom
> +run_mustfail "attempt to print bad superblock without force" "$TOP/btrfs" inspect-internal dump-super -fa /dev/urandom
> run_check "$TOP/btrfs" inspect-internal dump-super -Ffa /dev/urandom
> run_check "$TOP/btrfs" inspect-internal dump-super -Ffa /dev/urandom
> run_check "$TOP/btrfs" inspect-internal dump-super -Ffa /dev/urandom
> --
> 1.8.3.1
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-07-27 19:18 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-24 15:32 [PATCH] btrfs-progs: exit with failure when printing bad superblock Mike Fleetwood
2022-07-27 19:04 ` David Sterba
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.