On Tuesday 01 July 2008 11:23:48 [EMAIL PROTECTED] wrote: > Modified: > branches/pdd25cx/src/ops/core.ops > > Log: > [pdd25cx] Add range checking to 'local_return' opcode, to require it be > within the current code segment. > > > Modified: branches/pdd25cx/src/ops/core.ops > =========================================================================== >=== --- branches/pdd25cx/src/ops/core.ops (original) > +++ branches/pdd25cx/src/ops/core.ops Tue Jul 1 11:23:47 2008 > @@ -270,6 +270,12 @@ > return_addr = VTABLE_pop_integer(interp, $1); > next = INTVAL2PTR(opcode_t *, return_addr); > > + /* The return address must be within the current code segment. */ > + if (! ( next >= interp->code->base.data > + && next < (interp->code->base.data + interp->code->base.size))
This looks like a good place to invert the conditional: if (next < interp->code->base.data || next >= (interp->code->base.data + interp->code->base.size)) -- c