diff options
author | Marco Nelissen <marcone@google.com> | 2016-02-22 13:05:15 -0800 |
---|---|---|
committer | The Android Automerger <android-build@google.com> | 2016-02-26 16:56:00 -0800 |
commit | 3a90a02bb6c4e8352112dbb9f2316935e4dd7315 (patch) | |
tree | 07ca3e83f8920083f537698b2df24732637e3ade /media/libmedia | |
parent | 1f76ce4e2c13d0347523e8c9a27077c820715f08 (diff) | |
download | frameworks_av-3a90a02bb6c4e8352112dbb9f2316935e4dd7315.zip frameworks_av-3a90a02bb6c4e8352112dbb9f2316935e4dd7315.tar.gz frameworks_av-3a90a02bb6c4e8352112dbb9f2316935e4dd7315.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); |