summaryrefslogtreecommitdiff
path: root/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2022-12-16 05:45:44 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-12-16 05:45:44 +0000
commit529d3d7d8c4baeae7cfc143856f06231dc316996 (patch)
tree7861910c93ec3f9f2cd966c494e07d748a7c8552 /service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video
parent0556c5ac8d1197d701432c05fd2ab08a48169ccd (diff)
parente0c21942b0a7aa8ff7a8dbd6859b32d9f9664d22 (diff)
downloadImsMedia-529d3d7d8c4baeae7cfc143856f06231dc316996.tar.gz
Merge "Fix potential memory leaks"
Diffstat (limited to 'service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video')
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/ImsMediaVideoUtil.cpp42
1 files changed, 13 insertions, 29 deletions
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/ImsMediaVideoUtil.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/ImsMediaVideoUtil.cpp
index 9ad8da55..da50f8b0 100644
--- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/ImsMediaVideoUtil.cpp
+++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/ImsMediaVideoUtil.cpp
@@ -21,6 +21,7 @@
#include <ImsMediaBinaryFormat.h>
#include <ImsMediaTrace.h>
#include <VideoConfig.h>
+#include <memory>
#include <string.h>
#define START_CODE_PREFIX_LEN 4
@@ -86,12 +87,9 @@ bool ImsMediaVideoUtil::ModifyAvcSpropParameterSet(
if (inSpropparam == NULL || outSpropparam == NULL)
return false;
- bool bRet = false;
char pSPSConfig[MAX_CONFIG_LEN] = {'\0'};
uint8_t pbSPSConfig[MAX_CONFIG_LEN] = {'\0'};
uint32_t nSPSConfigSize = 0;
- uint8_t* pbSPSConfigModified = NULL;
- char* pSPSConfigModified = NULL;
memset(pSPSConfig, 0x00, MAX_CONFIG_LEN);
@@ -120,12 +118,12 @@ bool ImsMediaVideoUtil::ModifyAvcSpropParameterSet(
return false;
}
- pbSPSConfigModified = (uint8_t*)malloc(nSPSConfigSize);
+ std::unique_ptr<uint8_t[]> pbSPSConfigModified(new uint8_t[nSPSConfigSize]);
if (pbSPSConfigModified == NULL)
return false;
- memcpy(pbSPSConfigModified, pbSPSConfig, nSPSConfigSize);
+ memcpy(pbSPSConfigModified.get(), pbSPSConfig, nSPSConfigSize);
// Skip profile modification
@@ -133,39 +131,25 @@ bool ImsMediaVideoUtil::ModifyAvcSpropParameterSet(
pbSPSConfigModified[3] = nLevel;
// For copy modified sps formed base64
- pSPSConfigModified = (char*)malloc(MAX_CONFIG_LEN);
+ std::unique_ptr<char[]> pSPSConfigModified(new char[MAX_CONFIG_LEN]);
if (pSPSConfigModified == NULL)
return false;
- memset(pSPSConfigModified, 0, MAX_CONFIG_LEN);
+ memset(pSPSConfigModified.get(), 0, MAX_CONFIG_LEN);
// Convert binary to base64
- ret = ImsMediaBinaryFormat::BinaryToBase00(pSPSConfigModified, MAX_CONFIG_LEN,
- pbSPSConfigModified, nSPSConfigSize, BINARY_FORMAT_BASE64);
+ ret = ImsMediaBinaryFormat::BinaryToBase00(pSPSConfigModified.get(), MAX_CONFIG_LEN,
+ pbSPSConfigModified.get(), nSPSConfigSize, BINARY_FORMAT_BASE64);
- if (ret == false || strlen(pSPSConfigModified) == 0)
+ if (ret == false || strlen(pSPSConfigModified.get()) == 0)
{
- bRet = false;
- goto Exit_ModifyAvcSpropParameterSet;
- }
-
- IMLOGW1("[ModifyAvcSpropParameterSet] output data[%s]", pSPSConfigModified);
- memcpy(outSpropparam, pSPSConfigModified, strlen(pSPSConfigModified));
- bRet = true;
-
-Exit_ModifyAvcSpropParameterSet:
- if (pSPSConfigModified != NULL)
- {
- free(pSPSConfigModified);
- }
-
- if (pbSPSConfigModified != NULL)
- {
- free(pbSPSConfigModified);
+ return false;
}
- return bRet;
+ IMLOGW1("[ModifyAvcSpropParameterSet] output data[%s]", pSPSConfigModified.get());
+ memcpy(outSpropparam, pSPSConfigModified.get(), strlen(pSPSConfigModified.get()));
+ return true;
}
ImsMediaResult ImsMediaVideoUtil::ParseAvcSpropParam(const char* szSpropparam, tCodecConfig* pInfo)
@@ -1001,4 +985,4 @@ void ImsMediaVideoUtil::ConvertBitrateToPower(
nOutMantissa = (nOutMantissa % 2 == 0) ? (nOutMantissa) : (nOutMantissa + 1);
}
}
-} \ No newline at end of file
+}