diff options
-rw-r--r-- | src/gsmtap_util.c | 6 | ||||
-rw-r--r-- | src/logging_gsmtap.c | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/gsmtap_util.c b/src/gsmtap_util.c index 962782b5..b21c690b 100644 --- a/src/gsmtap_util.c +++ b/src/gsmtap_util.c @@ -303,6 +303,7 @@ int gsmtap_send_ex(struct gsmtap_inst *gti, uint8_t type, uint16_t arfcn, uint8_ unsigned int len) { struct msgb *msg; + int rc; if (!gti) return -ENODEV; @@ -312,7 +313,10 @@ int gsmtap_send_ex(struct gsmtap_inst *gti, uint8_t type, uint16_t arfcn, uint8_ if (!msg) return -ENOMEM; - return gsmtap_sendmsg(gti, msg); + rc = gsmtap_sendmsg(gti, msg); + if (rc) + msgb_free(msg); + return rc; } /*! send a message from L1/L2 through GSMTAP. diff --git a/src/logging_gsmtap.c b/src/logging_gsmtap.c index cb379b07..c53a0abe 100644 --- a/src/logging_gsmtap.c +++ b/src/logging_gsmtap.c @@ -103,7 +103,9 @@ static void _gsmtap_raw_output(struct log_target *target, int subsys, return; msgb_put(msg, rc); - gsmtap_sendmsg(target->tgt_gsmtap.gsmtap_inst, msg); + rc = gsmtap_sendmsg(target->tgt_gsmtap.gsmtap_inst, msg); + if (rc) + msgb_free(msg); } /*! Create a new logging target for GSMTAP logging |