laforge submitted this change.

View Change


Approvals: Jenkins Builder: Verified tnt: Looks good to me, approved laforge: Looks good to me, approved pespin: Looks good to me, but someone else must approve
Prevent memory leaks / double free of msgb in proto_clnt.c

Change-Id: Ic0c4c06ba7c1a405ec3c73100fe9e8476f4f5512
---
M src/proto_clnt.c
1 file changed, 24 insertions(+), 3 deletions(-)

diff --git a/src/proto_clnt.c b/src/proto_clnt.c
index 854b958..cfa9ca2 100644
--- a/src/proto_clnt.c
+++ b/src/proto_clnt.c
@@ -190,10 +190,13 @@
}

rc = osmo_e1dp_send(&clnt->ctl_fd, msgb, -1);
- if (rc < 0)
+ if (rc < 0) {
+ msgb_free(msgb);
return rc;
+ }

msgb_free(msgb);
+ msgb = NULL;

/* Response */
int flags = fcntl(clnt->ctl_fd.fd, F_GETFL, 0);
@@ -386,8 +389,10 @@
if (rc)
return rc;

- if (msgb_l2len(msgb) != sizeof(struct osmo_e1dp_line_info))
+ if (msgb_l2len(msgb) != sizeof(struct osmo_e1dp_line_info)) {
+ msgb_free(msgb);
return -EPIPE;
+ }

msgb_free(msgb);

@@ -417,6 +422,11 @@
if (rc)
return rc;

+ if (msgb_l2len(msgb) != 0) {
+ msgb_free(msgb);
+ return -EPIPE;
+ }
+
msgb_free(msgb);

return 0;
@@ -449,8 +459,10 @@
if (rc)
return rc;

- if ((tsfd < 0) || (msgb_l2len(msgb) != sizeof(struct osmo_e1dp_ts_info)))
+ if ((tsfd < 0) || (msgb_l2len(msgb) != sizeof(struct osmo_e1dp_ts_info))) {
+ msgb_free(msgb);
return -EPIPE;
+ }

msgb_free(msgb);


To view, visit change 35609. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-e1d
Gerrit-Branch: master
Gerrit-Change-Id: Ic0c4c06ba7c1a405ec3c73100fe9e8476f4f5512
Gerrit-Change-Number: 35609
Gerrit-PatchSet: 3
Gerrit-Owner: jolly <andreas@eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>
Gerrit-Reviewer: tnt <tnt@246tNt.com>
Gerrit-MessageType: merged