aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ext2fs
diff options
context:
space:
mode:
authorDarrick J. Wong <darrick.wong@oracle.com>2013-10-23 19:43:32 -0400
committerTheodore Ts'o <tytso@mit.edu>2013-10-23 19:56:21 -0400
commitd87f198ca3250c9dff6a4002cd2bbbb5ab6f113a (patch)
tree0ae9a9a0efc73244e3e1d7a814b3e8fa8660bd7c /lib/ext2fs
parentcecfb4c04227dd5803c24b311d92a80e91b7b380 (diff)
downloadandroid_external_e2fsprogs-d87f198ca3250c9dff6a4002cd2bbbb5ab6f113a.tar.gz
android_external_e2fsprogs-d87f198ca3250c9dff6a4002cd2bbbb5ab6f113a.tar.bz2
android_external_e2fsprogs-d87f198ca3250c9dff6a4002cd2bbbb5ab6f113a.zip
libext2fs: reject 64bit badblocks numbers
Don't accept block numbers larger than 2^32 for the badblocks list, and don't run badblocks on them either. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to 'lib/ext2fs')
-rw-r--r--lib/ext2fs/read_bb_file.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/ext2fs/read_bb_file.c b/lib/ext2fs/read_bb_file.c
index 7d7bb7aa..8d1ad1a5 100644
--- a/lib/ext2fs/read_bb_file.c
+++ b/lib/ext2fs/read_bb_file.c
@@ -39,7 +39,7 @@ errcode_t ext2fs_read_bb_FILE2(ext2_filsys fs, FILE *f,
void *priv_data))
{
errcode_t retval;
- blk_t blockno;
+ blk64_t blockno;
int count;
char buf[128];
@@ -55,9 +55,12 @@ errcode_t ext2fs_read_bb_FILE2(ext2_filsys fs, FILE *f,
while (!feof (f)) {
if (fgets(buf, sizeof(buf), f) == NULL)
break;
- count = sscanf(buf, "%u", &blockno);
+ count = sscanf(buf, "%llu", &blockno);
if (count <= 0)
continue;
+ /* Badblocks isn't going to be updated for 64bit */
+ if (blockno >> 32)
+ return EOVERFLOW;
if (fs &&
((blockno < fs->super->s_first_data_block) ||
(blockno >= ext2fs_blocks_count(fs->super)))) {