laforge submitted this change.
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.