summaryrefslogtreecommitdiffstats
path: root/media/libmedia
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2016-02-22 13:05:15 -0800
committerThe Android Automerger <android-build@google.com>2016-02-26 16:56:00 -0800
commit3a90a02bb6c4e8352112dbb9f2316935e4dd7315 (patch)
tree07ca3e83f8920083f537698b2df24732637e3ade /media/libmedia
parent1f76ce4e2c13d0347523e8c9a27077c820715f08 (diff)
downloadframeworks_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.cpp59
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);