summaryrefslogtreecommitdiff
path: root/src/lib/frct.c
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2022-02-15 20:23:49 +0100
committerSander Vrijders <sander@ouroboros.rocks>2022-02-17 08:28:49 +0100
commit6d87e29bef2d2cd3c40e49b9120fae5148030381 (patch)
tree73cdabd7e5439af9e44c14851fd6e6d492650f70 /src/lib/frct.c
parent80f6513802c56480582c8b5baa2168b9e5268aaa (diff)
downloadouroboros-6d87e29bef2d2cd3c40e49b9120fae5148030381.tar.gz
ouroboros-6d87e29bef2d2cd3c40e49b9120fae5148030381.zip
ipcpd: Fix free in fail path of readdir
The free of the buffer in the failure path of the readdir RIB functions was taking the wrong pointer in a couple of places. The FRCT RIB readdir was missing error handling for malloc and strdup. Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks> Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/lib/frct.c')
-rw-r--r--src/lib/frct.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/lib/frct.c b/src/lib/frct.c
index a1e792af..ff938aec 100644
--- a/src/lib/frct.c
+++ b/src/lib/frct.c
@@ -156,10 +156,19 @@ static int frct_rib_read(const char * path,
static int frct_rib_readdir(char *** buf)
{
*buf = malloc(sizeof(**buf));
+ if (*buf == NULL)
+ goto fail_malloc;
(*buf)[0] = strdup("frct");
+ if ((*buf)[0] == NULL)
+ goto fail_strdup;
return 1;
+
+ fail_strdup:
+ free(*buf);
+ fail_malloc:
+ return -ENOMEM;
}
static int frct_rib_getattr(const char * path,