From 350947b190aeda54ca002e88c87373f2d43e6244 Mon Sep 17 00:00:00 2001 From: senduo <645958643@qq.com> Date: Fri, 26 Jul 2019 18:33:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9at=5Fsocket.c=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=AD=E7=9A=84sendto=E5=87=BD=E6=95=B0=EF=BC=8Clen?= =?UTF-8?q?=E5=B1=80=E9=83=A8=E5=8F=98=E9=87=8F=E6=B2=A1=E6=9C=89=E7=BB=99?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit len值如果不给初始值0,到最后__exit的时候,result = len会导致result的值变成一个不可预估的值,进而导致mbedtls库的while循环无法正常结束,其中mebedtls中发生异常的地方在ssl_tls.c文件中的mbedtls_ssl_flush_output函数while( ssl->out_left > 0 ),因为out_left 是一个无符号整型,退出的条件只能是 out_left = 0,又因为这里面的len没有给初始值0,返回出来的值是一个很大的整型数字,导致了mbedtls中的死循环 --- components/net/at/at_socket/at_socket.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/net/at/at_socket/at_socket.c b/components/net/at/at_socket/at_socket.c index 804443fe32..72ff9a7aa3 100644 --- a/components/net/at/at_socket/at_socket.c +++ b/components/net/at/at_socket/at_socket.c @@ -856,7 +856,7 @@ int at_recv(int s, void *mem, size_t len, int flags) int at_sendto(int socket, const void *data, size_t size, int flags, const struct sockaddr *to, socklen_t tolen) { struct at_socket *sock = RT_NULL; - int len, result = 0; + int len = 0, result = 0; if (data == RT_NULL || size == 0) {