From fd603ed9e2f87d05b2261a25e11aceb01814dfbe Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sat, 28 Mar 2015 18:09:31 +0100 Subject: write_queue: Check the result of osmo_wqueue_enqueue and free The write_queue is designed to have a maximum amount of pending messages and will refuse to take new messages when it has been reached. The caller can decide if it wants to flush the queue and add the message again, create a log. But in all cases the ownership of the msgb has not been transferred. Fix the potential memory leak in the failure situation. --- openbsc/src/libmsc/meas_feed.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'openbsc/src/libmsc/meas_feed.c') diff --git a/openbsc/src/libmsc/meas_feed.c b/openbsc/src/libmsc/meas_feed.c index 86ba3b712..86d679abf 100644 --- a/openbsc/src/libmsc/meas_feed.c +++ b/openbsc/src/libmsc/meas_feed.c @@ -61,7 +61,8 @@ static int process_meas_rep(struct gsm_meas_rep *mr) memcpy(&mfm->mr, mr, sizeof(mfm->mr)); /* and send it to the socket */ - osmo_wqueue_enqueue(&g_mfs.wqueue, msg); + if (osmo_wqueue_enqueue(&g_mfs.wqueue, msg) != 0) + msgb_free(msg); return 0; } -- cgit v1.2.3