Make it possible to pass empty opaque data as (NULL, 0) to ICrypto.

Change-Id: Ifee1744890b645e008c9aff3783625a7bfbcff27
related-to-bug: 6275919
diff --git a/media/libmedia/ICrypto.cpp b/media/libmedia/ICrypto.cpp
index e6bea1f..d51fe01 100644
--- a/media/libmedia/ICrypto.cpp
+++ b/media/libmedia/ICrypto.cpp
@@ -61,7 +61,11 @@
         data.writeInterfaceToken(ICrypto::getInterfaceDescriptor());
         data.write(uuid, 16);
         data.writeInt32(opaqueSize);
-        data.write(opaqueData, opaqueSize);
+
+        if (opaqueSize > 0) {
+            data.write(opaqueData, opaqueSize);
+        }
+
         remote()->transact(CREATE_PLUGIN, data, &reply);
 
         return reply.readInt32();
@@ -179,13 +183,19 @@
             data.read(uuid, sizeof(uuid));
 
             size_t opaqueSize = data.readInt32();
-            void *opaqueData = malloc(opaqueSize);
-            data.read(opaqueData, opaqueSize);
+            void *opaqueData = NULL;
+
+            if (opaqueSize > 0) {
+                opaqueData = malloc(opaqueSize);
+                data.read(opaqueData, opaqueSize);
+            }
 
             reply->writeInt32(createPlugin(uuid, opaqueData, opaqueSize));
 
-            free(opaqueData);
-            opaqueData = NULL;
+            if (opaqueData != NULL) {
+                free(opaqueData);
+                opaqueData = NULL;
+            }
 
             return OK;
         }