[gull] changer LD_LIBRARY_PATH en cours d'execution
Marc SCHAEFER
schaefer at alphanet.ch
Fri Oct 24 19:31:02 CEST 2003
On Fri, Oct 24, 2003 at 05:18:25PM +0000, Vuko Brigljevic wrote:
> d'execution en cherchant la librairie dans le sentier definit
> dynamiquement, soit en "pseudo-code":
>
> libName = getLibNameFromRequest();
> loadPath = getLoadPathFromRequest();
>
> /* chercher la librairie dans le sentier defini */
> fullLibPath = searchLibInPath(libName,loadPath);
>
> dlopen(fullLibPath);
en validant loadPath et libName pour des problèmes de sécurité, et en
destant le code de retour de dlopen(), d'accord.
> Ce serait tout a fait faisable, et probablement
> pas si difficile a ecrire, mais je ne peux pas me
> permettre de le faire dans mon cas, notamment car
> je ne peux modifier la partie du code ou se trouve
> reellement l'appel a dlopen:
Très dommage.
Si le code est *compilable*, alors faire en sorte que cette partie de
code soit compilée avec gcc -Ddlopen(x)=mon_dlopen(x) et écrire
cette fonction-wrapper.
Si le code n'est pas compilable, alors il reste une possibilité:
redéfinir la fonction de bibliothèque dlopen() via un LD_PRELOAD
en une nouvelle fonction qui fait ce qui est nécessaire puis appelle
dlopen(). Cela fonctionnera même si le code est propriétaire -- à ma
connaissance.
On a donné ici même un tel exemple (qui redéfinit le wrapper libc de
open):
http://search.alphanet.ch/cgi-bin/search.cgi?max_results=10&type=long&msgid=Pine.LNX.4.10.10002191148200.25891-100000%40vulcan.alphanet.ch&domain=ml-gull
le code:
http://www.uwsg.indiana.edu/hypermail/linux/kernel/9811.2/0639.html
Pas testé en dehors de la libc, mais ça devrait marcher.
> Si j'ai mal compris ou se trouvait la contradiction,
> je demande pardon pour la generation de bruit inutile ;)
Ce qui manquait c'était l'information essentielle: `ce code est
propriétaire / closed source', ce qui semble maintenant être
le cas: ça complique les choses de ne pas avoir la source.
More information about the gull
mailing list