diff --git a/grub-core/osdep/unix/hostdisk.c b/grub-core/osdep/unix/hostdisk.c index 3a00d7451..353db01f6 100644 --- a/grub-core/osdep/unix/hostdisk.c +++ b/grub-core/osdep/unix/hostdisk.c @@ -101,6 +101,9 @@ grub_util_fd_read (grub_util_fd_t fd, char *buf, size_t len) { ssize_t size = 0; + if (len > SSIZE_MAX) + return -1; + while (len) { ssize_t ret = read (fd, buf, len); @@ -131,6 +134,9 @@ grub_util_fd_write (grub_util_fd_t fd, const char *buf, size_t len) { ssize_t size = 0; + if (len > SSIZE_MAX) + return -1; + while (len) { ssize_t ret = write (fd, buf, len);