"Journal superblock magic number invalid!\n");
return;
}
- blocksize = be32_to_cpu(jsb->s_blocksize);
+ if (be32_to_cpu(jsb->s_blocksize) != blocksize) {
+ fprintf(out_file,
+ "Journal block size invalid: %u\n",
+ be32_to_cpu(jsb->s_blocksize));
+ return;
+ }
transaction = be32_to_cpu(jsb->s_sequence);
blocknr = be32_to_cpu(jsb->s_start);
header = (jbd2_journal_revoke_header_t *) buf;
offset = sizeof(jbd2_journal_revoke_header_t);
max = be32_to_cpu(header->r_count);
+ if (max > jsb->s_blocksize) {
+ fprintf(out_file, "Revoke block's r_count invalid: %u\b",
+ max);
+ max = jsb->s_blocksize;
+ }
while (offset < max) {
if (tag_size == sizeof(__u32)) {