]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
disk/scsi: fix use after free
authorAndrei Borzenkov <arvidjaar@gmail.com>
Sat, 20 Jun 2015 20:38:18 +0000 (23:38 +0300)
committerAndrei Borzenkov <arvidjaar@gmail.com>
Sat, 20 Jun 2015 20:38:18 +0000 (23:38 +0300)
Found by: Coverity scan.
CID: 96713

grub-core/disk/scsi.c

index 92084d0f8edb20b4f5a5d463698fa98b956a943a..4c6923f8b58f520a815ba343fcac3377fce65a24 100644 (file)
@@ -615,9 +615,10 @@ grub_scsi_open (const char *name, grub_disk_t disk)
 
       if (scsi->blocksize & (scsi->blocksize - 1) || !scsi->blocksize)
        {
+         grub_error (GRUB_ERR_IO, "invalid sector size %d",
+                     scsi->blocksize);
          grub_free (scsi);
-         return grub_error (GRUB_ERR_IO, "invalid sector size %d",
-                            scsi->blocksize);
+         return grub_errno;
        }
       for (disk->log_sector_size = 0;
           (1U << disk->log_sector_size) < scsi->blocksize;