@@ -2752,7 +2752,7 @@ int Effect_command(effect_handle_t self,
2752
2752
2753
2753
switch (cmdCode){
2754
2754
case EFFECT_CMD_INIT:
2755
- if (pReplyData == NULL || *replySize != sizeof (int )){
2755
+ if (pReplyData == NULL || replySize == NULL || *replySize != sizeof (int )){
2756
2756
ALOGV (" \t LVM_ERROR, EFFECT_CMD_INIT: ERROR for effect type %d" ,
2757
2757
pContext->EffectType );
2758
2758
return -EINVAL;
@@ -2779,10 +2779,8 @@ int Effect_command(effect_handle_t self,
2779
2779
2780
2780
case EFFECT_CMD_SET_CONFIG:
2781
2781
// ALOGV("\tEffect_command cmdCode Case: EFFECT_CMD_SET_CONFIG start");
2782
- if (pCmdData == NULL ||
2783
- cmdSize != sizeof (effect_config_t )||
2784
- pReplyData == NULL ||
2785
- *replySize != sizeof (int )){
2782
+ if (pCmdData == NULL || cmdSize != sizeof (effect_config_t ) ||
2783
+ pReplyData == NULL || replySize == NULL || *replySize != sizeof (int )) {
2786
2784
ALOGV (" \t LVM_ERROR : Effect_command cmdCode Case: "
2787
2785
" EFFECT_CMD_SET_CONFIG: ERROR" );
2788
2786
return -EINVAL;
@@ -2792,8 +2790,7 @@ int Effect_command(effect_handle_t self,
2792
2790
break ;
2793
2791
2794
2792
case EFFECT_CMD_GET_CONFIG:
2795
- if (pReplyData == NULL ||
2796
- *replySize != sizeof (effect_config_t )) {
2793
+ if (pReplyData == NULL || replySize == NULL || *replySize != sizeof (effect_config_t )) {
2797
2794
ALOGV (" \t LVM_ERROR : Effect_command cmdCode Case: "
2798
2795
" EFFECT_CMD_GET_CONFIG: ERROR" );
2799
2796
return -EINVAL;
@@ -2811,30 +2808,27 @@ int Effect_command(effect_handle_t self,
2811
2808
case EFFECT_CMD_GET_PARAM:{
2812
2809
// ALOGV("\tEffect_command cmdCode Case: EFFECT_CMD_GET_PARAM start");
2813
2810
2814
- if (pContext->EffectType == LVM_BASS_BOOST){
2815
- if (pCmdData == NULL ||
2816
- cmdSize < (int )(sizeof (effect_param_t ) + sizeof (int32_t )) ||
2817
- pReplyData == NULL ||
2818
- *replySize < (int ) (sizeof (effect_param_t ) + sizeof (int32_t ))){
2819
- ALOGV (" \t LVM_ERROR : BassBoost_command cmdCode Case: "
2820
- " EFFECT_CMD_GET_PARAM: ERROR" );
2821
- return -EINVAL;
2822
- }
2823
- effect_param_t *p = (effect_param_t *)pCmdData;
2811
+ effect_param_t *p = (effect_param_t *)pCmdData;
2812
+
2813
+ if (pCmdData == NULL || cmdSize < sizeof (effect_param_t ) ||
2814
+ cmdSize < (sizeof (effect_param_t ) + p->psize ) ||
2815
+ pReplyData == NULL || replySize == NULL ||
2816
+ *replySize < (sizeof (effect_param_t ) + p->psize )) {
2817
+ ALOGV (" \t LVM_ERROR : EFFECT_CMD_GET_PARAM: ERROR" );
2818
+ return -EINVAL;
2819
+ }
2824
2820
2825
- memcpy (pReplyData, pCmdData, sizeof (effect_param_t ) + p->psize );
2821
+ memcpy (pReplyData, pCmdData, sizeof (effect_param_t ) + p->psize );
2826
2822
2827
- p = (effect_param_t *)pReplyData;
2823
+ p = (effect_param_t *)pReplyData;
2828
2824
2829
- int voffset = ((p->psize - 1 ) / sizeof (int32_t ) + 1 ) * sizeof (int32_t );
2825
+ int voffset = ((p->psize - 1 ) / sizeof (int32_t ) + 1 ) * sizeof (int32_t );
2830
2826
2827
+ if (pContext->EffectType == LVM_BASS_BOOST){
2831
2828
p->status = android::BassBoost_getParameter (pContext,
2832
2829
p->data ,
2833
2830
(size_t *)&p->vsize ,
2834
2831
p->data + voffset);
2835
-
2836
- *replySize = sizeof (effect_param_t ) + voffset + p->vsize ;
2837
-
2838
2832
// ALOGV("\tBassBoost_command EFFECT_CMD_GET_PARAM "
2839
2833
// "*pCmdData %d, *replySize %d, *pReplyData %d ",
2840
2834
// *(int32_t *)((char *)pCmdData + sizeof(effect_param_t)),
@@ -2843,29 +2837,11 @@ int Effect_command(effect_handle_t self,
2843
2837
}
2844
2838
2845
2839
if (pContext->EffectType == LVM_VIRTUALIZER){
2846
- if (pCmdData == NULL ||
2847
- cmdSize < (int )(sizeof (effect_param_t ) + sizeof (int32_t )) ||
2848
- pReplyData == NULL ||
2849
- *replySize < (int ) (sizeof (effect_param_t ) + sizeof (int32_t ))){
2850
- ALOGV (" \t LVM_ERROR : Virtualizer_command cmdCode Case: "
2851
- " EFFECT_CMD_GET_PARAM: ERROR" );
2852
- return -EINVAL;
2853
- }
2854
- effect_param_t *p = (effect_param_t *)pCmdData;
2855
-
2856
- memcpy (pReplyData, pCmdData, sizeof (effect_param_t ) + p->psize );
2857
-
2858
- p = (effect_param_t *)pReplyData;
2859
-
2860
- int voffset = ((p->psize - 1 ) / sizeof (int32_t ) + 1 ) * sizeof (int32_t );
2861
-
2862
2840
p->status = android::Virtualizer_getParameter (pContext,
2863
2841
(void *)p->data ,
2864
2842
(size_t *)&p->vsize ,
2865
2843
p->data + voffset);
2866
2844
2867
- *replySize = sizeof (effect_param_t ) + voffset + p->vsize ;
2868
-
2869
2845
// ALOGV("\tVirtualizer_command EFFECT_CMD_GET_PARAM "
2870
2846
// "*pCmdData %d, *replySize %d, *pReplyData %d ",
2871
2847
// *(int32_t *)((char *)pCmdData + sizeof(effect_param_t)),
@@ -2875,29 +2851,11 @@ int Effect_command(effect_handle_t self,
2875
2851
if (pContext->EffectType == LVM_EQUALIZER){
2876
2852
// ALOGV("\tEqualizer_command cmdCode Case: "
2877
2853
// "EFFECT_CMD_GET_PARAM start");
2878
- if (pCmdData == NULL ||
2879
- cmdSize < (int )(sizeof (effect_param_t ) + sizeof (int32_t )) ||
2880
- pReplyData == NULL ||
2881
- *replySize < (int ) (sizeof (effect_param_t ) + sizeof (int32_t ))) {
2882
- ALOGV (" \t LVM_ERROR : Equalizer_command cmdCode Case: "
2883
- " EFFECT_CMD_GET_PARAM" );
2884
- return -EINVAL;
2885
- }
2886
- effect_param_t *p = (effect_param_t *)pCmdData;
2887
-
2888
- memcpy (pReplyData, pCmdData, sizeof (effect_param_t ) + p->psize );
2889
-
2890
- p = (effect_param_t *)pReplyData;
2891
-
2892
- int voffset = ((p->psize - 1 ) / sizeof (int32_t ) + 1 ) * sizeof (int32_t );
2893
-
2894
2854
p->status = android::Equalizer_getParameter (pContext,
2895
2855
p->data ,
2896
2856
&p->vsize ,
2897
2857
p->data + voffset);
2898
2858
2899
- *replySize = sizeof (effect_param_t ) + voffset + p->vsize ;
2900
-
2901
2859
// ALOGV("\tEqualizer_command EFFECT_CMD_GET_PARAM *pCmdData %d, *replySize %d, "
2902
2860
// "*pReplyData %08x %08x",
2903
2861
// *(int32_t *)((char *)pCmdData + sizeof(effect_param_t)), *replySize,
@@ -2907,35 +2865,19 @@ int Effect_command(effect_handle_t self,
2907
2865
}
2908
2866
if (pContext->EffectType == LVM_VOLUME){
2909
2867
// ALOGV("\tVolume_command cmdCode Case: EFFECT_CMD_GET_PARAM start");
2910
- if (pCmdData == NULL ||
2911
- cmdSize < (int )(sizeof (effect_param_t ) + sizeof (int32_t )) ||
2912
- pReplyData == NULL ||
2913
- *replySize < (int ) (sizeof (effect_param_t ) + sizeof (int32_t ))){
2914
- ALOGV (" \t LVM_ERROR : Volume_command cmdCode Case: "
2915
- " EFFECT_CMD_GET_PARAM: ERROR" );
2916
- return -EINVAL;
2917
- }
2918
- effect_param_t *p = (effect_param_t *)pCmdData;
2919
-
2920
- memcpy (pReplyData, pCmdData, sizeof (effect_param_t ) + p->psize );
2921
-
2922
- p = (effect_param_t *)pReplyData;
2923
-
2924
- int voffset = ((p->psize - 1 ) / sizeof (int32_t ) + 1 ) * sizeof (int32_t );
2925
-
2926
2868
p->status = android::Volume_getParameter (pContext,
2927
2869
(void *)p->data ,
2928
2870
(size_t *)&p->vsize ,
2929
2871
p->data + voffset);
2930
2872
2931
- *replySize = sizeof (effect_param_t ) + voffset + p->vsize ;
2932
-
2933
2873
// ALOGV("\tVolume_command EFFECT_CMD_GET_PARAM "
2934
2874
// "*pCmdData %d, *replySize %d, *pReplyData %d ",
2935
2875
// *(int32_t *)((char *)pCmdData + sizeof(effect_param_t)),
2936
2876
// *replySize,
2937
2877
// *(int16_t *)((char *)pReplyData + sizeof(effect_param_t) + voffset));
2938
2878
}
2879
+ *replySize = sizeof (effect_param_t ) + voffset + p->vsize ;
2880
+
2939
2881
// ALOGV("\tEffect_command cmdCode Case: EFFECT_CMD_GET_PARAM end");
2940
2882
} break ;
2941
2883
case EFFECT_CMD_SET_PARAM:{
@@ -2946,10 +2888,9 @@ int Effect_command(effect_handle_t self,
2946
2888
// *replySize,
2947
2889
// *(int16_t *)((char *)pCmdData + sizeof(effect_param_t) + sizeof(int32_t)));
2948
2890
2949
- if (pCmdData == NULL ||
2950
- cmdSize != (int )(sizeof (effect_param_t ) + sizeof (int32_t ) +sizeof (int16_t ))||
2951
- pReplyData == NULL ||
2952
- *replySize != sizeof (int32_t )){
2891
+ if (pCmdData == NULL ||
2892
+ cmdSize != (sizeof (effect_param_t ) + sizeof (int32_t ) +sizeof (int16_t )) ||
2893
+ pReplyData == NULL || replySize == NULL || *replySize != sizeof (int32_t )) {
2953
2894
ALOGV (" \t LVM_ERROR : BassBoost_command cmdCode Case: "
2954
2895
" EFFECT_CMD_SET_PARAM: ERROR" );
2955
2896
return -EINVAL;
@@ -2979,10 +2920,11 @@ int Effect_command(effect_handle_t self,
2979
2920
// *replySize,
2980
2921
// *(int16_t *)((char *)pCmdData + sizeof(effect_param_t) + sizeof(int32_t)));
2981
2922
2982
- if (pCmdData == NULL ||
2983
- cmdSize != (int )(sizeof (effect_param_t ) + sizeof (int32_t ) +sizeof (int16_t ))||
2984
- pReplyData == NULL ||
2985
- *replySize != sizeof (int32_t )){
2923
+ if (pCmdData == NULL ||
2924
+ // legal parameters are int16_t or int32_t
2925
+ cmdSize > (sizeof (effect_param_t ) + sizeof (int32_t ) +sizeof (int32_t )) ||
2926
+ cmdSize < (sizeof (effect_param_t ) + sizeof (int32_t ) +sizeof (int16_t )) ||
2927
+ pReplyData == NULL || replySize == NULL || *replySize != sizeof (int32_t )) {
2986
2928
ALOGV (" \t LVM_ERROR : Virtualizer_command cmdCode Case: "
2987
2929
" EFFECT_CMD_SET_PARAM: ERROR" );
2988
2930
return -EINVAL;
@@ -3014,8 +2956,8 @@ int Effect_command(effect_handle_t self,
3014
2956
// *replySize,
3015
2957
// *(int16_t *)((char *)pCmdData + sizeof(effect_param_t) + sizeof(int32_t)));
3016
2958
3017
- if (pCmdData == NULL || cmdSize < (int )( sizeof (effect_param_t ) + sizeof (int32_t )) ||
3018
- pReplyData == NULL || *replySize != sizeof (int32_t )) {
2959
+ if (pCmdData == NULL || cmdSize < (sizeof (effect_param_t ) + sizeof (int32_t )) ||
2960
+ pReplyData == NULL || replySize == NULL || *replySize != sizeof (int32_t )) {
3019
2961
ALOGV (" \t LVM_ERROR : Equalizer_command cmdCode Case: "
3020
2962
" EFFECT_CMD_SET_PARAM: ERROR" );
3021
2963
return -EINVAL;
@@ -3033,10 +2975,10 @@ int Effect_command(effect_handle_t self,
3033
2975
// *replySize,
3034
2976
// *(int16_t *)((char *)pCmdData + sizeof(effect_param_t) +sizeof(int32_t)));
3035
2977
3036
- if ( pCmdData == NULL ||
3037
- cmdSize < (int )( sizeof (effect_param_t ) + sizeof (int32_t ))||
3038
- pReplyData == NULL ||
3039
- *replySize != sizeof (int32_t )){
2978
+ if (pCmdData == NULL ||
2979
+ cmdSize < (sizeof (effect_param_t ) + sizeof (int32_t )) ||
2980
+ pReplyData == NULL || replySize == NULL ||
2981
+ *replySize != sizeof (int32_t )) {
3040
2982
ALOGV (" \t LVM_ERROR : Volume_command cmdCode Case: "
3041
2983
" EFFECT_CMD_SET_PARAM: ERROR" );
3042
2984
return -EINVAL;
@@ -3052,7 +2994,7 @@ int Effect_command(effect_handle_t self,
3052
2994
3053
2995
case EFFECT_CMD_ENABLE:
3054
2996
ALOGV (" \t Effect_command cmdCode Case: EFFECT_CMD_ENABLE start" );
3055
- if (pReplyData == NULL || *replySize != sizeof (int )){
2997
+ if (pReplyData == NULL || replySize == NULL || *replySize != sizeof (int )) {
3056
2998
ALOGV (" \t LVM_ERROR : Effect_command cmdCode Case: EFFECT_CMD_ENABLE: ERROR" );
3057
2999
return -EINVAL;
3058
3000
}
@@ -3062,7 +3004,7 @@ int Effect_command(effect_handle_t self,
3062
3004
3063
3005
case EFFECT_CMD_DISABLE:
3064
3006
// ALOGV("\tEffect_command cmdCode Case: EFFECT_CMD_DISABLE start");
3065
- if (pReplyData == NULL || *replySize != sizeof (int )){
3007
+ if (pReplyData == NULL || replySize == NULL || *replySize != sizeof (int )) {
3066
3008
ALOGV (" \t LVM_ERROR : Effect_command cmdCode Case: EFFECT_CMD_DISABLE: ERROR" );
3067
3009
return -EINVAL;
3068
3010
}
@@ -3072,6 +3014,11 @@ int Effect_command(effect_handle_t self,
3072
3014
case EFFECT_CMD_SET_DEVICE:
3073
3015
{
3074
3016
ALOGV (" \t Effect_command cmdCode Case: EFFECT_CMD_SET_DEVICE start" );
3017
+ if (pCmdData == NULL ){
3018
+ ALOGV (" \t LVM_ERROR : Effect_command cmdCode Case: EFFECT_CMD_SET_DEVICE: ERROR" );
3019
+ return -EINVAL;
3020
+ }
3021
+
3075
3022
uint32_t device = *(uint32_t *)pCmdData;
3076
3023
3077
3024
if (pContext->EffectType == LVM_BASS_BOOST) {
@@ -3158,8 +3105,8 @@ int Effect_command(effect_handle_t self,
3158
3105
break ;
3159
3106
}
3160
3107
3161
- if (pCmdData == NULL ||
3162
- cmdSize != 2 * sizeof (uint32_t )) {
3108
+ if (pCmdData == NULL || cmdSize != 2 * sizeof ( uint32_t ) || pReplyData == NULL ||
3109
+ replySize == NULL || *replySize < 2 * sizeof (int32_t )) {
3163
3110
ALOGV (" \t LVM_ERROR : Effect_command cmdCode Case: "
3164
3111
" EFFECT_CMD_SET_VOLUME: ERROR" );
3165
3112
return -EINVAL;
0 commit comments