Merge changes Ib293173b,I9244baf7 into rvc-dev

* changes:
  Fix for potential NULL de-reference issue in Reverb
  use vector::erase with std::remove_if
gugelfrei
TreeHugger Robot 4 years ago committed by Android (Google) Code Review
commit 05331bc94b

@ -216,9 +216,14 @@ C2SupportedFlags<T> C2SupportedFlags<T>::limitedTo(const C2SupportedFlags<T> &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<ValueType>() | 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<ValueType>() | 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<ValueType>() | minMask;
@ -264,24 +269,33 @@ bool C2SupportedValueSet<T>::contains(T value) const {
template<typename T>
C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedValueSet<T> &limit) const {
std::vector<C2Value::Primitive> values = _mValues; // make a copy
std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool {
return !limit.contains(v.ref<ValueType>()); });
values.erase(std::remove_if(values.begin(), values.end(),
[&limit](const C2Value::Primitive &v) -> bool {
return !limit.contains(v.ref<ValueType>());
}),
values.end());
return C2SupportedValueSet(std::move(values));
}
template<typename T>
C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedRange<T> &limit) const {
std::vector<C2Value::Primitive> values = _mValues; // make a copy
std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool {
return !limit.contains(v.ref<ValueType>()); });
values.erase(std::remove_if(values.begin(), values.end(),
[&limit](const C2Value::Primitive &v) -> bool {
return !limit.contains(v.ref<ValueType>());
}),
values.end());
return C2SupportedValueSet(std::move(values));
}
template<typename T>
C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedFlags<T> &limit) const {
std::vector<C2Value::Primitive> values = _mValues; // make a copy
std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool {
return !limit.contains(v.ref<ValueType>()); });
values.erase(std::remove_if(values.begin(), values.end(),
[&limit](const C2Value::Primitive &v) -> bool {
return !limit.contains(v.ref<ValueType>());
}),
values.end());
return C2SupportedValueSet(std::move(values));
}

@ -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)) {

Loading…
Cancel
Save