From 1c9f509cdaf0233ae4848c05c8bcd0de98bde89a Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Mon, 11 Aug 2025 06:26:54 +0200 Subject: ipcpd: Fix readdir() not initializing ptr Some IPCP (sub)components returned successfully with 0 entries but did not initialize the buf ptr when the RIB has no entries, causing a SEGV on free() in the RIB. Signed-off-by: Dimitri Staessens Signed-off-by: Sander Vrijders --- src/ipcpd/unicast/routing/link-state.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/ipcpd/unicast/routing/link-state.c') diff --git a/src/ipcpd/unicast/routing/link-state.c b/src/ipcpd/unicast/routing/link-state.c index 31b5a112..8021fc7d 100644 --- a/src/ipcpd/unicast/routing/link-state.c +++ b/src/ipcpd/unicast/routing/link-state.c @@ -262,12 +262,15 @@ static int lsdb_rib_readdir(char *** buf) char entry[RIB_PATH_LEN + 1]; ssize_t idx = 0; - assert(buf); + assert(buf != NULL); pthread_rwlock_rdlock(&ls.db_lock); - if (ls.db_len + ls.nbs_len == 0) + if (ls.db_len + ls.nbs_len == 0) { + *buf = NULL; goto no_entries; + } + *buf = malloc(sizeof(**buf) * (ls.db_len + ls.nbs_len)); if (*buf == NULL) -- cgit v1.2.3