From: Vladimir 'phcoder' Serbinenko Date: Thu, 26 Apr 2012 10:51:03 +0000 (+0200) Subject: * grub-core/disk/diskfilter.c (read_segment): Fix the case when disknr X-Git-Tag: 2.00~297 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4a3594c9b1e1b1b7f30e3eda058d1b7d63518776;p=thirdparty%2Fgrub.git * grub-core/disk/diskfilter.c (read_segment): Fix the case when disknr falls on Q syndrom. --- diff --git a/ChangeLog b/ChangeLog index eadfdf375..beca299c2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-04-26 Vladimir Serbinenko + + * grub-core/disk/diskfilter.c (read_segment): Fix the case when disknr + falls on Q syndrom. + 2012-04-26 Vladimir Serbinenko * grub-core/fs/nilfs2.c (grub_nilfs2_palloc_entry_offset_log): diff --git a/grub-core/disk/diskfilter.c b/grub-core/disk/diskfilter.c index 06cc7e75f..ede79ac1e 100644 --- a/grub-core/disk/diskfilter.c +++ b/grub-core/disk/diskfilter.c @@ -723,8 +723,12 @@ read_segment (struct grub_diskfilter_segment *seg, grub_disk_addr_t sector, else { disknr -= seg->node_count; - if (disknr == p) - disknr += n; + if ((disknr >= p && disknr < p + n) + || (disknr + seg->node_count >= p + && disknr + seg->node_count < p + n)) + disknr = p + n; + if (disknr >= seg->node_count) + disknr -= seg->node_count; } } else