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.0/default/FactoryLoader.h b/cas/1.0/default/FactoryLoader.h
index 943f761..18c2186 100644
--- a/cas/1.0/default/FactoryLoader.h
+++ b/cas/1.0/default/FactoryLoader.h
@@ -45,9 +45,9 @@
             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;
@@ -63,7 +63,9 @@
             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 @@
 }
 
 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 @@
 }
 
 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 @@
         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;
 }
 
diff --git a/cas/1.0/default/MediaCasService.cpp b/cas/1.0/default/MediaCasService.cpp
index b159f5b..dbdd008 100644
--- a/cas/1.0/default/MediaCasService.cpp
+++ b/cas/1.0/default/MediaCasService.cpp
@@ -44,7 +44,7 @@
 
     ALOGV("%s", __FUNCTION__);
 
-    hidl_vec<HidlCasPluginDescriptor> results;
+    vector<HidlCasPluginDescriptor> results;
     mCasLoader.enumeratePlugins(&results);
 
     _hidl_cb(results);
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;
 }
 
diff --git a/cas/1.1/default/MediaCasService.cpp b/cas/1.1/default/MediaCasService.cpp
index 122c53f..eb3fa6b 100644
--- a/cas/1.1/default/MediaCasService.cpp
+++ b/cas/1.1/default/MediaCasService.cpp
@@ -68,7 +68,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);