[FIX] race condition in session directory creation

try to create the directory and handle the possible exception instead of doing
an unsafe 2 step check and creation. 

The issues related to the naming of the directory mentionned in the bug report
are not handled.

lp bug: https://launchpad.net/bugs/1157102 fixed

bzr revid: alexandre.fayolle@camptocamp.com-20130319102008-omtaka8dtq9v7m1l
This commit is contained in:
Alexandre Fayolle 2013-03-19 11:20:08 +01:00
parent a6a8d71a0e
commit 30073a2e8f
1 changed files with 9 additions and 1 deletions

View File

@ -20,6 +20,7 @@ import traceback
import urlparse
import uuid
import xmlrpclib
import errno
import babel.core
import simplejson
@ -477,8 +478,15 @@ def session_path():
except Exception:
username = "unknown"
path = os.path.join(tempfile.gettempdir(), "oe-sessions-" + username)
if not os.path.exists(path):
try:
os.mkdir(path, 0700)
except OSError as exc:
if exc.errno == errno.EEXIST:
# directory exists: ensure it has the correct permissions
# this will fail if the directory is not owned by the current user
os.chmod(path, 0700)
else:
raise
return path
class Root(object):