summaryrefslogtreecommitdiffstats
path: root/hal/voice_extn
diff options
context:
space:
mode:
authorKrishnankutty Kolathappilly <kkolat@codeaurora.org>2014-01-31 18:12:13 -0800
committerKrishnankutty Kolathappilly <kkolat@codeaurora.org>2014-02-03 15:19:05 -0800
commit061a9499e2db3372d1b2e5520e237786decee357 (patch)
tree41935e52391366cd3890dd31b3aa81ad78cb7975 /hal/voice_extn
parent870ee8a27fa6795e5a42b3fce617b15db3d20a57 (diff)
downloadandroid_hardware_qcom_audio-061a9499e2db3372d1b2e5520e237786decee357.tar.gz
android_hardware_qcom_audio-061a9499e2db3372d1b2e5520e237786decee357.tar.bz2
android_hardware_qcom_audio-061a9499e2db3372d1b2e5520e237786decee357.zip
hal: Fix memory leak in HAL debug logs
String returned from str_parms_to_str for set/get parameter in debug logs is not de-allocated. Fix is to make sure the memory allocated for set parameter key value pair is de-allocated. CRs-Fixed: 610079 Change-Id: I5027d8f1741c9e7223e7b4721f8d5473404998d3
Diffstat (limited to 'hal/voice_extn')
-rw-r--r--hal/voice_extn/compress_voip.c9
-rw-r--r--hal/voice_extn/voice_extn.c13
2 files changed, 16 insertions, 6 deletions
diff --git a/hal/voice_extn/compress_voip.c b/hal/voice_extn/compress_voip.c
index 5c87c9c5..4db46f6d 100644
--- a/hal/voice_extn/compress_voip.c
+++ b/hal/voice_extn/compress_voip.c
@@ -411,8 +411,9 @@ int voice_extn_compress_voip_set_parameters(struct audio_device *adev,
int ret = 0, err, rate;
int min_rate, max_rate;
bool flag;
+ char *kv_pairs = str_parms_to_str(parms);
- ALOGV("%s: enter: %s", __func__, str_parms_to_str(parms));
+ ALOGV_IF(kv_pairs != NULL, "%s: enter: %s", __func__, kv_pairs);
err = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_VOIP_RATE,
value, sizeof(value));
@@ -453,6 +454,7 @@ int voice_extn_compress_voip_set_parameters(struct audio_device *adev,
done:
ALOGV("%s: exit", __func__);
+ free(kv_pairs);
return ret;
}
@@ -499,6 +501,7 @@ void voice_extn_compress_voip_in_get_parameters(struct stream_in *in,
{
int ret, val;
char value[32]={0};
+ char *kv_pairs = NULL;
ALOGV("%s: enter", __func__);
@@ -511,7 +514,9 @@ void voice_extn_compress_voip_in_get_parameters(struct stream_in *in,
str_parms_add_int(reply, AUDIO_PARAMETER_KEY_VOIP_CHECK, false);
}
- ALOGD("%s: exit: return - %s", __func__, str_parms_to_str(reply));
+ kv_pairs = str_parms_to_str(reply);
+ ALOGD_IF(kv_pairs != NULL, "%s: exit: return - %s", __func__, kv_pairs);
+ free(kv_pairs);
}
int voice_extn_compress_voip_out_get_buffer_size(struct stream_out *out)
diff --git a/hal/voice_extn/voice_extn.c b/hal/voice_extn/voice_extn.c
index b8bc2df4..5612e0c4 100644
--- a/hal/voice_extn/voice_extn.c
+++ b/hal/voice_extn/voice_extn.c
@@ -427,8 +427,9 @@ int voice_extn_set_parameters(struct audio_device *adev,
char *str;
int value;
int ret = 0, err;
+ char *kv_pairs = str_parms_to_str(parms);
- ALOGV("%s: enter: %s", __func__, str_parms_to_str(parms));
+ ALOGV_IF(kv_pairs != NULL, "%s: enter: %s", __func__, kv_pairs);
err = str_parms_get_int(parms, AUDIO_PARAMETER_KEY_VSID, &value);
if (err >= 0) {
@@ -458,6 +459,7 @@ int voice_extn_set_parameters(struct audio_device *adev,
done:
ALOGV("%s: exit with code(%d)", __func__, ret);
+ free(kv_pairs);
return ret;
}
@@ -485,9 +487,10 @@ void voice_extn_get_parameters(const struct audio_device *adev,
{
int ret;
char value[VOICE_EXTN_PARAMETER_VALUE_MAX_LEN] = {0};
- char *str = NULL;
+ char *str = str_parms_to_str(query);
- ALOGV("%s: enter %s", __func__, str_parms_to_str(query));
+ ALOGV_IF(str != NULL, "%s: enter %s", __func__, str);
+ free(str);
ret = str_parms_get_str(query, AUDIO_PARAMETER_KEY_AUDIO_MODE, value,
sizeof(value));
@@ -507,7 +510,9 @@ void voice_extn_get_parameters(const struct audio_device *adev,
}
voice_extn_compress_voip_get_parameters(adev, query, reply);
- ALOGV("%s: exit: returns \"%s\"", __func__, str_parms_to_str(reply));
+ str = str_parms_to_str(reply);
+ ALOGV_IF(str != NULL, "%s: exit: returns \"%s\"", __func__, str);
+ free(str);
}
void voice_extn_out_get_parameters(struct stream_out *out,