summaryrefslogtreecommitdiff
path: root/doc/patchqueue/lib-fixup.mdwn
blob: 479f3a5a2440bea549b6875fadb41575f8a24716 (plain)

I'm using Ikiwiki on a box where I don't have root access, so I install all of my Perl modules in ~/lib. The ikiwiki.in script is ran in Taint mode, which means that it ignores the contents of $ENV{PERL5LIB}. The result is that the current versions of the pre-requisite modules I've installed in ~/lib are ignored by ./make, which uses the outdated, and therefore incompatible versions, from the system-wide @INC... ;-)

I imagine that there's a clean and elegant solution to this, but the hack I'm currently using is to have ./make alter ikiwki.in before it's run, by inserting use lib ... lines for each of the directories in $ENV{PERL5LIB}. Again, this is clearly ugly, but it allows me to run ./make, so I'm submitting it FWIW.

I don't like this patch because it's not expected that an environment variable will stick around outside the shell that it's set in. It could lead to suprising behavior if PERL5LIB happened to be set during build, and it's even possible for it to lead to security issues, imagine if I accidentially built the debian package of ikiwiki with PERL5LIB set -- then it would be hardcoded to look in /home/joey for libraries, which someone with a "joey" account elsewhere could use to exploit it.

You could remove the taint switch locally, it's very unlikely to find tainting problems that nobody else has noticed. --[[Joey]]