From 4eda451c033244e75972746a5d3b834833a37756 Mon Sep 17 00:00:00 2001 From: Rafael Ignacio Zurita Date: Tue, 25 Jan 2011 11:02:38 -0300 Subject: common: add function to validate long numbers Also, adapt voicecall to use the new function for outgoing calls. --- src/common.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/common.c') diff --git a/src/common.c b/src/common.c index 4d934888..8bf9dbba 100644 --- a/src/common.c +++ b/src/common.c @@ -234,7 +234,7 @@ struct error_entry ceer_errors[] = { { 127, "Interworking, unspecified" }, }; -gboolean valid_phone_number_format(const char *number) +gboolean valid_number_format(const char *number, int length) { int len = strlen(number); int begin = 0; @@ -246,7 +246,7 @@ gboolean valid_phone_number_format(const char *number) if (number[0] == '+') begin = 1; - if ((len - begin) > OFONO_MAX_PHONE_NUMBER_LENGTH) + if ((len - begin) > length) return FALSE; for (i = begin; i < len; i++) { @@ -262,6 +262,22 @@ gboolean valid_phone_number_format(const char *number) return TRUE; } +/* + * According to 3GPP TS 24.011 or 3GPP TS 31.102, some + * addresses (or numbers), like Service Centre address, + * Destination address, or EFADN (Abbreviated dialling numbers), + * are up 20 digits. + */ +gboolean valid_phone_number_format(const char *number) +{ + return valid_number_format(number, 20); +} + +gboolean valid_long_phone_number_format(const char *number) +{ + return valid_number_format(number, OFONO_MAX_PHONE_NUMBER_LENGTH); +} + gboolean valid_cdma_phone_number_format(const char *number) { int len = strlen(number); -- cgit v1.2.3