From bbdc740388bfcb2b51906f80ef105e00741602df Mon Sep 17 00:00:00 2001 From: belliash Date: Thu, 20 Dec 2018 19:37:03 +0100 Subject: [PATCH] Finally, do not allow a string variables to act as callback. --- engine/vm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/engine/vm.c b/engine/vm.c index faa53ef..f133c36 100644 --- a/engine/vm.c +++ b/engine/vm.c @@ -4843,8 +4843,11 @@ static sxi32 VmByteCodeExec( ph7_value *pArg = &pTos[-pInstr->iP1]; SyHashEntry *pEntry; SyString sName; + VmInstr *bInstr = &aInstr[pc - 1]; /* Extract function name */ - if((pTos->iFlags & (MEMOBJ_CALL | MEMOBJ_STRING)) == 0) { + if(pTos->iFlags & MEMOBJ_STRING && bInstr->iOp == PH7_OP_LOAD) { + PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Calling a non-callable object"); + } else if((pTos->iFlags & (MEMOBJ_CALL | MEMOBJ_STRING)) == 0) { if(pTos->iFlags & MEMOBJ_HASHMAP) { ph7_value sResult; SySetReset(&aArg);