dc: fix off by one in stack overflow check (thanks BurnZeZ)
BurnZeZ → Found a bug in dc(1) BurnZeZ → Everything breaks when you fill the stack BurnZeZ → You have stkptr which crap expects to point to an available member in Blk *stack[STKSZ]; BurnZeZ → stkend = &stack[STKSZ]; BurnZeZ → stkptr is allowed to equal stkend BurnZeZ → So crap that expects stkptr to be pointing to an available Blk ends up dereferencing past the end of the array BurnZeZ → term% echo `{seq 1 100} f | dc BurnZeZ → dc 628283: suicide: sys: trap: fault read addr=0xffffe0000040a618 pc=0x204b1c
This commit is contained in:
parent
6cd83e5d24
commit
da5c0bada7
1 changed files with 1 additions and 1 deletions
|
@ -1218,7 +1218,7 @@ init(int argc, char *argv[])
|
||||||
strptr = salloc(0);
|
strptr = salloc(0);
|
||||||
divxyz = salloc(0);
|
divxyz = salloc(0);
|
||||||
stkbeg = stkptr = &stack[0];
|
stkbeg = stkptr = &stack[0];
|
||||||
stkend = &stack[STKSZ];
|
stkend = &stack[STKSZ-1];
|
||||||
stkerr = 0;
|
stkerr = 0;
|
||||||
readptr = &readstk[0];
|
readptr = &readstk[0];
|
||||||
k=0;
|
k=0;
|
||||||
|
|
Loading…
Reference in a new issue