diff options
author | Krishnankutty Kolathappilly <kkolat@codeaurora.org> | 2014-01-31 18:12:13 -0800 |
---|---|---|
committer | Krishnankutty Kolathappilly <kkolat@codeaurora.org> | 2014-02-03 15:19:05 -0800 |
commit | 061a9499e2db3372d1b2e5520e237786decee357 (patch) | |
tree | 41935e52391366cd3890dd31b3aa81ad78cb7975 /hal/voice_extn | |
parent | 870ee8a27fa6795e5a42b3fce617b15db3d20a57 (diff) | |
download | android_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.c | 9 | ||||
-rw-r--r-- | hal/voice_extn/voice_extn.c | 13 |
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, |