[q-lang-cvs] q/src qm.c,1.8,1.9
Brought to you by:
agraef
From: <ag...@pr...> - 2004-01-31 03:01:29
|
Update of /cvsroot/q-lang/q/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19080 Modified Files: qm.c Log Message: added range checks for stack level overflow Index: qm.c =================================================================== RCS file: /cvsroot/q-lang/q/src/qm.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** qm.c 29 Jan 2004 20:48:21 -0000 1.8 --- qm.c 29 Jan 2004 20:53:48 -0000 1.9 *************** *** 2446,2450 **** } else { /* user-defined rule */ ! if (!pushact(thr, fno, rp, rc, ip, xbp, modno, lineno)) return 0; else --- 2446,2454 ---- } else { /* user-defined rule */ ! if (abp+level+1 < 0) { ! /* integer range overflow -- bail out */ ! thr->qmstat = AST_OVF; ! return 0; ! } else if (!pushact(thr, fno, rp, rc, ip, xbp, modno, lineno)) return 0; else *************** *** 2686,2690 **** thr->stoplevel = 0; } ! thr->level++; res = eval_internal(thr, x); thr->level--; --- 2690,2698 ---- thr->stoplevel = 0; } ! if (++thr->level < 0) { ! /* integer range overflow -- bail out */ ! thr->qmstat = AST_OVF; ! return 0; ! } res = eval_internal(thr, x); thr->level--; |