From d1995e50ebda074f8151609bb4c95d4c31072513 Mon Sep 17 00:00:00 2001 From: Damien George Date: Sun, 30 Aug 2020 13:20:51 +1000 Subject: extmod/modlwip: Fix error return for TCP recv when not connected. This commit fixes the cases when a TCP socket is in STATE_NEW, STATE_LISTENING or STATE_CONNECTING and recv() is called on it. It now raises ENOTCONN instead of a random error code due to it previously indexing beyond the start of error_lookup_table[]. Signed-off-by: Damien George --- extmod/modlwip.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'extmod') diff --git a/extmod/modlwip.c b/extmod/modlwip.c index 216e81749..1d557a6a8 100644 --- a/extmod/modlwip.c +++ b/extmod/modlwip.c @@ -757,8 +757,11 @@ STATIC mp_uint_t lwip_tcp_receive(lwip_socket_obj_t *socket, byte *buf, mp_uint_ return 0; } } else if (socket->state != STATE_CONNECTED) { - assert(socket->state < 0); - *_errno = error_lookup_table[-socket->state]; + if (socket->state >= STATE_NEW) { + *_errno = MP_ENOTCONN; + } else { + *_errno = error_lookup_table[-socket->state]; + } return -1; } } -- cgit v1.2.3