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

Commit 9b2e5042 authored by Steven Moreland's avatar Steven Moreland
Browse files

Revert "Zero hidl-generated structs (cas)"

This reverts commit 2b537f78.

Reason for revert: Clearing all hidl_vec/array data instead.

Change-Id: I7d51c5268e1b9020732e34c186e2e452cf044518
parent 2b537f78
Loading
Loading
Loading
Loading
+15 −18
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ public:
            sp<SharedLibrary> *library = NULL,
            T** factory = NULL);

    bool enumeratePlugins(hidl_vec<HidlCasPluginDescriptor>* results);
    bool enumeratePlugins(vector<HidlCasPluginDescriptor>* results);

private:
    typedef T*(*CreateFactoryFunc)();
@@ -63,7 +63,9 @@ public:
            sp<SharedLibrary> *library,
            T** factory);

    bool queryPluginsFromPath(const String8& path, hidl_vec<HidlCasPluginDescriptor>* results);
    bool queryPluginsFromPath(
            const String8 &path,
            vector<HidlCasPluginDescriptor>* results);

    bool openFactory(const String8 &path);
    void closeFactory();
@@ -119,9 +121,12 @@ bool FactoryLoader<T>::findFactoryForScheme(
}

template <class T>
bool FactoryLoader<T>::enumeratePlugins(hidl_vec<HidlCasPluginDescriptor>* results) {
bool FactoryLoader<T>::enumeratePlugins(
        vector<HidlCasPluginDescriptor>* results) {
    ALOGI("enumeratePlugins");

    results->clear();

    String8 dirPath("/vendor/lib/mediacas");
    DIR* pDir = opendir(dirPath.string());

@@ -163,8 +168,8 @@ bool FactoryLoader<T>::loadFactoryForSchemeFromPath(
}

template <class T>
bool FactoryLoader<T>::queryPluginsFromPath(const String8& path,
                                            hidl_vec<HidlCasPluginDescriptor>* results) {
bool FactoryLoader<T>::queryPluginsFromPath(
        const String8 &path, vector<HidlCasPluginDescriptor>* results) {
    closeFactory();

    vector<CasPluginDescriptor> descriptors;
@@ -173,19 +178,11 @@ bool FactoryLoader<T>::queryPluginsFromPath(const String8& path,
        return false;
    }

    results->resize(descriptors.size());

    if (results->size() >= SIZE_MAX / sizeof(HidlCasPluginDescriptor)) {
        return false;
    for (auto it = descriptors.begin(); it != descriptors.end(); it++) {
        results->push_back( HidlCasPluginDescriptor {
                .caSystemId = it->CA_system_id,
                .name = it->name.c_str()});
    }
    memset(results->data(), 0, results->size() * sizeof(HidlCasPluginDescriptor));

    for (size_t i = 0; i < results->size(); i++) {
        HidlCasPluginDescriptor& descriptor = (*results)[i];
        descriptor.caSystemId = descriptors[i].CA_system_id;
        descriptor.name = descriptors[i].name.c_str();
    }

    return true;
}

+1 −1
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ Return<void> MediaCasService::enumeratePlugins(enumeratePlugins_cb _hidl_cb) {

    ALOGV("%s", __FUNCTION__);

    hidl_vec<HidlCasPluginDescriptor> results;
    vector<HidlCasPluginDescriptor> results;
    mCasLoader.enumeratePlugins(&results);

    _hidl_cb(results);
+10 −17
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ class FactoryLoader {
    bool findFactoryForScheme(int32_t CA_system_id, sp<SharedLibrary>* library = NULL,
                              T** factory = NULL);

    bool enumeratePlugins(hidl_vec<HidlCasPluginDescriptor>* results);
    bool enumeratePlugins(vector<HidlCasPluginDescriptor>* results);

   private:
    typedef T* (*CreateFactoryFunc)();
@@ -59,7 +59,7 @@ class FactoryLoader {
    bool loadFactoryForSchemeFromPath(const String8& path, int32_t CA_system_id,
                                      sp<SharedLibrary>* library, T** factory);

    bool queryPluginsFromPath(const String8& path, hidl_vec<HidlCasPluginDescriptor>* results);
    bool queryPluginsFromPath(const String8& path, vector<HidlCasPluginDescriptor>* results);

    bool openFactory(const String8& path);
    void closeFactory();
@@ -113,9 +113,11 @@ bool FactoryLoader<T>::findFactoryForScheme(int32_t CA_system_id, sp<SharedLibra
}

template <class T>
bool FactoryLoader<T>::enumeratePlugins(hidl_vec<HidlCasPluginDescriptor>* results) {
bool FactoryLoader<T>::enumeratePlugins(vector<HidlCasPluginDescriptor>* results) {
    ALOGI("enumeratePlugins");

    results->clear();

    String8 dirPath("/vendor/lib/mediacas");
    DIR* pDir = opendir(dirPath.string());

@@ -157,7 +159,7 @@ bool FactoryLoader<T>::loadFactoryForSchemeFromPath(const String8& path, int32_t

template <class T>
bool FactoryLoader<T>::queryPluginsFromPath(const String8& path,
                                            hidl_vec<HidlCasPluginDescriptor>* results) {
                                            vector<HidlCasPluginDescriptor>* results) {
    closeFactory();

    vector<CasPluginDescriptor> descriptors;
@@ -166,19 +168,10 @@ bool FactoryLoader<T>::queryPluginsFromPath(const String8& path,
        return false;
    }

    results->resize(descriptors.size());

    if (results->size() >= SIZE_MAX / sizeof(HidlCasPluginDescriptor)) {
        return false;
    }
    memset(results->data(), 0, results->size() * sizeof(HidlCasPluginDescriptor));

    for (size_t i = 0; i < results->size(); i++) {
        HidlCasPluginDescriptor& descriptor = (*results)[i];
        descriptor.caSystemId = descriptors[i].CA_system_id;
        descriptor.name = descriptors[i].name.c_str();
    for (auto it = descriptors.begin(); it != descriptors.end(); it++) {
        results->push_back(
                HidlCasPluginDescriptor{.caSystemId = it->CA_system_id, .name = it->name.c_str()});
    }

    return true;
}

+1 −1
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ MediaCasService::~MediaCasService() {}
Return<void> MediaCasService::enumeratePlugins(enumeratePlugins_cb _hidl_cb) {
    ALOGV("%s", __FUNCTION__);

    hidl_vec<HidlCasPluginDescriptor> results;
    vector<HidlCasPluginDescriptor> results;
    mCasLoader.enumeratePlugins(&results);

    _hidl_cb(results);