From: Wang Shilong Date: Thu, 12 Dec 2013 07:47:00 +0000 (+0800) Subject: Btrfs-progs: add sanity checks for btrfs device operations X-Git-Tag: upstream/4.16.1~2994 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e3c9596d3fc8b0df647a6cbae55c2d77570de759;p=platform%2Fupstream%2Fbtrfs-progs.git Btrfs-progs: add sanity checks for btrfs device operations Make sure we are a block device firstly, this can avoid some unnecessary ioctls operations. Signed-off-by: Wang Shilong Signed-off-by: David Sterba Signed-off-by: Chris Mason --- diff --git a/cmds-device.c b/cmds-device.c index bc4a8dc..ea20919 100644 --- a/cmds-device.c +++ b/cmds-device.c @@ -161,6 +161,12 @@ static int cmd_rm_dev(int argc, char **argv) struct btrfs_ioctl_vol_args arg; int res; + if (!is_block_device(argv[i])) { + fprintf(stderr, + "ERROR: %s is not a block device\n", argv[i]); + ret++; + continue; + } strncpy_null(arg.name, argv[i]); res = ioctl(fdmnt, BTRFS_IOC_RM_DEV, &arg); e = errno; @@ -222,6 +228,12 @@ static int cmd_scan_dev(int argc, char **argv) struct btrfs_ioctl_vol_args args; int ret; + if (!is_block_device(argv[i])) { + fprintf(stderr, + "ERROR: %s is not a block device\n", argv[i]); + close(fd); + return 1; + } printf("Scanning for Btrfs filesystems in '%s'\n", argv[i]); strncpy_null(args.name, argv[i]); @@ -265,6 +277,12 @@ static int cmd_ready_dev(int argc, char **argv) perror("failed to open /dev/btrfs-control"); return 1; } + if (!is_block_device(argv[1])) { + fprintf(stderr, + "ERROR: %s is not a block device\n", argv[1]); + close(fd); + return 1; + } strncpy(args.name, argv[argc - 1], BTRFS_PATH_NAME_MAX); ret = ioctl(fd, BTRFS_IOC_DEVICES_READY, &args);