Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fe49081e authored by Mikhail Naganov's avatar Mikhail Naganov
Browse files

[automerger] Add EFFECT_CMD_SET_PARAM parameter checking to Downmix and Reverb...

[automerger] Add EFFECT_CMD_SET_PARAM parameter checking to Downmix and Reverb am: 804632af am: bc1d023c am: 03c1ecd9 am: c4b06bbc am: 5c6acee1 am: fcc98fa3 am: 1f2d8b0b am: 698581c5 am: e52a6ab8 am: c6905d1c

Change-Id: I88ef8effb22c7e01ae8d2668e3c832fe0febc90c
parents 920df6ca c6905d1c
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -445,6 +445,10 @@ static int Downmix_Command(effect_handle_t self, uint32_t cmdCode, uint32_t cmdS
            return -EINVAL;
        }
        effect_param_t *cmd = (effect_param_t *) pCmdData;
        if (cmd->psize != sizeof(int32_t)) {
            android_errorWriteLog(0x534e4554, "63662938");
            return -EINVAL;
        }
        *(int *)pReplyData = Downmix_setParameter(pDownmixer, *(int32_t *)cmd->data,
                cmd->vsize, cmd->data + sizeof(int32_t));
        break;
+36 −3
Original line number Diff line number Diff line
@@ -180,12 +180,13 @@ int Reverb_init (ReverbContext *pContext);
void Reverb_free            (ReverbContext *pContext);
int  Reverb_setConfig       (ReverbContext *pContext, effect_config_t *pConfig);
void Reverb_getConfig       (ReverbContext *pContext, effect_config_t *pConfig);
int  Reverb_setParameter    (ReverbContext *pContext, void *pParam, void *pValue);
int  Reverb_setParameter    (ReverbContext *pContext, void *pParam, void *pValue, int vsize);
int  Reverb_getParameter    (ReverbContext *pContext,
                             void          *pParam,
                             uint32_t      *pValueSize,
                             void          *pValue);
int Reverb_LoadPreset       (ReverbContext   *pContext);
int Reverb_paramValueSize   (int32_t param);

/* Effect Library Interface Implementation */

@@ -1747,12 +1748,13 @@ int Reverb_getParameter(ReverbContext *pContext,
//  pContext         - handle to instance data
//  pParam           - pointer to parameter
//  pValue           - pointer to value
//  vsize            - value size
//
// Outputs:
//
//----------------------------------------------------------------------------

int Reverb_setParameter (ReverbContext *pContext, void *pParam, void *pValue){
int Reverb_setParameter (ReverbContext *pContext, void *pParam, void *pValue, int vsize){
    int status = 0;
    int16_t level;
    int16_t ratio;
@@ -1776,6 +1778,11 @@ int Reverb_setParameter (ReverbContext *pContext, void *pParam, void *pValue){
        return 0;
    }

    if (vsize < Reverb_paramValueSize(param)) {
        android_errorWriteLog(0x534e4554, "63526567");
        return -EINVAL;
    }

    switch (param){
        case REVERB_PARAM_PROPERTIES:
            ALOGV("\tReverb_setParameter() REVERB_PARAM_PROPERTIES");
@@ -1851,6 +1858,31 @@ int Reverb_setParameter (ReverbContext *pContext, void *pParam, void *pValue){
    return status;
} /* end Reverb_setParameter */


/**
 * returns the size in bytes of the value of each environmental reverb parameter
 */
int Reverb_paramValueSize(int32_t param) {
    switch (param) {
    case REVERB_PARAM_ROOM_LEVEL:
    case REVERB_PARAM_ROOM_HF_LEVEL:
    case REVERB_PARAM_REFLECTIONS_LEVEL:
    case REVERB_PARAM_REVERB_LEVEL:
        return sizeof(int16_t); // millibel
    case REVERB_PARAM_DECAY_TIME:
    case REVERB_PARAM_REFLECTIONS_DELAY:
    case REVERB_PARAM_REVERB_DELAY:
        return sizeof(uint32_t); // milliseconds
    case REVERB_PARAM_DECAY_HF_RATIO:
    case REVERB_PARAM_DIFFUSION:
    case REVERB_PARAM_DENSITY:
        return sizeof(int16_t); // permille
    case REVERB_PARAM_PROPERTIES:
        return sizeof(s_reverb_settings); // struct of all reverb properties
    }
    return sizeof(int32_t);
}

} // namespace
} // namespace

@@ -2022,7 +2054,8 @@ int Reverb_command(effect_handle_t self,

            *(int *)pReplyData = android::Reverb_setParameter(pContext,
                                                             (void *)p->data,
                                                              p->data + p->psize);
                                                              p->data + p->psize,
                                                              p->vsize);
        } break;

        case EFFECT_CMD_ENABLE: