• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1From d1f9ccd5da1712477f30bf2662e8888395ed95cd Mon Sep 17 00:00:00 2001
2From: wuchangsheng <wuchangsheng2@huawei.com>
3Date: Wed, 21 Jul 2021 20:01:47 +0800
4Subject: [PATCH] fix stack-buffer-overflow in lwip_sock_make_addr and
5 lwip_getaddrname
6
7---
8 src/api/sockets.c | 4 ++++
9 1 file changed, 4 insertions(+)
10
11diff --git a/src/api/sockets.c b/src/api/sockets.c
12index e640945..7ce9378 100644
13--- a/src/api/sockets.c
14+++ b/src/api/sockets.c
15@@ -1319,6 +1319,8 @@ lwip_sock_make_addr(struct netconn *conn, ip_addr_t *fromaddr, u16_t port,
16   } else if (*fromlen > saddr.sa.sa_len) {
17     *fromlen = saddr.sa.sa_len;
18   }
19+#else
20+  *fromlen = LWIP_MIN(*fromlen, sizeof(saddr));
21 #endif
22   MEMCPY(from, &saddr, *fromlen);
23   return truncated;
24@@ -3133,6 +3135,8 @@ lwip_getaddrname(int s, struct sockaddr *name, socklen_t *namelen, u8_t local)
25   if (*namelen > saddr.sa.sa_len) {
26     *namelen = saddr.sa.sa_len;
27   }
28+#else
29+  *namelen = LWIP_MIN(*namelen, sizeof(saddr));
30 #endif
31   MEMCPY(name, &saddr, *namelen);
32
33--
342.23.0
35
36