On 2010-12-21 10:56:00, arost wrote:
Show quoted text> Line 160 in Heavy.pm (version 0.12) is an open() statement in sub
> _dl_extract that requires write access.
Which - unfortunately - can't be helped for security reasons
(for the non-setuid usecase).
Archive::Unzip::Burst has probably done its job and extracted
Expat.so - but using its actual name (and path). However,
PAR::Heavy insists on looking for Expat.so first in the packed
executable (treated as a .par archive) and then extracts it
again using a mangled name.
Now, if one were to abandon the whole name mangling scheme...
Show quoted text> Or, as suggested before, maybe it's even better to
> make cache handling independent of the applications current effective
> user id. Which makes sense, since the cache handling (I think) is
> something that should be completely transparent to the application.
No, it doesn't make sense: the cache is per user (for a reason)
and YOU break transparency by "switching users" in midstream.
Sorry, but this not different from e.g. a script manipulating
@INC in nasty ways at runtime or invoking $^X.
Show quoted text> One last remark, maybe this is relevant: XML::SAX::Expat was added
> explicitly on the pp command line with
>
> -l "/usr/lib/libexpat.so" -M "XML::SAX::Expat"
No, that shouldn't make any difference. What matters is that
XML::SAX::Expat is loaded by your script at runtime (probably
required by XML::Simple or similar), instead of compile time
(i.e. via "use XML::SAX::Expat").
Show quoted text> So Steffen's workaround does not solve the cache ownership
> problem that exists when running pp'ed application via *sudo*.
Actually, it's not the use of sudo per se - it's your script
calling setuid at runtime.
Cheers, Roderich
Cheers, Roderich