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

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

Merge "Add more robust SharedFilter permission checks."

parents 74a261a9 5375f28e
Loading
Loading
Loading
Loading
+11 −3
Original line number Original line Diff line number Diff line
@@ -38,7 +38,12 @@ using namespace std;


TunerFilter::TunerFilter(shared_ptr<IFilter> filter, shared_ptr<FilterCallback> cb,
TunerFilter::TunerFilter(shared_ptr<IFilter> filter, shared_ptr<FilterCallback> cb,
                         DemuxFilterType type)
                         DemuxFilterType type)
      : mFilter(filter), mType(type), mStarted(false), mShared(false), mFilterCallback(cb) {}
      : mFilter(filter),
        mType(type),
        mStarted(false),
        mShared(false),
        mClientPid(-1),
        mFilterCallback(cb) {}


TunerFilter::~TunerFilter() {
TunerFilter::~TunerFilter() {
    Mutex::Autolock _l(mLock);
    Mutex::Autolock _l(mLock);
@@ -278,8 +283,10 @@ TunerFilter::~TunerFilter() {
        }
        }
    }
    }


    auto res = mFilter->stop();
    mStarted = false;
    mStarted = false;
    return mFilter->stop();

    return res;
}
}


::ndk::ScopedAStatus TunerFilter::flush() {
::ndk::ScopedAStatus TunerFilter::flush() {
@@ -334,6 +341,7 @@ TunerFilter::~TunerFilter() {
    mFilter = nullptr;
    mFilter = nullptr;
    mStarted = false;
    mStarted = false;
    mShared = false;
    mShared = false;
    mClientPid = -1;


    return res;
    return res;
}
}
@@ -398,7 +406,7 @@ TunerFilter::~TunerFilter() {
}
}


bool TunerFilter::isSharedFilterAllowed(int callingPid) {
bool TunerFilter::isSharedFilterAllowed(int callingPid) {
    return mClientPid != callingPid;
    return mShared && mClientPid != callingPid;
}
}


void TunerFilter::attachSharedFilterCallback(const shared_ptr<ITunerFilterCallback>& in_cb) {
void TunerFilter::attachSharedFilterCallback(const shared_ptr<ITunerFilterCallback>& in_cb) {
+9 −3
Original line number Original line Diff line number Diff line
@@ -91,7 +91,12 @@ namespace tuner {


TunerHidlFilter::TunerHidlFilter(sp<HidlIFilter> filter, sp<FilterCallback> cb,
TunerHidlFilter::TunerHidlFilter(sp<HidlIFilter> filter, sp<FilterCallback> cb,
                                 DemuxFilterType type)
                                 DemuxFilterType type)
      : mFilter(filter), mType(type), mStarted(false), mShared(false), mFilterCallback(cb) {
      : mFilter(filter),
        mType(type),
        mStarted(false),
        mShared(false),
        mClientPid(-1),
        mFilterCallback(cb) {
    mFilter_1_1 = ::android::hardware::tv::tuner::V1_1::IFilter::castFrom(filter);
    mFilter_1_1 = ::android::hardware::tv::tuner::V1_1::IFilter::castFrom(filter);
}
}


@@ -441,10 +446,10 @@ TunerHidlFilter::~TunerHidlFilter() {
    }
    }


    HidlResult res = mFilter->stop();
    HidlResult res = mFilter->stop();
    mStarted = false;
    if (res != HidlResult::SUCCESS) {
    if (res != HidlResult::SUCCESS) {
        return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(res));
        return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(res));
    }
    }
    mStarted = false;


    return ::ndk::ScopedAStatus::ok();
    return ::ndk::ScopedAStatus::ok();
}
}
@@ -507,6 +512,7 @@ TunerHidlFilter::~TunerHidlFilter() {
    mFilter_1_1 = nullptr;
    mFilter_1_1 = nullptr;
    mStarted = false;
    mStarted = false;
    mShared = false;
    mShared = false;
    mClientPid = -1;


    if (res != HidlResult::SUCCESS) {
    if (res != HidlResult::SUCCESS) {
        return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(res));
        return ::ndk::ScopedAStatus::fromServiceSpecificError(static_cast<int32_t>(res));
@@ -575,7 +581,7 @@ TunerHidlFilter::~TunerHidlFilter() {
}
}


bool TunerHidlFilter::isSharedFilterAllowed(int callingPid) {
bool TunerHidlFilter::isSharedFilterAllowed(int callingPid) {
    return mClientPid != callingPid;
    return mShared && mClientPid != callingPid;
}
}


void TunerHidlFilter::attachSharedFilterCallback(const shared_ptr<ITunerFilterCallback>& in_cb) {
void TunerHidlFilter::attachSharedFilterCallback(const shared_ptr<ITunerFilterCallback>& in_cb) {