Skip to content

Commit 10e0151

Browse files
authored
Merge pull request #15295 from hifoolno/bug5
lwiperf: fix double-free of pcb on error
2 parents 54e8693 + fe13765 commit 10e0151

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

connectivity/lwipstack/lwip/src/apps/lwiperf/lwip_lwiperf.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ lwiperf_tcp_close(lwiperf_state_tcp_t *conn, enum lwiperf_report_type report_typ
263263
/* don't want to wait for free memory here... */
264264
tcp_abort(conn->conn_pcb);
265265
}
266-
} else {
266+
} else if (conn->server_pcb != NULL) {
267267
/* no conn pcb, this is the listener pcb */
268268
err = tcp_close(conn->server_pcb);
269269
LWIP_ASSERT("error", err == ERR_OK);
@@ -565,6 +565,11 @@ lwiperf_tcp_err(void *arg, err_t err)
565565
{
566566
lwiperf_state_tcp_t *conn = (lwiperf_state_tcp_t *)arg;
567567
LWIP_UNUSED_ARG(err);
568+
569+
/* pcb is already deallocated, prevent double-free */
570+
conn->conn_pcb = NULL;
571+
conn->server_pcb = NULL;
572+
568573
lwiperf_tcp_close(conn, LWIPERF_TCP_ABORTED_REMOTE);
569574
}
570575

0 commit comments

Comments
 (0)