]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
plan9: Add missing grub_device_close.
authorVladimir Serbinenko <phcoder@gmail.com>
Mon, 26 Jan 2015 08:44:33 +0000 (09:44 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Mon, 26 Jan 2015 08:45:37 +0000 (09:45 +0100)
Found by: Coverity scan.

grub-core/loader/i386/pc/plan9.c

index 0d10b1c243bf97eb0e0dc132d425d633b4822f3c..814a49d5071fb2438c5d644916177aead7d445e0 100644 (file)
@@ -342,6 +342,7 @@ fill_disk (const char *name, void *data)
   if (!plan9name)
     {
       grub_print_error ();
+      grub_device_close (dev);
       return 0;
     }
   if (grub_extend_alloc (fill_ctx->pmapptr + grub_strlen (plan9name)
@@ -349,6 +350,7 @@ fill_disk (const char *name, void *data)
                         &fill_ctx->pmap))
     {
       grub_free (plan9name);
+      grub_device_close (dev);
       return 1;
     }
   grub_strcpy (fill_ctx->pmap + fill_ctx->pmapptr, plan9name);
@@ -366,12 +368,19 @@ fill_disk (const char *name, void *data)
   fill_ctx->noslash = 1;
   grub_memset (fill_ctx->prefixescnt, 0, sizeof (fill_ctx->prefixescnt));
   if (grub_partition_iterate (dev->disk, fill_partition, fill_ctx))
-    return 1;
+    {
+      grub_device_close (dev);
+      return 1;
+    }
   if (grub_extend_alloc (fill_ctx->pmapptr + 1, &fill_ctx->pmapalloc,
                         &fill_ctx->pmap))
-    return 1;
+    {
+      grub_device_close (dev);
+      return 1;
+    }
   fill_ctx->pmap[fill_ctx->pmapptr++] = '\n';
 
+  grub_device_close (dev);
   return 0;
 }