btrfs-progs: mkfs: fix reading rotational status value
authorDavid Sterba <dsterba@suse.com>
Wed, 21 Sep 2016 11:36:04 +0000 (13:36 +0200)
committerDavid Sterba <dsterba@suse.com>
Wed, 21 Sep 2016 11:36:04 +0000 (13:36 +0200)
ASAN reports that we're reading beyond the bounds, and is right. The
variable is too short to store a nonempty string for atoi.

Signed-off-by: David Sterba <dsterba@suse.com>
mkfs.c

diff --git a/mkfs.c b/mkfs.c
index b33e368..adfc278 100644 (file)
--- a/mkfs.c
+++ b/mkfs.c
@@ -1193,13 +1193,13 @@ static int is_ssd(const char *file)
                return 0;
        }
 
-       if (read(fd, &rotational, sizeof(char)) < sizeof(char)) {
+       if (read(fd, &rotational, 1) < 1) {
                close(fd);
                return 0;
        }
        close(fd);
 
-       return !atoi((const char *)&rotational);
+       return rotational == '0';
 }
 
 static int _cmp_device_by_id(void *priv, struct list_head *a,