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)) { if (limit.contains(minMask) && contains(minMask)) {
values[0] = minMask; values[0] = minMask;
// keep only flags that are covered by limit // keep only flags that are covered by limit
std::remove_if(values.begin(), values.end(), [&limit, minMask](const C2Value::Primitive &v) -> bool { values.erase(std::remove_if(values.begin(), values.end(),
T value = v.ref<ValueType>() | minMask; [&limit, minMask](
return value == minMask || !limit.contains(value); }); 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 // we also need to do it vice versa
for (const C2Value::Primitive &v : _mValues) { for (const C2Value::Primitive &v : _mValues) {
T value = v.ref<ValueType>() | minMask; T value = v.ref<ValueType>() | minMask;
@ -264,24 +269,33 @@ bool C2SupportedValueSet<T>::contains(T value) const {
template<typename T> template<typename T>
C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedValueSet<T> &limit) const { C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedValueSet<T> &limit) const {
std::vector<C2Value::Primitive> values = _mValues; // make a copy std::vector<C2Value::Primitive> values = _mValues; // make a copy
std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { values.erase(std::remove_if(values.begin(), values.end(),
return !limit.contains(v.ref<ValueType>()); }); [&limit](const C2Value::Primitive &v) -> bool {
return !limit.contains(v.ref<ValueType>());
}),
values.end());
return C2SupportedValueSet(std::move(values)); return C2SupportedValueSet(std::move(values));
} }
template<typename T> template<typename T>
C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedRange<T> &limit) const { C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedRange<T> &limit) const {
std::vector<C2Value::Primitive> values = _mValues; // make a copy std::vector<C2Value::Primitive> values = _mValues; // make a copy
std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { values.erase(std::remove_if(values.begin(), values.end(),
return !limit.contains(v.ref<ValueType>()); }); [&limit](const C2Value::Primitive &v) -> bool {
return !limit.contains(v.ref<ValueType>());
}),
values.end());
return C2SupportedValueSet(std::move(values)); return C2SupportedValueSet(std::move(values));
} }
template<typename T> template<typename T>
C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedFlags<T> &limit) const { C2SupportedValueSet<T> C2SupportedValueSet<T>::limitedTo(const C2SupportedFlags<T> &limit) const {
std::vector<C2Value::Primitive> values = _mValues; // make a copy std::vector<C2Value::Primitive> values = _mValues; // make a copy
std::remove_if(values.begin(), values.end(), [&limit](const C2Value::Primitive &v) -> bool { values.erase(std::remove_if(values.begin(), values.end(),
return !limit.contains(v.ref<ValueType>()); }); [&limit](const C2Value::Primitive &v) -> bool {
return !limit.contains(v.ref<ValueType>());
}),
values.end());
return C2SupportedValueSet(std::move(values)); return C2SupportedValueSet(std::move(values));
} }

@ -1906,11 +1906,15 @@ int Reverb_command(effect_handle_t self,
//ALOGV("\tReverb_command cmdCode Case: " //ALOGV("\tReverb_command cmdCode Case: "
// "EFFECT_CMD_GET_PARAM start"); // "EFFECT_CMD_GET_PARAM start");
effect_param_t *p = (effect_param_t *)pCmdData; 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) { if (SIZE_MAX - sizeof(effect_param_t) < (size_t)p->psize) {
android_errorWriteLog(0x534e4554, "26347509"); android_errorWriteLog(0x534e4554, "26347509");
return -EINVAL; return -EINVAL;
} }
if (pCmdData == NULL || cmdSize < sizeof(effect_param_t) || if (cmdSize < sizeof(effect_param_t) ||
cmdSize < (sizeof(effect_param_t) + p->psize) || cmdSize < (sizeof(effect_param_t) + p->psize) ||
pReplyData == NULL || replySize == NULL || pReplyData == NULL || replySize == NULL ||
*replySize < (sizeof(effect_param_t) + p->psize)) { *replySize < (sizeof(effect_param_t) + p->psize)) {

Loading…
Cancel
Save