diff --git a/cmds-device.c b/cmds-device.c index bc4a8dcd..ea20919e 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);