summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMahesh Lanka <mlanka@codeaurora.org>2016-10-12 14:44:30 +0530
committerJessica Wagantall <jwagantall@cyngn.com>2016-12-12 12:33:07 -0800
commit83ca6908721e208b8dc2bb2d023e9b6bc1b3f3ea (patch)
tree8ac6b6fd6d703e9ecb9217a2990ba4a80a63f6be
parent428198693f188780a54b4081344d7592c60b897a (diff)
downloadandroid_hardware_qcom_media-stable/cm-13.0-caf-8996-ZNH5Y.tar.gz
android_hardware_qcom_media-stable/cm-13.0-caf-8996-ZNH5Y.tar.bz2
android_hardware_qcom_media-stable/cm-13.0-caf-8996-ZNH5Y.zip
mm-video-v4l2: vdec: Disallow input usebuffer for secure casestable/cm-13.0-caf-8996-ZNH5Y
In secure mode, input buffer _must_ be allocated by the component to allocate a secure buffer. Client-supplied memory via usebuffer does not qualify as secure-memory and must be rejected. This also avoids accidental heap-overflow while copying bitstream from user-memory to a smaller-sized secure-payload (usually the buffer-header itself) CYNGNOS-3312 Bug : 30148882 Fixes : Heap Overflow/LPE in MediaServer (libOmxVdec problem #11) Change-Id: I4f6017eae70d1b760a91be0cfcc356d380ec889b (cherry picked from commit fd304685bb097f9ea519893c064405ad5be1109e) (cherry picked from commit 2a7b408b52cd4cb2d1e1c15ea3bc6130e07a83f6)
-rw-r--r--mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
index b8cf9ddd..e12f81b0 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
@@ -5902,6 +5902,12 @@ OMX_ERRORTYPE omx_vdec::use_input_heap_buffers(
{
DEBUG_PRINT_LOW("Inside %s, %p", __FUNCTION__, buffer);
OMX_ERRORTYPE eRet = OMX_ErrorNone;
+
+ if (secure_mode) {
+ DEBUG_PRINT_ERROR("use_input_heap_buffers is not allowed in secure mode");
+ return OMX_ErrorUndefined;
+ }
+
if (!m_inp_heap_ptr)
m_inp_heap_ptr = (OMX_BUFFERHEADERTYPE*)
calloc( (sizeof(OMX_BUFFERHEADERTYPE)),
@@ -7136,7 +7142,7 @@ OMX_ERRORTYPE omx_vdec::empty_this_buffer_proxy(OMX_IN OMX_HANDLETYPE hComp,
/*for use buffer we need to memcpy the data*/
temp_buffer->buffer_len = buffer->nFilledLen;
- if (input_use_buffer && temp_buffer->bufferaddr) {
+ if (input_use_buffer && temp_buffer->bufferaddr && !secure_mode) {
if (buffer->nFilledLen <= temp_buffer->buffer_len) {
if (arbitrary_bytes) {
memcpy (temp_buffer->bufferaddr, (buffer->pBuffer + buffer->nOffset),buffer->nFilledLen);