From 734f786e959fc536a41f304bbffe9fa9c269b874 Mon Sep 17 00:00:00 2001 From: jiangheng Date: Mon, 19 Jun 2023 15:51:50 +0800 Subject: [PATCH] fix null pointer of sock in udp_recvfrom --- src/lstack/api/lstack_wrap.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/lstack/api/lstack_wrap.c b/src/lstack/api/lstack_wrap.c index 096fcf7..6ee0512 100644 --- a/src/lstack/api/lstack_wrap.c +++ b/src/lstack/api/lstack_wrap.c @@ -552,7 +552,7 @@ static inline ssize_t udp_recvfrom(struct lwip_sock *sock, int32_t sockfd, void { int32_t ret; - do { + while (1) { ret = read_stack_data(sockfd, buf, len, flags, addr, addrlen); if (ret > 0) { return ret; @@ -561,9 +561,16 @@ static inline ssize_t udp_recvfrom(struct lwip_sock *sock, int32_t sockfd, void return -1; } sock = sock->listen_next; - sockfd = sock->conn->socket; - } while (sock != NULL); - GAZELLE_RETURN(EAGAIN); + if (sock != NULL && sock->conn != NULL) { + sockfd = sock->conn->socket; + } else { + if (sock == NULL) { + GAZELLE_RETURN(EAGAIN); + } else { + GAZELLE_RETURN(ENOTCONN); + } + } + } } static inline ssize_t tcp_recvfrom(struct lwip_sock *sock, int32_t sockfd, void *buf, size_t len, int32_t flags, -- 2.33.0