diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-09-14 13:12:02 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-09-14 13:12:02 +0200 |
commit | 6284737249aca9d65d721c746bb2b3750a677ebe (patch) | |
tree | 451d78fd246f32d2dbebb3f9640fbfdaf6e1946c | |
parent | d5e57dd8eb98d89f68d2e651271d54949c910b31 (diff) |
sms: don't allow more than 255 parts
-rw-r--r-- | src/mm-sms.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/mm-sms.c b/src/mm-sms.c index 76cc74e5..b0f9a11a 100644 --- a/src/mm-sms.c +++ b/src/mm-sms.c @@ -123,6 +123,24 @@ generate_submit_pdus (MMSms *self, g_assert (split_text != NULL || split_data != NULL); g_assert (!(split_text != NULL && split_data != NULL)); + if (n_parts > 255) { + if (split_text) + g_strfreev (split_text); + else if (split_data) { + guint i = 0; + + while (split_data[i]) + g_byte_array_unref (split_data[i++]); + g_free (split_data); + } + + g_set_error (error, + MM_CORE_ERROR, + MM_CORE_ERROR_TOO_MANY, + "Cannot generate PDUs: Text or Data too long"); + return FALSE; + } + /* Loop text/data chunks */ i = 0; while (1) { |