From: Dan Nicholson Date: Fri, 17 Nov 2017 17:06:32 +0000 (+0000) Subject: lib/repo: Don't delete new tmpdir if it can't be locked X-Git-Tag: archive/raspbian/2022.1-3+rpi1~1^2~4^2~29^2~17 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=162edf71ed672f92ae9c63ace6e75b0c94ab0357;p=ostree.git lib/repo: Don't delete new tmpdir if it can't be locked If a newly allocated tmpdir can't be locked, set initialized to FALSE so that glnx_tmpdir_cleanup doesn't delete it when new_tmpdir goes out of scope. Closes: #1346 Approved by: cgwalters --- diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index 768c9ce7..6e342125 100644 --- a/src/libostree/ostree-repo.c +++ b/src/libostree/ostree-repo.c @@ -5004,7 +5004,16 @@ _ostree_repo_allocate_tmpdir (int tmpdir_dfd, error)) return FALSE; if (!did_lock) - continue; + { + /* We raced and someone else already locked the newly created + * directory. Free the resources here and then mark it as + * uninitialized so glnx_tmpdir_cleanup doesn't delete the directory + * when new_tmpdir goes out of scope. + */ + glnx_tmpdir_unset (&new_tmpdir); + new_tmpdir.initialized = FALSE; + continue; + } g_debug ("Using new tmpdir %s", new_tmpdir.path); ret_tmpdir = new_tmpdir; /* Transfer ownership */