Revert "Zero hidl-generated structs (cas)"
This reverts commit 2b537f78527b98c76537ccaa8491d7877cae6305.
Reason for revert: Clearing all hidl_vec/array data instead.
Change-Id: I7d51c5268e1b9020732e34c186e2e452cf044518
diff --git a/cas/1.1/default/FactoryLoader.h b/cas/1.1/default/FactoryLoader.h
index 862d557..c4a48e2 100644
--- a/cas/1.1/default/FactoryLoader.h
+++ b/cas/1.1/default/FactoryLoader.h
@@ -44,9 +44,9 @@
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:
+ private:
typedef T* (*CreateFactoryFunc)();
Mutex mMapLock;
@@ -59,7 +59,7 @@
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 @@
}
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 @@
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 @@
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;
}