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

Commit 05331bc9 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes Ib293173b,I9244baf7 into rvc-dev

* changes:
  Fix for potential NULL de-reference issue in Reverb
  use vector::erase with std::remove_if
parents d275acd4 c4b71c93
Loading
Loading
Loading
Loading
+23 −9
Original line number Diff line number Diff line
@@ -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 {
        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); });
                                      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));
}

+5 −1
Original line number Diff line number Diff line
@@ -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)) {