From 45f3e96776041ef102ffa965c864210f848f2341 Mon Sep 17 00:00:00 2001 From: "aleksei.voronin" <aleksei.voronin@demlabs.net> Date: Fri, 31 Jul 2020 16:22:42 +0300 Subject: [PATCH] [*] possible fix for cdb (both packet corruption and behavior on case of corrupted packet --- dap-sdk/net/core/dap_events.c | 2 +- dap-sdk/net/stream/stream/dap_stream.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dap-sdk/net/core/dap_events.c b/dap-sdk/net/core/dap_events.c index b591f081a8..45a366318c 100644 --- a/dap-sdk/net/core/dap_events.c +++ b/dap-sdk/net/core/dap_events.c @@ -421,7 +421,7 @@ static void *thread_worker_function(void *arg) pthread_mutex_lock(&cur->write_hold); cur->buf_out_size -= total_sent; if (cur->buf_out_size) { - memcpy(cur->buf_out, &cur->buf_out[total_sent], cur->buf_out_size); + memmove(cur->buf_out, &cur->buf_out[total_sent], cur->buf_out_size); } else { cur->flags &= ~DAP_SOCK_READY_TO_WRITE; } diff --git a/dap-sdk/net/stream/stream/dap_stream.c b/dap-sdk/net/stream/stream/dap_stream.c index d244dbafba..a5eef987c5 100644 --- a/dap-sdk/net/stream/stream/dap_stream.c +++ b/dap-sdk/net/stream/stream/dap_stream.c @@ -771,8 +771,10 @@ void stream_proc_pkt_in(dap_stream_t * a_stream) { dap_stream_ch_pkt_t * l_ch_pkt = (dap_stream_ch_pkt_t *) a_stream->pkt_cache; - if(dap_stream_pkt_read(a_stream,l_pkt, l_ch_pkt, STREAM_BUF_SIZE_MAX)==0){ + if(dap_stream_pkt_read(a_stream,l_pkt, l_ch_pkt, sizeof(a_stream->pkt_cache))==0){ log_it(L_WARNING, "Input: can't decode packet size=%d",l_pkt_size); + DAP_DELETE(l_pkt); + return; } _detect_loose_packet(a_stream); -- GitLab