HFP spec only covers ATD behaviour for vocecalls.
If a string starts with '8' or '#' this is a USSD code
Reject a request like that.
---
drivers/hfpmodem/voicecall.c | 37 ++++++++++++++++++++++++++++++++++++-
1 file changed, 36 insertions(+), 1 deletion(-)
diff --git a/drivers/hfpmodem/voicecall.c b/drivers/hfpmodem/voicecall.c
index
f1e9096940328f05415cf5a6f3bed9ceaf447fe3..1b34f76646fc78b835960959b047e4a2d3a739fd
100644
--- a/drivers/hfpmodem/voicecall.c
+++ b/drivers/hfpmodem/voicecall.c
@@ -695,6 +695,40 @@ error:
CALLBACK_WITH_FAILURE(cb, data);
}
+static ofono_bool_t hfp_valid_number_format(const char *number)
+{
+ int len = strlen(number);
+ int begin = 0;
+ int i;
+
+ if (!len)
+ return FALSE;
+
+ if (number[0] == '+')
+ begin = 1;
+
+ if (number[0] == '*' || number[0] == '#')
+ return FALSE;
+
+ if (begin == len)
+ return FALSE;
+
+ if ((len - begin) > OFONO_MAX_PHONE_NUMBER_LENGTH)
+ return FALSE;
+
+ for (i = begin; i < len; i++) {
+ if (number[i] >= '0' && number[i] <= '9')
+ continue;
+
+ if (number[i] == '*' || number[i] == '#')
+ continue;
+
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
static void no_carrier_notify(GAtResult *result, gpointer user_data)
{
DBG("");
@@ -1252,7 +1286,8 @@ static struct ofono_voicecall_driver driver = {
.transfer = hfp_transfer,
.deflect = NULL,
.swap_without_accept = NULL,
- .send_tones = hfp_send_dtmf
+ .send_tones = hfp_send_dtmf,
+ .validate_dial = hfp_valid_number_format
};
void hfp_voicecall_init(void)
--
1.7.11.7
Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Prof. Dr. Hermann Eul
Chairperson of the Supervisory Board: Tiffany Doon Silva
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono