From fdbefde869cdc2442aabc377e852292058934bd7 Mon Sep 17 00:00:00 2001 From: Eric Date: Mon, 6 Sep 2021 19:49:24 +0200 Subject: [PATCH] fix mgcp_conn_free_all It calls itself recursively which messes with the list an ep, so ubsan complains. Change-Id: If38ead0ba0c28396df2332990c98b2532cf17d1c --- src/libosmo-mgcp/mgcp_conn.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/libosmo-mgcp/mgcp_conn.c b/src/libosmo-mgcp/mgcp_conn.c index 4acf18cf9..4f6e1a229 100644 --- a/src/libosmo-mgcp/mgcp_conn.c +++ b/src/libosmo-mgcp/mgcp_conn.c @@ -328,12 +328,10 @@ void mgcp_conn_free_oldest(struct mgcp_endpoint *endp) void mgcp_conn_free_all(struct mgcp_endpoint *endp) { struct mgcp_conn *conn; - struct mgcp_conn *conn_tmp; - /* Drop all items in the list */ - llist_for_each_entry_safe(conn, conn_tmp, &endp->conns, entry) { + /* Drop all items in the list, might be consecutive! */ + while ((conn = llist_first_entry_or_null(&endp->conns, struct mgcp_conn, entry))) mgcp_conn_free(endp, conn->id); - } return; }