Re: 2.6.12-rc1-mm3 (cannot read cd-rom, 2.6.12-rc1 is OK)

Jason Munro
2005-03-25T22:44:53Z

On 4:23:36 pm 03/25/05 Andrew Morton <akpm@osdl.org> wrote:
> Andrew Morton <akpm@osdl.org> wrote:
> >
> > It's the new rock-ridge bounds checking.
>
> Try this, please?
>
> 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 Fri Mar 25 14:21:32 2005
> +++ 25-akpm/fs/isofs/rock.c Fri Mar 25 14:22:01 2005
> @@ -218,12 +218,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'):
> @@ -316,12 +316,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 */
> @@ -694,12 +694,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'):
> _

This fixes it here.

\__ Jason Munro
\__ jason@stdbev.com
\__ http://hastymail.sourceforge.net/