From: Vladimir Serbinenko Date: Fri, 29 Nov 2013 04:46:19 +0000 (+0100) Subject: * grub-core/osdep/linux/ofpath.c: Check return value of read. X-Git-Tag: grub-2.02-beta1~190 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d54f647a4abf8f7eb16775961da835739bafbad8;p=thirdparty%2Fgrub.git * grub-core/osdep/linux/ofpath.c: Check return value of read. --- diff --git a/ChangeLog b/ChangeLog index e9dab2855..511f3febd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-11-29 Vladimir Serbinenko + + * grub-core/osdep/linux/ofpath.c: Check return value of read. + 2013-11-29 Vladimir Serbinenko * util/mkimage.c (grub_install_generate_image): Use grub_crypto_hash for diff --git a/grub-core/osdep/linux/ofpath.c b/grub-core/osdep/linux/ofpath.c index 29ae56580..8f24bc9e8 100644 --- a/grub-core/osdep/linux/ofpath.c +++ b/grub-core/osdep/linux/ofpath.c @@ -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);