]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/osdep/linux/ofpath.c: Check return value of read.
authorVladimir Serbinenko <phcoder@gmail.com>
Fri, 29 Nov 2013 04:46:19 +0000 (05:46 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Fri, 29 Nov 2013 04:46:19 +0000 (05:46 +0100)
ChangeLog
grub-core/osdep/linux/ofpath.c

index e9dab2855a76f1a645246c56dae5627ed61ed834..511f3febd3eea191b29a4e56c09479817ee640ab 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-11-29  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/osdep/linux/ofpath.c: Check return value of read.
+
 2013-11-29  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * util/mkimage.c (grub_install_generate_image): Use grub_crypto_hash for
index 29ae56580cd68f6dc8d71e4dca2250c92f9c559e..8f24bc9e8978fb4317854676543082bee81c9488 100644 (file)
@@ -143,7 +143,12 @@ find_obppath (const char *sysfs_path_orig)
       size = st.st_size;
       of_path = xmalloc (size + MAX_DISK_CAT + 1);
       memset(of_path, 0, size + MAX_DISK_CAT + 1);
-      read(fd, of_path, size);
+      if (read(fd, of_path, size) < 0)
+       {
+         grub_util_info (_("cannot read `%s': %s"), path, strerror (errno));
+         close(fd);
+         return NULL;
+       }
       close(fd);
 
       trim_newline(of_path);
@@ -353,7 +358,9 @@ check_sas (char *sysfs_path, int *tgt, unsigned long int *sas_address)
     grub_util_error (_("cannot open `%s': %s"), path, strerror (errno));
 
   memset (phy, 0, sizeof (phy));
-  read (fd, phy, sizeof (phy) - 1);
+  if (read (fd, phy, sizeof (phy) - 1) < 0)
+    grub_util_error (_("cannot read `%s': %s"), path, strerror (errno));
+
   close (fd);
 
   sscanf (phy, "%d", tgt);
@@ -361,10 +368,11 @@ check_sas (char *sysfs_path, int *tgt, unsigned long int *sas_address)
   snprintf (path, path_size, "%s/sas_device/%s/sas_address", p, ed);
   fd = open (path, O_RDONLY);
   if (fd < 0)
-  grub_util_error (_("cannot open `%s': %s"), path, strerror (errno));
+    grub_util_error (_("cannot open `%s': %s"), path, strerror (errno));
 
   memset (phy, 0, sizeof (phy));
-  read (fd, phy, sizeof (phy) - 1);
+  if (read (fd, phy, sizeof (phy) - 1) < 0)
+    grub_util_error (_("cannot read `%s': %s"), path, strerror (errno));
   sscanf (phy, "%lx", sas_address);
 
   free (path);