[PATCH 3/4] lib: Fix potential memleak in rdrbuff

  • From: Dimitri Staessens <dimitri.staessens@xxxxxxxx>
  • To: ouroboros@xxxxxxxxxxxxx
  • Date: Fri, 25 May 2018 18:10:19 +0200

The rdrb struct should be freed when destroying the rdrbuff, even when
the actual shared memory is not unlinked.

Signed-off-by: Dimitri Staessens <dimitri.staessens@xxxxxxxx>
---
 src/lib/shm_rdrbuff.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/lib/shm_rdrbuff.c b/src/lib/shm_rdrbuff.c
index 12e29be..bbad361 100644
--- a/src/lib/shm_rdrbuff.c
+++ b/src/lib/shm_rdrbuff.c
@@ -148,8 +148,10 @@ void shm_rdrbuff_destroy(struct shm_rdrbuff * rdrb)
 
         assert(rdrb);
 
-        if (getpid() != *rdrb->pid && kill(*rdrb->pid, 0) == 0)
+        if (getpid() != *rdrb->pid && kill(*rdrb->pid, 0) == 0) {
+                free(rdrb);
                 return;
+        }
 
         shm_rdrbuff_close(rdrb);
 
@@ -275,7 +277,7 @@ struct shm_rdrbuff * shm_rdrbuff_create()
  fail_mattr:
         shm_rdrbuff_destroy(rdrb);
  fail_rdrb:
-         return NULL;
+        return NULL;
 }
 
 struct shm_rdrbuff * shm_rdrbuff_open()
-- 
2.17.0


Other related posts:

  • » [PATCH 3/4] lib: Fix potential memleak in rdrbuff - Dimitri Staessens