Sun Feb 23 13:10:55 2014: Request 65703 was acted upon. Transaction: Correspondence added by Hugmeir Queue: Inline Subject: Build Problem - Inline::C fails at t/08taint.t Broken in: (no value) Severity: (no value) Owner: Nobody Requestors: alexander.haec...@web.de Status: open Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=65703 >
On Tue Feb 15 20:05:27 2011, alexander.haec...@web.de wrote: > The problem here as I see it ist the use of > (stat("/usr/bin"))[2] & 0022 > instead of > (stat("/usr/bin"))[2] & 0002 > , because you must be authorized to write into > the first case, but needn't be in the second. > If you exclude 0020 you could exclude 0200 for > the same reasons. > To me it would seem more consistent to use the -w, -W operators > to check for every directory in the path if it > is writable at all. Then you can omit the > (stat("/usr/bin"))[2] & 0??? test completely and just write: > > join ':', grep {not /^\./ and -d $_ and not -w $_ || -W $_ > } split /:/, $ENV{PATH}; This issue just bit me when smoking CPAN on Android. Unfortunately, the above solution doesn't work for me. tl;dr: Skipping the tests when $^O eq 'android' would probably be for the best, if that filter is going to stay. Android's an interesting case. It's basically a linux system that doesn't provide any toolchain whatsoever, so you either have to install one yourself (and to do that, you need to root your phone and probably create/mount an ext3/4 partition in your sdcard) or have an app install it for you. Either way, the toolchain ends up in a non-standard location with non-standard permissions, and to use it you need to tweak with it's permissions and/or be root. There's probably no ideal solution here, but either way my suggestion is to have the module skip t/08taint.t under Android, and then to have env_untaint actually check if an entry is already untainted (with Scalar::Util::tainted in perl>=5.8, and whatever the eval invocation in older perls is); if it is, trust it as-is, no need to filter anything. That way, if someone wants to use Inline on Android under taint, they can do it by manually untainting $ENV{PATH}, which they should've been doing on the first place :)