diff options
author | Dimitri Staessens <[email protected]> | 2018-05-25 18:10:19 +0200 |
---|---|---|
committer | Sander Vrijders <[email protected]> | 2018-05-27 15:25:58 +0200 |
commit | 0a80c263488bbc7b9419f8cba14f3adeedba0383 (patch) | |
tree | 73e687634db84b6dcece8a924be87ff4fd81d7e7 /src/lib/shm_rdrbuff.c | |
parent | 35b18cd6879e730f150dd2aacf761a00eeb4615f (diff) | |
download | ouroboros-0a80c263488bbc7b9419f8cba14f3adeedba0383.tar.gz ouroboros-0a80c263488bbc7b9419f8cba14f3adeedba0383.zip |
lib: Fix potential memleak in rdrbuff
The rdrb struct should be freed when destroying the rdrbuff, even when
the actual shared memory is not unlinked.
Signed-off-by: Dimitri Staessens <[email protected]>
Signed-off-by: Sander Vrijders <[email protected]>
Diffstat (limited to 'src/lib/shm_rdrbuff.c')
-rw-r--r-- | src/lib/shm_rdrbuff.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/lib/shm_rdrbuff.c b/src/lib/shm_rdrbuff.c index 12e29bef..bbad361a 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() |