laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-e1d/+/35609?usp=email )
Change subject: Prevent memory leaks / double free of msgb in proto_clnt.c ......................................................................
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(-)
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
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);