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