[pyar] Peligrosidad de un lambda

david weil tenuki en gmail.com
Vie Oct 8 20:03:47 ART 2010


2010/10/8 Claudio Freire <klaussfreire en gmail.com>:
>
>
> 2010/10/7 Hystrix <ego en hystrix.com.ar>
>>
>> 2010/10/7 Claudio Freire <klaussfreire en gmail.com>:
>> > La pregunta original, leela, estaba libre de contexto. Como los parsers.
>>
>> Agrego un poco de contexto porque aunque la discusion se volvio
>> interesante, sigo con la duda original.
>> La intencion era permitir que el usuario pudiera tener una funcion
>> programable, es decir, que pueda definir la formula que se usa para
>> calcular el resultado de una operacion.
>> Esto surge de una simulacion muy basica que saque de un libro:
>> Hay un club con 100 miembros, cada uno de una casta (0-9), estos
>> miembros se juntan de a pares, se aplica una formula que recibe como
>> entrada las castas de cada uno y el resultado es la casta nueva del
>> primero del par. La idea era poder modificar la formula que calcula la
>> casta nueva sin tener que editar el codigo del programa.
>> Por eso se me ocurrio, muy ingenuamente, usar codigo metido en un
>> lambda. Obviamente eso no sirve, no al menos como me hubiera gustado.
>> Entonces, se puede darle al usuario una forma de modificar cierta
>> parte del programa sin exponerse a cosas obvias?
>
> Depende de cuánta funcionalidad necesites en esas fórmulas.
>
> Si sólo necesitás lógica básica, podrías utilizar compile() con un poco de
> análisis de bytecode.
> ¿cómo?
>
> Bueno, la única forma que se me ocurre de hacer algo peligroso es con el
> opcode LOAD_GLOBAL, IMPORT_X, EXEC, etc...
>
> Validar que una función no ejecute esos bytecodes es relativamente sencillo
> (buscando el opcode, que es un único byte, en f.func_code.co_code).

Si, pero en el bytecode puede ser que el nro. de indice de algun
argumento, matchee el nro. del bytecode me imagino..

igualmente, tambien se podria decirle a python, parseame esto y busca,
especificamente ese byte entre los opcodes si, en lugar de sobre todo
el bytecode...

-- 
 There is no dark side of the moon really. Matter of fact it's all dark.



More information about the pyar mailing list