Holger Hans Peter Freyther wrote:
On Sun, Jul 07, 2013 at 09:07:32PM +0200, Andreas Eversberg wrote:
lapdm.c takes the re-establishment message and forwards it to
lapd_core.c, so we can assume that msg is set. i case there is data
in the re-establishment msg, it is moved into send_buffer. in case
of no data it must be freed. (currently i don't know why
resume/re-establishment requires content in SABM message.)
okay, please send your final patch for this issue to the mailinglist
for review.
here it is. thanx for reviewing it.
>From b01e586a312e2296058747f81fddbc478ff56f09 Mon Sep 17 00:00:00 2001
From: Andreas Eversberg <[email protected]>
Date: Tue, 9 Jul 2013 20:25:24 +0200
Subject: [PATCH] LAPD: Free resume/re-establishment msgb if it carries no content
lapdm.c takes the re-establishment message and forwards it to lapd_core.c,
so we can assume that msgb is set at primitive. In case there is data in
the re-establishment msg, it is moved into send_buffer. In case of no
data (0 length), it must be freed.
---
src/gsm/lapd_core.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/gsm/lapd_core.c b/src/gsm/lapd_core.c
index 68b5e78..08143ed 100644
--- a/src/gsm/lapd_core.c
+++ b/src/gsm/lapd_core.c
@@ -1962,11 +1962,13 @@ static int lapd_res_req(struct osmo_dlsap_prim *dp, struct lapd_msg_ctx *lctx)
if (dl->send_buffer)
msgb_free(dl->send_buffer);
dl->send_out = 0;
- if (msg && msg->len)
+ if (msg->len) {
/* Write data into the send buffer, to be sent first */
dl->send_buffer = msg;
- else
+ } else {
+ msgb_free(msg);
dl->send_buffer = NULL;
+ }
/* Discard partly received L3 message */
if (dl->rcv_buffer) {
--
1.7.3.4