diff options
author | Jessica Wagantall <jwagantall@cyngn.com> | 2016-10-06 13:22:16 -0700 |
---|---|---|
committer | Jessica Wagantall <jwagantall@cyngn.com> | 2016-10-06 13:22:16 -0700 |
commit | cb1cdffd7dfae7db36ecd06ce058eba505fb1b9d (patch) | |
tree | 77b3c4f0794948b7bbea40a65d0f7856cde7f770 /services/audioflinger | |
parent | 3f6bb688b22b184b0bfc2739cda3c3cf0dd06a14 (diff) | |
parent | f42ee8bd0cb51c571dd6dfcf71c61dce377768cd (diff) | |
download | frameworks_av-cb1cdffd7dfae7db36ecd06ce058eba505fb1b9d.zip frameworks_av-cb1cdffd7dfae7db36ecd06ce058eba505fb1b9d.tar.gz frameworks_av-cb1cdffd7dfae7db36ecd06ce058eba505fb1b9d.tar.bz2 |
Merge tag 'android-6.0.1_r72' into HEAD
Android 6.0.1 Release 72 (M4B30X)
Change-Id: I617426a3fbf7a8d013c5be838ad4c80a00b61a5f
Diffstat (limited to 'services/audioflinger')
-rw-r--r-- | services/audioflinger/Effects.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/services/audioflinger/Effects.cpp b/services/audioflinger/Effects.cpp index e57aab1..5505d2e 100644 --- a/services/audioflinger/Effects.cpp +++ b/services/audioflinger/Effects.cpp @@ -543,6 +543,13 @@ status_t AudioFlinger::EffectModule::remove_effect_from_hal_l() return NO_ERROR; } +// round up delta valid if value and divisor are positive. +template <typename T> +static T roundUpDelta(const T &value, const T &divisor) { + T remainder = value % divisor; + return remainder == 0 ? 0 : divisor - remainder; +} + status_t AudioFlinger::EffectModule::command(uint32_t cmdCode, uint32_t cmdSize, void *pCmdData, @@ -564,6 +571,22 @@ status_t AudioFlinger::EffectModule::command(uint32_t cmdCode, android_errorWriteLog(0x534e4554, "29251553"); return -EINVAL; } + if ((cmdCode == EFFECT_CMD_SET_PARAM + || cmdCode == EFFECT_CMD_SET_PARAM_DEFERRED) && // DEFERRED not generally used + (sizeof(effect_param_t) > cmdSize + || ((effect_param_t *)pCmdData)->psize > cmdSize + - sizeof(effect_param_t) + || ((effect_param_t *)pCmdData)->vsize > cmdSize + - sizeof(effect_param_t) + - ((effect_param_t *)pCmdData)->psize + || roundUpDelta(((effect_param_t *)pCmdData)->psize, (uint32_t)sizeof(int)) > + cmdSize + - sizeof(effect_param_t) + - ((effect_param_t *)pCmdData)->psize + - ((effect_param_t *)pCmdData)->vsize)) { + android_errorWriteLog(0x534e4554, "30204301"); + return -EINVAL; + } status_t status = (*mEffectInterface)->command(mEffectInterface, cmdCode, cmdSize, |