diff options
author | Andreas Huber <andih@google.com> | 2012-04-11 15:41:45 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2012-04-11 15:41:45 -0700 |
commit | 705868c0f2a6e85a39addefe4db9f2130627c219 (patch) | |
tree | bf8bc411b75def4b2a70589290cb3343bf8189e8 /media/libmedia/ICrypto.cpp | |
parent | e5becb51c64cb8a3f6bbd8a417f54510567f37dd (diff) | |
download | frameworks_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.cpp | 20 |
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; } |