summaryrefslogtreecommitdiffstats
path: root/openbsc/src
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2016-04-01 20:31:11 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2016-04-06 21:21:24 +0200
commitadb86759daa80a484eef4b5a24bc0ce0de0a0763 (patch)
treef60a1c04eb3114be6f85f5862e7e6ab374041e96 /openbsc/src
parent2826df56b2af5a6a0f20e5a9bcf1d50a1130f0ba (diff)
db: If creating a subscriber in the db fails, return NULL
We should not return a subscriber in case it was not written to the database. Instead free the memory allocated and return NULL. Callers in gsm_04_08.c are prepared to have the creation fail. Related: OS Issue #1657
Diffstat (limited to 'openbsc/src')
-rw-r--r--openbsc/src/libmsc/db.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/openbsc/src/libmsc/db.c b/openbsc/src/libmsc/db.c
index 17bea24..267b5ef 100644
--- a/openbsc/src/libmsc/db.c
+++ b/openbsc/src/libmsc/db.c
@@ -523,8 +523,11 @@ struct gsm_subscriber *db_create_subscriber(const char *imsi)
"(%s, datetime('now'), datetime('now')) ",
imsi
);
- if (!result)
+ if (!result) {
LOGP(DDB, LOGL_ERROR, "Failed to create Subscriber by IMSI.\n");
+ subscr_put(subscr);
+ return NULL;
+ }
subscr->id = dbi_conn_sequence_last(conn, NULL);
strncpy(subscr->imsi, imsi, GSM_IMSI_LENGTH-1);
dbi_result_free(result);