* grub-core/commands/loadenv.c (check_blocklists): Fix overlap check.
This commit is contained in:
parent
fa33530870
commit
1f6af2a9f8
2 changed files with 6 additions and 11 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
2014-06-21 Роман Пехов <roman_pekhov>
|
||||||
|
|
||||||
|
* grub-core/commands/loadenv.c (check_blocklists): Fix overlap check.
|
||||||
|
|
||||||
2014-06-21 Glenn Washburn <development@efficientek.com>
|
2014-06-21 Glenn Washburn <development@efficientek.com>
|
||||||
|
|
||||||
* util/grub-install.c: Fix handling of --disk-module.
|
* util/grub-install.c: Fix handling of --disk-module.
|
||||||
|
|
|
@ -263,7 +263,7 @@ check_blocklists (grub_envblk_t envblk, struct blocklist *blocklists,
|
||||||
for (q = p->next; q; q = q->next)
|
for (q = p->next; q; q = q->next)
|
||||||
{
|
{
|
||||||
grub_disk_addr_t s1, s2;
|
grub_disk_addr_t s1, s2;
|
||||||
grub_disk_addr_t e1, e2, t;
|
grub_disk_addr_t e1, e2;
|
||||||
|
|
||||||
s1 = p->sector;
|
s1 = p->sector;
|
||||||
e1 = s1 + ((p->length + GRUB_DISK_SECTOR_SIZE - 1) >> GRUB_DISK_SECTOR_BITS);
|
e1 = s1 + ((p->length + GRUB_DISK_SECTOR_SIZE - 1) >> GRUB_DISK_SECTOR_BITS);
|
||||||
|
@ -271,16 +271,7 @@ check_blocklists (grub_envblk_t envblk, struct blocklist *blocklists,
|
||||||
s2 = q->sector;
|
s2 = q->sector;
|
||||||
e2 = s2 + ((q->length + GRUB_DISK_SECTOR_SIZE - 1) >> GRUB_DISK_SECTOR_BITS);
|
e2 = s2 + ((q->length + GRUB_DISK_SECTOR_SIZE - 1) >> GRUB_DISK_SECTOR_BITS);
|
||||||
|
|
||||||
if (s2 > s1)
|
if (s1 < e2 && s2 < e1)
|
||||||
{
|
|
||||||
t = s2;
|
|
||||||
s2 = s1;
|
|
||||||
s1 = t;
|
|
||||||
t = e2;
|
|
||||||
e2 = e1;
|
|
||||||
e1 = t;
|
|
||||||
}
|
|
||||||
if (e1 > s2)
|
|
||||||
{
|
{
|
||||||
/* This might be actually valid, but it is unbelievable that
|
/* This might be actually valid, but it is unbelievable that
|
||||||
any filesystem makes such a silly allocation. */
|
any filesystem makes such a silly allocation. */
|
||||||
|
|
Loading…
Add table
Reference in a new issue