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
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 @@
 		"(%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);