Signed-off-by: Andrew Morton --- fs/isofs/rock.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) diff -puN fs/isofs/rock.c~rock-handle-directory-overflows-fix fs/isofs/rock.c --- 25/fs/isofs/rock.c~rock-handle-directory-overflows-fix 2005-04-26 01:24:36.625620328 -0700 +++ 25-akpm/fs/isofs/rock.c 2005-04-26 01:24:36.628619872 -0700 @@ -212,12 +212,12 @@ repeat: if (rr->len < 3) goto out; /* Something got screwed up here */ sig = isonum_721(rs.chr); + if (rock_check_overflow(&rs, sig)) + goto eio; rs.chr += rr->len; rs.len -= rr->len; if (rs.len < 0) goto eio; /* corrupted isofs */ - if (rock_check_overflow(&rs, sig)) - goto eio; switch (sig) { case SIG('R', 'R'): @@ -310,12 +310,12 @@ repeat: if (rr->len < 3) goto out; /* Something got screwed up here */ sig = isonum_721(rs.chr); + if (rock_check_overflow(&rs, sig)) + goto eio; rs.chr += rr->len; rs.len -= rr->len; if (rs.len < 0) goto eio; /* corrupted isofs */ - if (rock_check_overflow(&rs, sig)) - goto eio; switch (sig) { #ifndef CONFIG_ZISOFS /* No flag for SF or ZF */ @@ -688,12 +688,12 @@ repeat: if (rr->len < 3) goto out; /* Something got screwed up here */ sig = isonum_721(rs.chr); + if (rock_check_overflow(&rs, sig)) + goto out; rs.chr += rr->len; rs.len -= rr->len; if (rs.len < 0) goto out; /* corrupted isofs */ - if (rock_check_overflow(&rs, sig)) - goto out; switch (sig) { case SIG('R', 'R'): _