diff options
author | Luca Stefani <luca020400@lineageos.org> | 2017-06-16 17:05:38 +0200 |
---|---|---|
committer | Luca Stefani <luca020400@lineageos.org> | 2017-06-16 17:05:38 +0200 |
commit | 074ff06ec3bc704c95ea05e0839a611bbf1338f6 (patch) | |
tree | 7d5780fca163264f7e55722abe5bcfb79d784dda | |
parent | 6e8e9c5470bd1444084a8f832821c12fdc115442 (diff) | |
parent | 3b4fef61e3a1eabed9828ef23fa6825480988d70 (diff) | |
download | hardware_qcom_audio-074ff06ec3bc704c95ea05e0839a611bbf1338f6.tar.gz hardware_qcom_audio-074ff06ec3bc704c95ea05e0839a611bbf1338f6.tar.bz2 hardware_qcom_audio-074ff06ec3bc704c95ea05e0839a611bbf1338f6.zip |
Merge tag 'LA.UM.5.5.r1-04900-8x96.0' into HEAD
"LA.UM.5.5.r1-04900-8x96.0"
-rw-r--r-- | mm-audio/aenc-aac/qdsp6/src/omx_aac_aenc.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/mm-audio/aenc-aac/qdsp6/src/omx_aac_aenc.cpp b/mm-audio/aenc-aac/qdsp6/src/omx_aac_aenc.cpp index d2dd1d0e..9c9fbf50 100644 --- a/mm-audio/aenc-aac/qdsp6/src/omx_aac_aenc.cpp +++ b/mm-audio/aenc-aac/qdsp6/src/omx_aac_aenc.cpp @@ -1,5 +1,5 @@ /*-------------------------------------------------------------------------- -Copyright (c) 2010-2016, The Linux Foundation. All rights reserved. +Copyright (c) 2010-2017, The Linux Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -4178,14 +4178,25 @@ OMX_ERRORTYPE omx_aac_aenc::fill_this_buffer_proxy DEBUG_DETAIL("FTBP->Al_len[%lu]buf[%p]size[%d]numOutBuf[%d]\n",\ buffer->nAllocLen,m_tmp_out_meta_buf, nReadbytes,nNumOutputBuf); - if(*m_tmp_out_meta_buf <= 0) + if(m_tmp_out_meta_buf == NULL) + return OMX_ErrorUndefined; + + if(*m_tmp_out_meta_buf <= 0 || *m_tmp_out_meta_buf > CHAR_MAX) return OMX_ErrorBadParameter; - szadifhr = AUDAAC_MAX_ADIF_HEADER_LENGTH; + szadifhr = AUDAAC_MAX_ADIF_HEADER_LENGTH; numframes = *m_tmp_out_meta_buf; metainfo = (int)((sizeof(ENC_META_OUT) * numframes)+ - sizeof(unsigned char)); + sizeof(unsigned char)); + /* + * add bounds checking + */ + if ((metainfo > INT_MAX - szadifhr) || + (buffer->nAllocLen < (nReadbytes + szadifhr)) || + (metainfo > nReadbytes)) { + return OMX_ErrorBadParameter; + } audaac_rec_install_adif_header_variable(0,sample_idx, - (OMX_U8)m_aac_param.nChannels); + (OMX_U8)m_aac_param.nChannels); memcpy(buffer->pBuffer,m_tmp_out_meta_buf,metainfo); memcpy(buffer->pBuffer + metainfo,&audaac_header_adif[0],szadifhr); memcpy(buffer->pBuffer + metainfo + szadifhr, |