bug-parted
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] ext2: don't overflow when creating a partition of size 2TiB or l


From: Jim Meyering
Subject: [PATCH] ext2: don't overflow when creating a partition of size 2TiB or larger
Date: Wed, 05 May 2010 18:26:41 +0200

FYI,

Thanks again Martin.
I'm about to commit this in your name, now that I finally
reproduced the problem.

>From 31d0a1a21631a716736fc6998c0f730230ec1b99 Mon Sep 17 00:00:00 2001
From: Martin Poole <address@hidden>
Date: Wed, 5 May 2010 18:24:22 +0200
Subject: [PATCH] ext2: don't overflow when creating a partition of size 2TiB or 
larger

Without this patch, mkpartfs would succeed in creating an ext2
partition, but the resulting partition would fail a mkfs.ext2 -f check.
* libparted/fs/ext2/parted_io.c (do_read): Avoid overflow 32-bit
sector count overflow for a partition of size 2TiB or larger.
(do_write): Likewise.
See http://bugzilla.redhat.com/584057#c16 a reproducer.
---
 libparted/fs/ext2/parted_io.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/libparted/fs/ext2/parted_io.c b/libparted/fs/ext2/parted_io.c
index 522ea98..f6154d6 100644
--- a/libparted/fs/ext2/parted_io.c
+++ b/libparted/fs/ext2/parted_io.c
@@ -82,7 +82,9 @@ static int do_read(void *cookie, void *ptr, blk_t block, 
blk_t num)
 {
        struct my_cookie *monster = cookie;

-       return ped_geometry_read(monster->geom, ptr, block << (monster->logsize 
- 9), num << (monster->logsize - 9));
+       return ped_geometry_read(monster->geom, ptr,
+                                (PedSector) block << (monster->logsize - 9),
+                                (PedSector) num << (monster->logsize - 9));
 }

 static int do_set_blocksize(void *cookie, int logsize)
@@ -98,8 +100,8 @@ static int do_write(void *cookie, void *ptr, blk_t block, 
blk_t num)
        struct my_cookie *monster = cookie;

        return ped_geometry_write(monster->geom, ptr,
-                                 block << (monster->logsize - 9),
-                                 num << (monster->logsize - 9));
+                                 (PedSector) block << (monster->logsize - 9),
+                                 (PedSector) num << (monster->logsize - 9));
 }


--
1.7.1.335.g6845a




reply via email to

[Prev in Thread] Current Thread [Next in Thread]