commit:     5c33a020457308af1b9b3937c5a95aa5be2a888f
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 17 02:42:27 2019 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Tue Sep 17 02:52:44 2019 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=5c33a020

_lockfile_iteration: eliminate recursion and fd leak after chown failure

Fixes: 02922cb3a7eb ("lockfile: use loop instead of recursion")
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 lib/portage/locks.py | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/lib/portage/locks.py b/lib/portage/locks.py
index 609c8b2dc..72ac2fc70 100644
--- a/lib/portage/locks.py
+++ b/lib/portage/locks.py
@@ -194,10 +194,8 @@ def _lockfile_iteration(mypath, wantnewlockfile=False, 
unlinkfile=False,
                                                os.chown(lockfilename, -1, 
portage_gid)
                                except OSError as e:
                                        if e.errno in (errno.ENOENT, 
errno.ESTALE):
-                                               return lockfile(mypath,
-                                                       
wantnewlockfile=wantnewlockfile,
-                                                       unlinkfile=unlinkfile, 
waiting_msg=waiting_msg,
-                                                       flags=flags)
+                                               os.close(myfd)
+                                               return None
                                        else:
                                                writemsg("%s: chown('%s', -1, 
%d)\n" % \
                                                        (e, lockfilename, 
portage_gid), noiselevel=-1)

Reply via email to