Module: xenomai-forge
Branch: master
Commit: b55c7d7c4985a85fbfa1a23e6042fac96a0da830
URL:    
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=b55c7d7c4985a85fbfa1a23e6042fac96a0da830

Author: Philippe Gerum <r...@xenomai.org>
Date:   Mon Nov  7 13:10:30 2011 +0100

alchemy/queue: fix buffer leakage on unmatched broadcast write

---

 lib/alchemy/queue.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/lib/alchemy/queue.c b/lib/alchemy/queue.c
index 64e19ae..8bad9fe 100644
--- a/lib/alchemy/queue.c
+++ b/lib/alchemy/queue.c
@@ -312,6 +312,7 @@ int rt_queue_write(RT_QUEUE *queue,
                   const void *buf, size_t size, int mode)
 {
        void *_buf;
+       int ret;
 
        _buf = rt_queue_alloc(queue, size);
        if (_buf == NULL)
@@ -320,7 +321,10 @@ int rt_queue_write(RT_QUEUE *queue,
        if (size > 0)
                memcpy(_buf, buf, size);
 
-       return rt_queue_send(queue, _buf, size, mode);
+       ret = rt_queue_send(queue, _buf, size, mode);
+       if (ret == 0 && (mode & Q_BROADCAST))
+               /* Nobody received, free the temp buffer. */
+               rt_queue_free(queue, _buf);
 }
 
 ssize_t rt_queue_receive_until(RT_QUEUE *queue,


_______________________________________________
Xenomai-git mailing list
Xenomai-git@gna.org
https://mail.gna.org/listinfo/xenomai-git

Reply via email to