diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2016-04-01 20:31:11 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2016-04-06 21:21:24 +0200 |
commit | adb86759daa80a484eef4b5a24bc0ce0de0a0763 (patch) | |
tree | f60a1c04eb3114be6f85f5862e7e6ab374041e96 /openbsc/src/libmsc | |
parent | 2826df56b2af5a6a0f20e5a9bcf1d50a1130f0ba (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/libmsc')
-rw-r--r-- | openbsc/src/libmsc/db.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/openbsc/src/libmsc/db.c b/openbsc/src/libmsc/db.c index 17bea2470..267b5ef41 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); |