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
This commit is contained in:
Holger Hans Peter Freyther 2016-04-01 20:31:11 +02:00
parent 2826df56b2
commit adb86759da
1 changed files with 4 additions and 1 deletions

View File

@ -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);