Skip to content

Commit

Permalink
complain when nbytes > buflen to fix possible buffer overflow (closes #…
Browse files Browse the repository at this point in the history
  • Loading branch information
benjaminp committed Jan 14, 2014
1 parent aec3065 commit 28cf368
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 0 deletions.
10 changes: 10 additions & 0 deletions Lib/test/test_socket.py
Original file line number Diff line number Diff line change
Expand Up @@ -1620,6 +1620,16 @@ def testRecvFromIntoMemoryview(self):

_testRecvFromIntoMemoryview = _testRecvFromIntoArray

def testRecvFromIntoSmallBuffer(self):
# See issue #20246.
buf = bytearray(8)
self.assertRaises(ValueError, self.cli_conn.recvfrom_into, buf, 1024)

def _testRecvFromIntoSmallBuffer(self):
with test_support.check_py3k_warnings():
buf = buffer(MSG*2048)
self.serv_conn.send(buf)


TIPC_STYPE = 2000
TIPC_LOWER = 200
Expand Down
1 change: 1 addition & 0 deletions Misc/ACKS
Original file line number Diff line number Diff line change
Expand Up @@ -979,6 +979,7 @@ Eric V. Smith
Christopher Smith
Gregory P. Smith
Roy Smith
Ryan Smith-Roberts
Rafal Smotrzyk
Dirk Soede
Paul Sokolovsky
Expand Down
2 changes: 2 additions & 0 deletions Misc/NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ Core and Builtins
Library
-------

- Issue #20246: Fix buffer overflow in socket.recvfrom_into.

- Issue #19082: Working SimpleXMLRPCServer and xmlrpclib examples, both in
modules and documentation.

Expand Down
4 changes: 4 additions & 0 deletions Modules/socketmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -2742,6 +2742,10 @@ sock_recvfrom_into(PySocketSockObject *s, PyObject *args, PyObject* kwds)
if (recvlen == 0) {
/* If nbytes was not specified, use the buffer's length */
recvlen = buflen;
} else if (recvlen > buflen) {
PyErr_SetString(PyExc_ValueError,
"nbytes is greater than the length of the buffer");
goto error;
}

readlen = sock_recvfrom_guts(s, buf.buf, recvlen, flags, &addr);
Expand Down

0 comments on commit 28cf368

Please sign in to comment.