[Python] [ANN] secimport
Manlio Perillo
manlio.perillo a gmail.com
Mar 16 Nov 2010 15:49:34 CET
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Il 16/11/2010 14:41, Marco Giusti ha scritto:
> On Tue, Nov 16, 2010 at 01:45:16PM +0100, Manlio Perillo wrote:
> [...]
>>> prima di tutto il modulo stesso deve essere importato e prima di essere
>>> importato non c'? nessun controllo sul modulo stesso, ergo basta
>>> modificare il modulo `secimport`.
>>
>> Infatti per maggiore sicurezza l'hook pu� essere implementato in C.
>> Si parlava infatti del caso in cui una applicazione vuole embedare
>> l'interprete Python.
>
> avevo capito ma comunque il modulo � stato scritto in python, non in C.
>
Da valutare comunque se si puņ fare qualcosa anche con il modulo scritto
in Python.
>>> quando fai il controllo del file `__init__.py` si deve controllare anche
>>> i relativi `.pyc` e `.pyo`, infatti basta modificare a piacere il file
>>> `__init__.py`, copiare il bytecode nella giusta posizione, il file
>>> `__init__.py` rimane quello originale ma viene modificato l'mtime.
>>> `secimport` controlla il file `__init__.py` ma l'importer python
>>> caricher? il bytecode modificato.
>>
>> Questo � un punto su cui non sono sicuro.
>> Innanzitutto, comunque, secimport *non* controlla __init__.py ma il
>> modulo __init__.
>> fp, pathname, descr = imp.find_module('__init__', [self.pathname])
>
> linea 78 in load_module, viene verificato il checksum del file
> `__init__.py`.
>
Hai ragione.
Mi sono letto l'implementazione di find_module e load_module, e:
* find_module cerca *prima* se esiste il corrispondente source module
* load_module -> load_source_module controlla se esiste il modulo
precompilato
Invece io stavo incorrettamente assumendo che find_module mi restituisse
direttamente il tipo di modulo corretto.
Quindi si, il codice va corretto; grazie.
> [...]
Ciao Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAkzimf4ACgkQscQJ24LbaUTzdQCfXWeLjWe6e+tqn9Lah09+dazn
RbwAn0JFaTcR3iVqZuNyNaQiWxdn+RN/
=Ul/9
-----END PGP SIGNATURE-----
Maggiori informazioni sulla lista
Python