From: Seok Hong Date: Mon, 23 Jan 2017 23:49:14 +0000 (+0900) Subject: Fix wrong bitmap space size calculation X-Git-Tag: submit/tizen/20170213.020148~15 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F36%2F111736%2F3;p=platform%2Fcore%2Fsecurity%2Fode.git Fix wrong bitmap space size calculation Change-Id: I4e971bb251697a08fea79b58b780214912ea02b9 Signed-off-by: Seok Hong --- diff --git a/server/ext4-tool.cpp b/server/ext4-tool.cpp index 783c084..d319483 100644 --- a/server/ext4-tool.cpp +++ b/server/ext4-tool.cpp @@ -76,9 +76,6 @@ Ext4Tool::Ext4Tool(const std::string &src) : device.lseek(ODE_SUPERBLOCK_OFFSET + 36, SEEK_SET); device.read(&clustersPerGroup, 4); - // read bitmap - bitmap.resize(totalBlockCount + 1); - unsigned int groupDescCount = divCeilSafely(totalBlockCount - firstDataBlock, blocksPerGroup); int blockNbytes = clustersPerGroup / 8; @@ -100,6 +97,15 @@ Ext4Tool::Ext4Tool(const std::string &src) : /* skip other member */ }; + // read bitmap + { + unsigned int start = firstDataBlock; + unsigned int real_end = blocksPerGroup * groupDescCount - 1 + start; + size_t size = (size_t) (((real_end - start) / 8) + 1); + size = (size + 7) & ~3; + bitmap.resize(size); + } + for (unsigned int i = 0; i < groupDescCount; i++) { data block_bitmap(blockSize);