summaryrefslogtreecommitdiffstats
path: root/media/libmedia/ICrypto.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2012-04-11 15:41:45 -0700
committerAndreas Huber <andih@google.com>2012-04-11 15:41:45 -0700
commit705868c0f2a6e85a39addefe4db9f2130627c219 (patch)
treebf8bc411b75def4b2a70589290cb3343bf8189e8 /media/libmedia/ICrypto.cpp
parente5becb51c64cb8a3f6bbd8a417f54510567f37dd (diff)
downloadframeworks_av-705868c0f2a6e85a39addefe4db9f2130627c219.zip
frameworks_av-705868c0f2a6e85a39addefe4db9f2130627c219.tar.gz
frameworks_av-705868c0f2a6e85a39addefe4db9f2130627c219.tar.bz2
Make it possible to pass empty opaque data as (NULL, 0) to ICrypto.
Change-Id: Ifee1744890b645e008c9aff3783625a7bfbcff27 related-to-bug: 6275919
Diffstat (limited to 'media/libmedia/ICrypto.cpp')
-rw-r--r--media/libmedia/ICrypto.cpp20
1 files changed, 15 insertions, 5 deletions
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 @@ struct BpCrypto : public BpInterface<ICrypto> {
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 @@ status_t BnCrypto::onTransact(
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;
}