From 2db2d39af8cba3883756d21a0634722f37bdfef0 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Wed, 8 Oct 2008 12:15:09 +0200 Subject: Reject non-voice calls in headset.c Basicly reverts the previous commit since data calls just don't make sense with HFP. Check for proper voice call dial string and pass the number without the terminating semicolon to the telephony driver. --- audio/headset.c | 15 ++++++++++++++- audio/telephony-dummy.c | 16 ++-------------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/audio/headset.c b/audio/headset.c index 31955490..a4fe84fe 100644 --- a/audio/headset.c +++ b/audio/headset.c @@ -785,7 +785,20 @@ int telephony_dial_number_rsp(void *telephony_device, cme_error_t err) static int dial_number(struct audio_device *device, const char *buf) { - telephony_dial_number_req(device, &buf[3]); + char number[BUF_SIZE]; + size_t buf_len; + + buf_len = strlen(buf); + + if (buf[buf_len - 1] != ';') { + debug("Rejecting non-voice call dial request"); + return -EINVAL; + } + + memset(number, 0, sizeof(number)); + strncpy(number, &buf[3], buf_len - 4); + + telephony_dial_number_req(device, number); return 0; } diff --git a/audio/telephony-dummy.c b/audio/telephony-dummy.c index 0e3c833b..976150f3 100644 --- a/audio/telephony-dummy.c +++ b/audio/telephony-dummy.c @@ -29,7 +29,6 @@ #include #include #include -#include #include #include #include @@ -133,21 +132,10 @@ void telephony_answer_call_req(void *telephony_device) void telephony_dial_number_req(void *telephony_device, const char *number) { - char last; - - last = number[strlen(number) - 1]; - g_free(active_call_number); + active_call_number = g_strdup(number); - if (last == ';') { - active_call_number = g_strndup(number, strlen(number) - 1); - debug("telephony-dummy: voice call dial request to %s", - active_call_number); - } else { - active_call_number = g_strdup(number); - debug("telephony-dummy: data call dial request to %s", - active_call_number); - } + debug("telephony-dummy: dial request to %s", active_call_number); telephony_dial_number_rsp(telephony_device, CME_ERROR_NONE); -- cgit