Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=c4d... Commit: c4dd20192c46397a9156c478f104299dfabf0060 Parent: efb0ea4ed013a9d505e31734f4c2e0b9aff763ec Author: Andrew Price anprice@redhat.com AuthorDate: Tue Jan 24 12:26:07 2012 +0000 Committer: Andrew Price anprice@redhat.com CommitterDate: Tue Jan 24 12:26:07 2012 +0000
gfs2_edit: Don't exit prematurely in display_block_type
Turns out my fixes in 34f59b and 7624e9 were a little heavy handed as the "errors" from gfs2_get_bitmap aren't fatal. We still need to guard against negative array subscripts though so this patch removes the exit() calls and adds checks for the negative returns.
Signed-off-by: Andrew Price anprice@redhat.com --- gfs2/edit/hexedit.c | 30 ++++++++++++------------------ 1 files changed, 12 insertions(+), 18 deletions(-)
diff --git a/gfs2/edit/hexedit.c b/gfs2/edit/hexedit.c index 808ebb1..4b992de 100644 --- a/gfs2/edit/hexedit.c +++ b/gfs2/edit/hexedit.c @@ -699,10 +699,6 @@ int display_block_type(int from_restore) type = 4; else { type = gfs2_get_bitmap(&sbd, block, rgd); - if (type < 0) { - fprintf(stderr, "Failed to retrieve block state from bitmap\n"); - exit(-1); - } } } else type = 4; @@ -710,10 +706,12 @@ int display_block_type(int from_restore) if (!screen_chunk_size) screen_chunk_size = 256; pgnum = (offset / screen_chunk_size); - print_gfs2("(p.%d of %d--%s)", pgnum + 1, - (sbd.bsize % screen_chunk_size) > 0 ? - sbd.bsize / screen_chunk_size + 1 : sbd.bsize / - screen_chunk_size, allocdesc[sbd.gfs1][type]); + if (type >= 0) { + print_gfs2("(p.%d of %d--%s)", pgnum + 1, + (sbd.bsize % screen_chunk_size) > 0 ? + sbd.bsize / screen_chunk_size + 1 : sbd.bsize / + screen_chunk_size, allocdesc[sbd.gfs1][type]); + } /*eol(9);*/ if ((be32_to_cpu(mh->mh_type) == GFS2_METATYPE_RG)) { int ptroffset = edit_row[dmode] * 16 + edit_col[dmode]; @@ -729,12 +727,10 @@ int display_block_type(int from_restore) print_gfs2(" blk "); for (b = blknum; b < blknum + 4; b++) { btype = gfs2_get_bitmap(&sbd, b, rgd); - if (btype < 0) { - fprintf(stderr, "Failed to retrieve block state from bitmap\n"); - exit(-1); + if (btype >= 0) { + print_gfs2("0x%x-%s ", b, + allocdesc[sbd.gfs1][btype]); } - print_gfs2("0x%x-%s ", b, - allocdesc[sbd.gfs1][btype]); } } } else if ((be32_to_cpu(mh->mh_type) == GFS2_METATYPE_RB)) { @@ -765,12 +761,10 @@ int display_block_type(int from_restore) print_gfs2(" blk "); for (b = blknum; b < blknum + 4; b++) { btype = gfs2_get_bitmap(&sbd, b, rgd); - if (btype < 0) { - fprintf(stderr, "Failed to retrieve block state from bitmap\n"); - exit(-1); + if (btype >= 0) { + print_gfs2("0x%x-%s ", b, + allocdesc[sbd.gfs1][btype]); } - print_gfs2("0x%x-%s ", b, - allocdesc[sbd.gfs1][btype]); } } }
cluster-commits@lists.fedorahosted.org