From 036039460ff76f397bc23977a26632698136b0e6 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Tue, 17 Apr 2001 00:53:25 +0000 Subject: [PATCH] ChangeLog, ext2_err.et.in, mkjournal.c: mkjournal.c (ext2fs_create_journal_superblock): Add safety check; return an error if there's an attempt to create a journal less than 1024 filesystem blocks. ext2_err.et.in, mkjournal.c: Change EXT2_JOURNAL_NOT_BLOCK and EXT2_NO_JOURNAL_SB to be EXT2_ET_*. --- lib/ext2fs/ChangeLog | 9 +++++++++ lib/ext2fs/ext2_err.et.in | 7 +++++-- lib/ext2fs/mkjournal.c | 9 ++++++--- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/lib/ext2fs/ChangeLog b/lib/ext2fs/ChangeLog index 3a46a1d..c2c0887 100644 --- a/lib/ext2fs/ChangeLog +++ b/lib/ext2fs/ChangeLog @@ -1,3 +1,12 @@ +2001-04-16 Theodore Tso + + * mkjournal.c (ext2fs_create_journal_superblock): Add safety + check; return an error if there's an attempt to create a + journal less than 1024 filesystem blocks. + + * ext2_err.et.in, mkjournal.c: Change EXT2_JOURNAL_NOT_BLOCK and + EXT2_NO_JOURNAL_SB to be EXT2_ET_*. + 2001-02-20 Theodore Tso * bitops.h (ext2fs_swab16, ext2fs_swab32): Add i386 assembly diff --git a/lib/ext2fs/ext2_err.et.in b/lib/ext2fs/ext2_err.et.in index 24bce49..842cf34 100644 --- a/lib/ext2fs/ext2_err.et.in +++ b/lib/ext2fs/ext2_err.et.in @@ -257,11 +257,14 @@ ec EXT2_ET_CANCEL_REQUESTED, ec EXT2_ET_FILE_TOO_BIG, "Ext2 file too big" -ec EXT2_JOURNAL_NOT_BLOCK, +ec EXT2_ET_JOURNAL_NOT_BLOCK, "Supplied journal device not a block device" -ec EXT2_NO_JOURNAL_SB, +ec EXT2_ET_NO_JOURNAL_SB, "Journal superblock not found" +ec EXT2_ET_JOURNAL_TOO_SMALL, + "Journal must be at least 1024 blocks" + end diff --git a/lib/ext2fs/mkjournal.c b/lib/ext2fs/mkjournal.c index 62a4575..212dd16 100644 --- a/lib/ext2fs/mkjournal.c +++ b/lib/ext2fs/mkjournal.c @@ -49,7 +49,10 @@ errcode_t ext2fs_create_journal_superblock(ext2_filsys fs, { errcode_t retval; journal_superblock_t *jsb; - + + if (size < 1024) + return EXT2_ET_JOURNAL_TOO_SMALL; + if ((retval = ext2fs_get_mem(fs->blocksize, (void **) &jsb))) return retval; @@ -259,7 +262,7 @@ errcode_t ext2fs_add_journal_device(ext2_filsys fs, ext2_filsys journal_dev) return errno; if (!S_ISBLK(st.st_mode)) - return EXT2_JOURNAL_NOT_BLOCK; /* Must be a block device */ + return EXT2_ET_JOURNAL_NOT_BLOCK; /* Must be a block device */ /* Get the journal superblock */ if ((retval = io_channel_read_blk(journal_dev->io, 1, -1024, buf))) @@ -268,7 +271,7 @@ errcode_t ext2fs_add_journal_device(ext2_filsys fs, ext2_filsys journal_dev) jsb = (journal_superblock_t *) buf; if ((jsb->s_header.h_magic != (unsigned) ntohl(JFS_MAGIC_NUMBER)) || (jsb->s_header.h_blocktype != (unsigned) ntohl(JFS_SUPERBLOCK_V2))) - return EXT2_NO_JOURNAL_SB; + return EXT2_ET_NO_JOURNAL_SB; if (ntohl(jsb->s_blocksize) != fs->blocksize) return EXT2_ET_UNEXPECTED_BLOCK_SIZE; -- 1.8.3.1