btrfs-progs: handle stat errors in open_ctree_fs_info
authorDavid Sterba <dsterba@suse.com>
Fri, 18 Mar 2016 15:07:09 +0000 (16:07 +0100)
committerDavid Sterba <dsterba@suse.com>
Fri, 18 Mar 2016 15:38:14 +0000 (16:38 +0100)
Signed-off-by: David Sterba <dsterba@suse.com>
disk-io.c

index 6b47977..c46f366 100644 (file)
--- a/disk-io.c
+++ b/disk-io.c
@@ -1323,11 +1323,16 @@ struct btrfs_fs_info *open_ctree_fs_info(const char *filename,
                                         enum btrfs_open_ctree_flags flags)
 {
        int fp;
+       int ret;
        struct btrfs_fs_info *info;
        int oflags = O_CREAT | O_RDWR;
        struct stat st;
 
-       stat(filename, &st);
+       ret = stat(filename, &st);
+       if (ret < 0) {
+               error("cannot stat '%s': %s", filename, strerror(errno));
+               return NULL;
+       }
        if (!(((st.st_mode & S_IFMT) == S_IFREG) || ((st.st_mode & S_IFMT) == S_IFBLK))) {
                fprintf (stderr, "%s is not a regular file or block device\n", filename);
                return NULL;