From 1c0ba22c489828e9af76d9aa5c6cd94275c980ce Mon Sep 17 00:00:00 2001 From: belliash Date: Wed, 29 May 2019 19:05:34 +0200 Subject: [PATCH] Check access level for static methods call. --- engine/vm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/engine/vm.c b/engine/vm.c index 8e04c1f..4257924 100644 --- a/engine/vm.c +++ b/engine/vm.c @@ -4336,6 +4336,9 @@ static sxi32 VmByteCodeExec( } else if((pMeth->iFlags & PH7_CLASS_ATTR_STATIC) == 0) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Attempt to call statically a non-static method '%z::%z()'", &pClass->sName, &sName); + } else if(!VmClassMemberAccess(&(*pVm), pClass, pMeth->iProtection)) { + PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Method '%z::%z()' is inaccessible due to its protection level", + &pClass->sName, &sName); } else { /* Push method name on the stack */ PH7_MemObjRelease(pTos);