summaryrefslogtreecommitdiff
path: root/src/ipcpd/ipcp.c
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2025-08-11 06:26:54 +0200
committerSander Vrijders <sander@ouroboros.rocks>2025-08-11 10:17:14 +0200
commit1c9f509cdaf0233ae4848c05c8bcd0de98bde89a (patch)
treea4dcbc671f7e76e04824c460b9a9649b1753abbe /src/ipcpd/ipcp.c
parent5c9328203b277fc36550ba06720dd13e5940121b (diff)
downloadouroboros-1c9f509cdaf0233ae4848c05c8bcd0de98bde89a.tar.gz
ouroboros-1c9f509cdaf0233ae4848c05c8bcd0de98bde89a.zip
ipcpd: Fix readdir() not initializing ptrbe
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 <dimitri@ouroboros.rocks> Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/ipcpd/ipcp.c')
-rw-r--r--src/ipcpd/ipcp.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/ipcpd/ipcp.c b/src/ipcpd/ipcp.c
index ab38f5d0..7fe3e7eb 100644
--- a/src/ipcpd/ipcp.c
+++ b/src/ipcpd/ipcp.c
@@ -251,8 +251,7 @@ static int ipcp_rib_readdir(char *** buf)
{
int i = 0;
- while (info[i] != NULL)
- i++;
+ while (info[i++] != NULL);
*buf = malloc(sizeof(**buf) * i);
if (*buf == NULL)
@@ -271,9 +270,8 @@ static int ipcp_rib_readdir(char *** buf)
fail_dup:
while (i-- > 0)
free((*buf)[i]);
- fail_entries:
free(*buf);
-
+ fail_entries:
return -ENOMEM;
}