[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