diff options
author | Marco Nelissen <marcone@google.com> | 2016-02-22 13:05:15 -0800 |
---|---|---|
committer | The Android Automerger <android-build@google.com> | 2016-03-01 15:25:31 -0800 |
commit | d3e5eca42feaa337cd3aa36b7eaa2b7aadbbab15 (patch) | |
tree | 53aa54d898a7fa18021116eb4e67675b7e69882a /media/libmedia | |
parent | a685aea781026471ad82f5729198c60bcb4f8fe9 (diff) | |
download | frameworks_av-d3e5eca42feaa337cd3aa36b7eaa2b7aadbbab15.zip frameworks_av-d3e5eca42feaa337cd3aa36b7eaa2b7aadbbab15.tar.gz frameworks_av-d3e5eca42feaa337cd3aa36b7eaa2b7aadbbab15.tar.bz2 |
Clear allocation to avoid info leak
Bug: 26914474
Change-Id: Ie1a86e86d78058d041149fe599a4996e7f8185cf
Diffstat (limited to 'media/libmedia')
-rw-r--r-- | media/libmedia/IOMX.cpp | 59 |
1 files changed, 32 insertions, 27 deletions
diff --git a/media/libmedia/IOMX.cpp b/media/libmedia/IOMX.cpp index 97b7ff0..865d575 100644 --- a/media/libmedia/IOMX.cpp +++ b/media/libmedia/IOMX.cpp @@ -692,34 +692,39 @@ status_t BnOMX::onTransact( size_t size = data.readInt64(); - void *params = malloc(size); - data.read(params, size); - - status_t err; - switch (code) { - case GET_PARAMETER: - err = getParameter(node, index, params, size); - break; - case SET_PARAMETER: - err = setParameter(node, index, params, size); - break; - case GET_CONFIG: - err = getConfig(node, index, params, size); - break; - case SET_CONFIG: - err = setConfig(node, index, params, size); - break; - case SET_INTERNAL_OPTION: - { - InternalOptionType type = - (InternalOptionType)data.readInt32(); - - err = setInternalOption(node, index, type, params, size); - break; + status_t err = NO_MEMORY; + void *params = calloc(size, 1); + if (params) { + err = data.read(params, size); + if (err != OK) { + android_errorWriteLog(0x534e4554, "26914474"); + } else { + switch (code) { + case GET_PARAMETER: + err = getParameter(node, index, params, size); + break; + case SET_PARAMETER: + err = setParameter(node, index, params, size); + break; + case GET_CONFIG: + err = getConfig(node, index, params, size); + break; + case SET_CONFIG: + err = setConfig(node, index, params, size); + break; + case SET_INTERNAL_OPTION: + { + InternalOptionType type = + (InternalOptionType)data.readInt32(); + + err = setInternalOption(node, index, type, params, size); + break; + } + + default: + TRESPASS(); + } } - - default: - TRESPASS(); } reply->writeInt32(err); |