Author: Philip Jenvey <[email protected]>
Branch: stdlib-2.7.4
Changeset: r66175:7595a86ea213
Date: 2013-08-16 16:14 -0700
http://bitbucket.org/pypy/pypy/changeset/7595a86ea213/

Log:    followup 1922d4a83a50: check underflow too

diff --git a/pypy/module/select/interp_select.py 
b/pypy/module/select/interp_select.py
--- a/pypy/module/select/interp_select.py
+++ b/pypy/module/select/interp_select.py
@@ -22,9 +22,10 @@
 
     @unwrap_spec(events=int)
     def register(self, space, w_fd, events=defaultevents):
-        if events > 32767:
-            msg = "signed short integer is greater than maximum"
-            raise OperationError(space.w_OverflowError, space.wrap(msg))
+        if not -32767 - 1 <= events <= 32767:
+            m = ("signed short integer is " +
+                 "greater than maximum" if events > 0 else "less than minimum")
+            raise OperationError(space.w_OverflowError, space.wrap(m))
         fd = space.c_filedescriptor_w(w_fd)
         self.fddict[fd] = events
 
@@ -58,7 +59,7 @@
                 raise OperationError(space.w_ValueError,
                                      space.wrap("math range error"))
 
-        if timeout > 2147483647:
+        if not -2147483647 - 1 <= timeout <= 2147483647:
             msg = "Python int too large to convert to C int"
             raise OperationError(space.w_OverflowError, space.wrap(msg))
 
diff --git a/pypy/module/select/test/test_select.py 
b/pypy/module/select/test/test_select.py
--- a/pypy/module/select/test/test_select.py
+++ b/pypy/module/select/test/test_select.py
@@ -223,8 +223,10 @@
 
         pollster = select.poll()
         raises(OverflowError, pollster.register, 0, 32768) # SHRT_MAX + 1
+        raises(OverflowError, pollster.register, 0, -32768 - 1)
         raises(OverflowError, pollster.register, 0, 65535) # USHRT_MAX + 1
         raises(OverflowError, pollster.poll, 2147483648) # INT_MAX +  1
+        raises(OverflowError, pollster.poll, -2147483648 - 1)
         raises(OverflowError, pollster.poll, 4294967296) # UINT_MAX + 1
 
 
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to