[Ocfs2-tools-devel] libocfs2: fix overflow when counting bytes in ocfs2_malloc_blocks

Joseph Qi joseph.qi at huawei.com
Tue Aug 25 23:35:34 PDT 2015


num_blocks and blksize are defined type int. It will overflow if the
volume is large.
So should covert it to unsigned long long first.

Signed-off-by: Joseph Qi <joseph.qi at huawei.com>
---
 libocfs2/memory.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libocfs2/memory.c b/libocfs2/memory.c
index ed5c05c..d5a293a 100644
--- a/libocfs2/memory.c
+++ b/libocfs2/memory.c
@@ -109,7 +109,7 @@ errcode_t ocfs2_malloc_blocks(io_channel *channel, int num_blocks,
 	blksize = io_get_blksize(channel);
 	if (((unsigned long long)num_blocks * blksize) > SIZE_MAX)
 		return OCFS2_ET_NO_MEMORY;
-	bytes = num_blocks * blksize;
+	bytes = (unsigned long long)num_blocks * blksize;

 	/*
 	 * Older glibcs abort when they can't memalign() something.
-- 
1.8.4.3




More information about the Ocfs2-tools-devel mailing list