diff options
| -rw-r--r-- | audio/headset.c | 15 | ||||
| -rw-r--r-- | 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 <stdlib.h>  #include <stdio.h>  #include <stdint.h> -#include <string.h>  #include <glib.h>  #include <dbus/dbus.h>  #include <gdbus.h> @@ -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); | 
