[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Implementing a simple sandbox -- another quirk
 
- From: Max Ischenko <max@...>
 
- Date: Mon, 23 Jun 2003 12:37:14 +0300
 
> I've came up with this:
> function sandbox(env, f, ...)
> 	local g = getfenv(f)
> 	setfenv(f, env)
> 	local retval = f(unpack(arg))
> 	setfenv(f, g)
> 	return retval
> end
While using this sandbox implementation I encounter a problem.
function xxx()
	SandBox['DATE'] = 1
	DATE = 1
	SandBox['Date'] = Date
	local outcome = sandbox(SandBox, f)
	return outcome
Function f, called by xxx, refers to global variable DATE.
The problem is that SandBox.DATEE is not used (and __index is not
called) when f is evaluated so I have to assign to global DATEE before
calling f. 
Why is this and how it could be cured? Is it because a DATEE become an
upvalue? Should I change DATEE references into getdate() fun. call to
prevent this?
-- 
Regards, max.