Author: Ronan Lamy <[email protected]>
Branch: follow_symlinks
Changeset: r83687:a60a494657a8
Date: 2016-04-15 16:42 +0100
http://bitbucket.org/pypy/pypy/changeset/a60a494657a8/
Log: Corner case: don't crash if path == -1
diff --git a/pypy/module/posix/interp_posix.py
b/pypy/module/posix/interp_posix.py
--- a/pypy/module/posix/interp_posix.py
+++ b/pypy/module/posix/interp_posix.py
@@ -178,13 +178,17 @@
@specialize.arg(2)
def unwrap_fd(space, w_value, allowed_types='integer'):
try:
- return space.c_int_w(w_value)
+ result = space.c_int_w(w_value)
except OperationError as e:
if not e.match(space, space.w_OverflowError):
raise oefmt(space.w_TypeError,
"argument should be %s, not %T", allowed_types, w_value)
else:
raise
+ if result == -1:
+ # -1 is used as sentinel value for not a fd
+ raise oefmt(space.w_ValueError, "invalid file descriptor: -1")
+ return result
def _unwrap_dirfd(space, w_value):
if space.is_none(w_value):
diff --git a/pypy/module/posix/test/test_posix2.py
b/pypy/module/posix/test/test_posix2.py
--- a/pypy/module/posix/test/test_posix2.py
+++ b/pypy/module/posix/test/test_posix2.py
@@ -193,6 +193,7 @@
assert "can't specify None" in str(excinfo.value)
excinfo = raises(TypeError, self.posix.stat, 2.)
assert "should be string, bytes or integer, not float" in
str(excinfo.value)
+ raises(ValueError, self.posix.stat, -1)
if hasattr(__import__(os.name), "statvfs"):
def test_statvfs(self):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit