From ea5499f8b35ac414fa6a1a1506ae808d3910709b Mon Sep 17 00:00:00 2001 From: belliash Date: Thu, 9 May 2019 13:53:22 +0200 Subject: [PATCH] Private methods should not be accessible from child class. --- engine/vm.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/engine/vm.c b/engine/vm.c index 96e9415..c1d2e81 100644 --- a/engine/vm.c +++ b/engine/vm.c @@ -4175,6 +4175,10 @@ static sxi32 VmByteCodeExec( &pClass->sName, &sName ); } else { + if(pNos->iFlags & MEMOBJ_PARENTOBJ && pMeth->iProtection == PH7_CLASS_PROT_PRIVATE) { + PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, + "Access to the class method '%z->%z()' is forbidden", &pClass->sName, &sName); + } /* Push method name on the stack */ PH7_MemObjRelease(pTos); SyBlobAppend(&pTos->sBlob, SyStringData(&pMeth->sVmName), SyStringLength(&pMeth->sVmName));