Author: Stefano Rivera <[email protected]>
Branch:
Changeset: r73643:17fcf0cc640d
Date: 2014-09-21 23:54 -0700
http://bitbucket.org/pypy/pypy/changeset/17fcf0cc640d/
Log: Fix the sandbox
pypy now (since b97c7d6f7fd8) checks for executability, when
searching for its own executable on startup.
Abuse "kind" to maintain extra mode bits, so we can store the
executable state in our vfs.
diff --git a/pypy/sandbox/pypy_interact.py b/pypy/sandbox/pypy_interact.py
--- a/pypy/sandbox/pypy_interact.py
+++ b/pypy/sandbox/pypy_interact.py
@@ -55,7 +55,7 @@
return Dir({
'bin': Dir({
- 'pypy-c': RealFile(self.executable),
+ 'pypy-c': RealFile(self.executable, mode=0111),
'lib-python': RealDir(os.path.join(libroot, 'lib-python'),
exclude=exclude),
'lib_pypy': RealDir(os.path.join(libroot, 'lib_pypy'),
diff --git a/rpython/translator/sandbox/vfs.py
b/rpython/translator/sandbox/vfs.py
--- a/rpython/translator/sandbox/vfs.py
+++ b/rpython/translator/sandbox/vfs.py
@@ -22,7 +22,7 @@
st_size = self.getsize()
st_mode = self.kind
st_mode |= stat.S_IWUSR | stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH
- if self.kind == stat.S_IFDIR:
+ if stat.S_ISDIR(self.kind):
st_mode |= stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH
if self.read_only:
st_uid = 0 # read-only files are virtually owned by root
@@ -123,8 +123,9 @@
return cStringIO.StringIO(self.data)
class RealFile(File):
- def __init__(self, path):
+ def __init__(self, path, mode=0):
self.path = path
+ self.kind |= mode
def __repr__(self):
return '<RealFile %s>' % (self.path,)
def getsize(self):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit