lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

2015-03-13 7:41 GMT+02:00 Dirk Laurie <>:
> 2015-03-13 6:43 GMT+02:00 Paul K <>:
>> Hi Tim,
>>> The compiler clearly knows if it’s emitting a function with _ENV as the
>>> first upvalue, since it takes care to ensure it is always the first upvalue
>>> in the function. However, this information doesnt seem to make it into the
>>> compiled chunk anywhere (that I can see).
>> You may try to avoid this problem by serializing a special value instead of
>> _ENV. When you serialize the upvalues, you know if the first one points to
>> the _ENV for the given function, so just store a special table value for it,
>> so that when you deserialize it to setup proper value, you know that this
>> function expects _ENV as the first upvalue, so you can do whatever is
>> appropriate in this case.

Sorry for the empty message: GMail puts the "Hidden contents" and
"Send" buttons so close together that my uncertain aim hit the wrong

One can expand on Paul's idea with some simple cryptography.

local upvalue_marker = encrypt("This is my sign: X",private_key)

function paranoid(...)
    if encrypt(upvalue_marker,public_key)~="This is my sign: X")
    then return "You are not my mother!"