btrfs-progs: fix fd leak in cmd_subvol_set_default
authorEric Sandeen <sandeen@redhat.com>
Mon, 25 Feb 2013 22:54:49 +0000 (16:54 -0600)
committerDavid Sterba <dsterba@suse.cz>
Wed, 27 Feb 2013 13:40:05 +0000 (14:40 +0100)
Rearrange cmd_subvol_set_default() slightly so we
don't have to close the fd on an error return.

While we're at it, fix whitespace & remove magic
return values.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
cmds-subvolume.c

index 0dfaefe..461eed9 100644 (file)
@@ -712,24 +712,25 @@ static int cmd_subvol_set_default(int argc, char **argv)
        subvolid = argv[1];
        path = argv[2];
 
+       objectid = (unsigned long long)strtoll(subvolid, NULL, 0);
+       if (errno == ERANGE) {
+               fprintf(stderr, "ERROR: invalid tree id (%s)\n", subvolid);
+               return 1;
+       }
+
        fd = open_file_or_dir(path);
        if (fd < 0) {
                fprintf(stderr, "ERROR: can't access to '%s'\n", path);
-               return 12;
+               return 1;
        }
 
-       objectid = (unsigned long long)strtoll(subvolid, NULL, 0);
-       if (errno == ERANGE) {
-               fprintf(stderr, "ERROR: invalid tree id (%s)\n",subvolid);
-               return 30;
-       }
        ret = ioctl(fd, BTRFS_IOC_DEFAULT_SUBVOL, &objectid);
        e = errno;
        close(fd);
-       if( ret < 0 ){
+       if (ret < 0) {
                fprintf(stderr, "ERROR: unable to set a new default subvolume - %s\n",
                        strerror(e));
-               return 30;
+               return 1;
        }
        return 0;
 }