libmsc/db.c: warn user about SMS text truncation

In general, neither TP-User-Data nor decoded text should be
truncated. If the SMSC's database for some reason does contain
such weird messages, let's at least let the user know about it.

Change-Id: I75e852ebe44ba4784572cbffa029e13f0d3c430c
diff --git a/src/libmsc/db.c b/src/libmsc/db.c
index a12889b..705af61 100644
--- a/src/libmsc/db.c
+++ b/src/libmsc/db.c
@@ -229,6 +229,7 @@
 {
 	const unsigned char *user_data;
 	unsigned int user_data_len;
+	unsigned int text_len;
 	const char *text;
 
 	/* Retrieve TP-UDL (User-Data-Length) in octets (regardless of DCS) */
@@ -247,6 +248,15 @@
 		memcpy(sms->user_data, user_data, user_data_len);
 	}
 
+	/* Retrieve the text length (excluding '\0') */
+	text_len = dbi_result_get_field_length(result, "text");
+	if (text_len >= sizeof(sms->text)) {
+		LOGP(DDB, LOGL_ERROR,
+		     "SMS text length %u is too big, truncating to %zu\n",
+		     text_len, sizeof(sms->text) - 1);
+		/* OSMO_STRLCPY_ARRAY() does truncation for us */
+	}
+
 	/* Retrieve the text parsed from TP-UD (User-Data) */
 	text = dbi_result_get_string(result, "text");
 	if (text)