diff -r 49ae53150ee0 Lib/test/test_socket.py --- a/Lib/test/test_socket.py Mon Jan 13 23:56:30 2014 -0500 +++ b/Lib/test/test_socket.py Tue Jan 14 13:12:49 2014 +0800 @@ -4691,6 +4691,13 @@ def _testRecvFromIntoSmallBuffer(self): self.serv_conn.send(MSG*2048) + def testRecvFromIntoEmptyBuffer(self): + buf = bytearray() + self.assertRaises(ValueError, self.cli_conn.recvfrom_into, buf, 1024) + + _testRecvFromIntoEmptyBuffer = _testRecvFromIntoArray + TIPC_STYPE = 2000 TIPC_LOWER = 200 diff -r 49ae53150ee0 Modules/socketmodule.c --- a/Modules/socketmodule.c Mon Jan 13 23:56:30 2014 -0500 +++ b/Modules/socketmodule.c Tue Jan 14 13:12:49 2014 +0800 @@ -2864,7 +2864,7 @@ return NULL; buf = pbuf.buf; buflen = pbuf.len; - assert(buf != 0 && buflen > 0); + assert(buf != 0); if (recvlen < 0) { PyBuffer_Release(&pbuf); @@ -2872,6 +2872,12 @@ "negative buffersize in recvfrom_into"); return NULL; } + if (buflen == 0) { + PyBuffer_Release(&pbuf); + PyErr_SetString(PyExc_ValueError, + "the length of the buffer must be greater than 0"); + return NULL; + } if (recvlen == 0) { /* If nbytes was not specified, use the buffer's length */ recvlen = buflen;