2010-03-29 20:32:54

by Forrest Zhao

[permalink] [raw]
Subject: [PATCH] Check modem_obj_path is not NULL

This could prevent crash in case modem_obj_path is NULL.
---
audio/telephony-ofono.c | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/audio/telephony-ofono.c b/audio/telephony-ofono.c
index 45c3905..c145e87 100644
--- a/audio/telephony-ofono.c
+++ b/audio/telephony-ofono.c
@@ -281,6 +281,10 @@ void telephony_dial_number_req(void *telephony_device, const char *number)

debug("telephony-ofono: dial request to %s", number);

+ if (!modem_obj_path)
+ telephony_dial_number_rsp(telephony_device,
+ CME_ERROR_AG_FAILURE);
+
if (!strncmp(number, "*31#", 4)) {
number += 4;
clir = "enabled";
@@ -311,6 +315,10 @@ void telephony_transmit_dtmf_req(void *telephony_device, char tone)

debug("telephony-ofono: transmit dtmf: %c", tone);

+ if (!modem_obj_path)
+ telephony_transmit_dtmf_rsp(telephony_device,
+ CME_ERROR_AG_FAILURE);
+
tone_string = g_strdup_printf("%c", tone);
ret = send_method_call(OFONO_BUS_NAME, modem_obj_path,
OFONO_VCMANAGER_INTERFACE,
@@ -531,6 +539,9 @@ done:

static int get_registration_and_signal_status()
{
+ if (!modem_obj_path)
+ return -ENOENT;
+
return send_method_call(OFONO_BUS_NAME, modem_obj_path,
OFONO_NETWORKREG_INTERFACE,
"GetProperties", get_registration_reply,
--
1.6.1.3



2010-03-29 07:58:02

by Zhao Forrest

[permalink] [raw]
Subject: Re: [PATCH] Check modem_obj_path is not NULL

>> @@ -311,6 +315,10 @@ void telephony_transmit_dtmf_req(void *telephony_device, char tone)
>>
>> ? ? ? debug("telephony-ofono: transmit dtmf: %c", tone);
>>
>> + ? ? if (!modem_obj_path)
>> + ? ? ? ? ? ? telephony_transmit_dtmf_rsp(telephony_device,
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CME_ERROR_AG_FAILURE);
>> +
>> ? ? ? tone_string = g_strdup_printf("%c", tone);
>> ? ? ? ret = send_method_call(OFONO_BUS_NAME, modem_obj_path,
>
> This doesn't look right. You report an error but still proceed in the
> functions (which will later try to access modem_obj_path). I guess you
> should return from the functions in both of these if-clauses.
>
My bad. Will send out the updated patch ASAP.

2010-03-29 07:39:57

by Johan Hedberg

[permalink] [raw]
Subject: Re: [PATCH] Check modem_obj_path is not NULL

Hi Forrest,

On Mon, Mar 29, 2010, Forrest Zhao wrote:
> This could prevent crash in case modem_obj_path is NULL.
> ---
> audio/telephony-ofono.c | 11 +++++++++++
> 1 files changed, 11 insertions(+), 0 deletions(-)
>
> diff --git a/audio/telephony-ofono.c b/audio/telephony-ofono.c
> index 45c3905..c145e87 100644
> --- a/audio/telephony-ofono.c
> +++ b/audio/telephony-ofono.c
> @@ -281,6 +281,10 @@ void telephony_dial_number_req(void *telephony_device, const char *number)
>
> debug("telephony-ofono: dial request to %s", number);
>
> + if (!modem_obj_path)
> + telephony_dial_number_rsp(telephony_device,
> + CME_ERROR_AG_FAILURE);
> +
> if (!strncmp(number, "*31#", 4)) {
> number += 4;
> clir = "enabled";
> @@ -311,6 +315,10 @@ void telephony_transmit_dtmf_req(void *telephony_device, char tone)
>
> debug("telephony-ofono: transmit dtmf: %c", tone);
>
> + if (!modem_obj_path)
> + telephony_transmit_dtmf_rsp(telephony_device,
> + CME_ERROR_AG_FAILURE);
> +
> tone_string = g_strdup_printf("%c", tone);
> ret = send_method_call(OFONO_BUS_NAME, modem_obj_path,

This doesn't look right. You report an error but still proceed in the
functions (which will later try to access modem_obj_path). I guess you
should return from the functions in both of these if-clauses.

Johan