]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2010-03-01 Vladimir Serbinenko <phcoder@gmail.com>
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Mon, 1 Mar 2010 20:00:02 +0000 (21:00 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Mon, 1 Mar 2010 20:00:02 +0000 (21:00 +0100)
* fs/ext2.c (grub_ext2_read_block): Fix an integer overflow.

ChangeLog
fs/ext2.c

index 5ba6dd4eb99f3f5f83247ad90d3cf255e117e546..90bbce0e2350c3ce204895e230dffdafd204af35 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-03-01  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * fs/ext2.c (grub_ext2_read_block): Fix an integer overflow.
+
 2010-03-01  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Wait for user entry basing on presence of output rather than on errors.
index ac36b329b59b59c26d0ce4a7a84c6347e758937e..f2fec828a40cf38c373e80daf4322cff6f3b3d2c 100644 (file)
--- a/fs/ext2.c
+++ b/fs/ext2.c
@@ -436,7 +436,8 @@ grub_ext2_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
       grub_uint32_t indir[blksz / 4];
 
       if (grub_disk_read (data->disk,
-                         grub_le_to_cpu32 (inode->blocks.indir_block)
+                         ((grub_disk_addr_t)
+                          grub_le_to_cpu32 (inode->blocks.indir_block))
                          << log2_blksz,
                          0, blksz, indir))
        return grub_errno;
@@ -452,13 +453,15 @@ grub_ext2_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
       grub_uint32_t indir[blksz / 4];
 
       if (grub_disk_read (data->disk,
-                         grub_le_to_cpu32 (inode->blocks.double_indir_block)
+                         ((grub_disk_addr_t)
+                          grub_le_to_cpu32 (inode->blocks.double_indir_block))
                          << log2_blksz,
                          0, blksz, indir))
        return grub_errno;
 
       if (grub_disk_read (data->disk,
-                         grub_le_to_cpu32 (indir[rblock / perblock])
+                         ((grub_disk_addr_t)
+                          grub_le_to_cpu32 (indir[rblock / perblock]))
                          << log2_blksz,
                          0, blksz, indir))
        return grub_errno;