diff --git a/media/codec2/vndk/util/C2InterfaceUtils.cpp b/media/codec2/vndk/util/C2InterfaceUtils.cpp index 61ec9115be..0c1729b69a 100644 --- a/media/codec2/vndk/util/C2InterfaceUtils.cpp +++ b/media/codec2/vndk/util/C2InterfaceUtils.cpp @@ -216,9 +216,14 @@ C2SupportedFlags C2SupportedFlags::limitedTo(const C2SupportedFlags &li if (limit.contains(minMask) && contains(minMask)) { values[0] = minMask; // keep only flags that are covered by limit - std::remove_if(values.begin(), values.end(), [&limit, minMask](const C2Value::Primitive &v) -> bool { - T value = v.ref() | minMask; - return value == minMask || !limit.contains(value); }); + values.erase(std::remove_if(values.begin(), values.end(), + [&limit, minMask]( + const C2Value::Primitive &v) -> bool { + T value = v.ref() | minMask; + return value == minMask || + !limit.contains(value); + }), + values.end()); // we also need to do it vice versa for (const C2Value::Primitive &v : _mValues) { T value = v.ref() | minMask; @@ -264,24 +269,33 @@ bool C2SupportedValueSet::contains(T value) const { template C2SupportedValueSet C2SupportedValueSet::limitedTo(const C2SupportedValueSet &limit) const { std::vector values = _mValues; // make a copy - std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { - return !limit.contains(v.ref()); }); + values.erase(std::remove_if(values.begin(), values.end(), + [&limit](const C2Value::Primitive &v) -> bool { + return !limit.contains(v.ref()); + }), + values.end()); return C2SupportedValueSet(std::move(values)); } template C2SupportedValueSet C2SupportedValueSet::limitedTo(const C2SupportedRange &limit) const { std::vector values = _mValues; // make a copy - std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { - return !limit.contains(v.ref()); }); + values.erase(std::remove_if(values.begin(), values.end(), + [&limit](const C2Value::Primitive &v) -> bool { + return !limit.contains(v.ref()); + }), + values.end()); return C2SupportedValueSet(std::move(values)); } template C2SupportedValueSet C2SupportedValueSet::limitedTo(const C2SupportedFlags &limit) const { std::vector values = _mValues; // make a copy - std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { - return !limit.contains(v.ref()); }); + values.erase(std::remove_if(values.begin(), values.end(), + [&limit](const C2Value::Primitive &v) -> bool { + return !limit.contains(v.ref()); + }), + values.end()); return C2SupportedValueSet(std::move(values)); } diff --git a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp index 1cb81a66fa..39f5bb6708 100644 --- a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp +++ b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp @@ -1906,11 +1906,15 @@ int Reverb_command(effect_handle_t self, //ALOGV("\tReverb_command cmdCode Case: " // "EFFECT_CMD_GET_PARAM start"); effect_param_t *p = (effect_param_t *)pCmdData; + if (pCmdData == nullptr) { + ALOGW("\tLVM_ERROR : pCmdData is NULL"); + return -EINVAL; + } if (SIZE_MAX - sizeof(effect_param_t) < (size_t)p->psize) { android_errorWriteLog(0x534e4554, "26347509"); return -EINVAL; } - if (pCmdData == NULL || cmdSize < sizeof(effect_param_t) || + if (cmdSize < sizeof(effect_param_t) || cmdSize < (sizeof(effect_param_t) + p->psize) || pReplyData == NULL || replySize == NULL || *replySize < (sizeof(effect_param_t) + p->psize)) {