aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmsc/db.c
diff options
context:
space:
mode:
authorVadim Yanitskiy <axilirator@gmail.com>2019-04-02 18:25:08 +0700
committerlaforge <laforge@gnumonks.org>2019-06-06 19:45:20 +0000
commit0d13e8358e376de77610293926d286aa34b9e571 (patch)
treec782ded583c2e00736a1cb3683618e66c0b7f3d7 /src/libmsc/db.c
parentea24bb50cc42df3a702015f806d64da385da79fe (diff)
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
Diffstat (limited to 'src/libmsc/db.c')
-rw-r--r--src/libmsc/db.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libmsc/db.c b/src/libmsc/db.c
index a12889baf..705af6195 100644
--- a/src/libmsc/db.c
+++ b/src/libmsc/db.c
@@ -229,6 +229,7 @@ static void parse_tp_ud_from_result(struct gsm_sms *sms, dbi_result result)
{
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 @@ static void parse_tp_ud_from_result(struct gsm_sms *sms, dbi_result result)
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)