aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-12-28 22:26:34 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2011-01-06 14:52:52 +0100
commitc02b12086c365ed473e034b3363f1cf4ce5226c1 (patch)
tree71a8427fd8fdd16282ae8623782653008e4c62fa /openbsc/src
parentfc857414ae7daff1d97e80142b0c4400d83e9442 (diff)
subscr: Fix subscr leaks in the KI code.
Diffstat (limited to 'openbsc/src')
-rw-r--r--openbsc/src/vty_interface_layer3.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/openbsc/src/vty_interface_layer3.c b/openbsc/src/vty_interface_layer3.c
index e04d9f57d..844ad3fc1 100644
--- a/openbsc/src/vty_interface_layer3.c
+++ b/openbsc/src/vty_interface_layer3.c
@@ -540,18 +540,23 @@ DEFUN(ena_subscr_a3a8,
minlen = maxlen = A38_COMP128_KEY_LEN;
} else {
/* Unknown method */
+ subscr_put(subscr);
return CMD_WARNING;
}
if (ki_str) {
rc = hexparse(ki_str, ainfo.a3a8_ki, sizeof(ainfo.a3a8_ki));
- if ((rc > maxlen) || (rc < minlen))
+ if ((rc > maxlen) || (rc < minlen)) {
+ subscr_put(subscr);
return CMD_WARNING;
+ }
ainfo.a3a8_ki_len = rc;
} else {
ainfo.a3a8_ki_len = 0;
- if (minlen)
+ if (minlen) {
+ subscr_put(subscr);
return CMD_WARNING;
+ }
}
rc = db_sync_authinfo_for_subscr(
@@ -560,6 +565,7 @@ DEFUN(ena_subscr_a3a8,
/* the last tuple probably invalid with the new auth settings */
db_sync_lastauthtuple_for_subscr(NULL, subscr);
+ subscr_put(subscr);
return rc ? CMD_WARNING : CMD_SUCCESS;
}