On 5/26/20 10:16 AM, Alec Warner wrote:
> On Tue, May 26, 2020 at 9:46 AM Zac Medico <zmed...@gentoo.org
> <mailto:zmed...@gentoo.org>> wrote:
> 
>     On 5/26/20 1:43 AM, Alec Warner wrote:
>     > On Mon, May 25, 2020 at 9:34 PM Zac Medico <zmed...@gentoo.org
>     <mailto:zmed...@gentoo.org>
>     > <mailto:zmed...@gentoo.org <mailto:zmed...@gentoo.org>>> wrote:
>     >
>     >     Since variables like A and AA can contain extremely large
>     values which
>     >     may trigger E2BIG errors during attempts to execute
>     subprocesses, delay
>     >     export until the last moment, and unexport when appropriate.
>     >
>     >
>     > So I think if you want to do this because PMS says:
>     >  AA should not be visible in EAPI > 3.
>     >  A should only be visible in src_*, pkg_nofetch.
>     >
>     > That part of the patch makes sense to me. The part that is
>     confusing to
>     > me is the 'delay' part; can you explain that further? When you say
>     > "delay until the last moment" what do you mean by that and what
>     value is
>     > it delivering?
> 
>     If we export an environment variable which contains an extremely large
>     value, then there's a vulnerability in execve which causes it to fail
>     with an E2BIG error. Since A and AA values can easily grow large enough
>     to trigger this vulnerability, portage can protect itself from execve
>     failures by delaying the export until the moment that it hands control
>     to the ebuild phase.
> 
> 
>     > Is it simply that we don't export these variables on the python side,
>     > and we only use them in the shell portion?
> 
>     That's correct. Here's a test case which demonstrates the E2BIG error,
>     and shows that 'export -n A' can suppress it:
> 
> 
> I've run similar tests, but I'm less excited by this work around. I
> think its reasonable to work toward eventually not exporting A and AA
> (the latter already done in EAPIs > 3). Then when ebuilds encounter
> problems, we can tell authors "Upgrade to EAPI X" (where X is >3 or >=8;
> in the potential case of A.) Having a hard limit on A for EAPIs 0-7 and
> a hard limit on AA for EAPIs 0-3 seems perfectly fine and we should
> expect authors to refactor (as texlive did) in order to meet the
> existing API limitations.
> 
> Basically unless there are more practical use cases today, the delaying
> of export seems like a feature no one will use and added complexity. I
> dunno how large the go-mod use cases are yet; but I myself have not seen
> any with this many deps.
> 
> -A


I'm in no rush to merge this patch. I wanted to create it as a proof of
concept, so that we'd be prepared for a future EAPI where the size of A
is practically unlimited. We only have to adjust the ___eapi_exports_A
function to have a working EAPI extension.
-- 
Thanks,
Zac

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to