commit:     dc01d71c3612542e9796e34e91e78552e8724b89
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Mon Oct 27 04:40:18 2025 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Mon Oct 27 04:40:39 2025 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=dc01d71c

_drop_privs_userfetch: ensure cwd is accessible

The cwd needs to be accessible in order for the multiprocessing
spawn start method to succeed:

  File "/usr/lib/python3.14/multiprocessing/spawn.py", line 235, in prepare
    os.chdir(data['dir'])
    ~~~~~~~~^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: '/root'

Bug: https://bugs.gentoo.org/965138
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 lib/portage/package/ebuild/fetch.py | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/portage/package/ebuild/fetch.py 
b/lib/portage/package/ebuild/fetch.py
index 0ea5f57a92..bee2e10893 100644
--- a/lib/portage/package/ebuild/fetch.py
+++ b/lib/portage/package/ebuild/fetch.py
@@ -120,6 +120,10 @@ def _drop_privs_userfetch(settings):
     os.setuid(int(spawn_kwargs["uid"]))
     os.umask(spawn_kwargs["umask"])
     portage.data.secpass = 1
+    try:
+        os.chdir(settings.get("HOME", "/"))
+    except Exception:
+        os.chdir("/")
 
 
 def _spawn_fetch(settings, args, **kwargs):

Reply via email to