aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-05-15 00:29:50 +0800
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-05-15 00:29:50 +0800
commit50818d0c20a94476477609d448158779f26b12cf (patch)
tree7e14fad3c6b47a5443421799dcca31846ecffd06 /openbsc
parent317934a2ba0b674044095c7054dc8f01ee4398b3 (diff)
[nat] Separate exit2/exit3 as this can not be shared...
We have tried to send a refuse for arbitary things and ended up with a segfault... separate the exi2 and exit3 label to have separate exits and cleanups.
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/src/nat/bsc_nat.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/openbsc/src/nat/bsc_nat.c b/openbsc/src/nat/bsc_nat.c
index ea6c82f91..9a88744f7 100644
--- a/openbsc/src/nat/bsc_nat.c
+++ b/openbsc/src/nat/bsc_nat.c
@@ -670,6 +670,11 @@ exit:
goto exit2;
}
+exit2:
+ talloc_free(parsed);
+ msgb_free(msg);
+ return -1;
+
exit3:
/* send a SCCP Connection Refused */
refuse = sccp_create_refuse(parsed->src_local_ref, SCCP_REFUSAL_SCCP_FAILURE);
@@ -677,7 +682,7 @@ exit3:
bsc_send_data(bsc, refuse->l2h, msgb_l2len(refuse), IPAC_PROTO_SCCP);
msgb_free(refuse);
}
-exit2:
+
talloc_free(parsed);
msgb_free(msg);
return -1;