diff options
author | Hung Nguyen <hung.nguyen@sonymobile.com> | 2012-06-05 13:19:53 +0200 |
---|---|---|
committer | James Dong <jdong@google.com> | 2013-01-24 15:42:42 -0800 |
commit | 0bf43848adb00922122b0a0eed2fa0318bde8317 (patch) | |
tree | b8b0ca3491d76059f03e97f695949876b6e153bc | |
parent | 13f7fe763b9ad52fc27f21ed923c46b9555a321f (diff) | |
download | frameworks_av-0bf43848adb00922122b0a0eed2fa0318bde8317.zip frameworks_av-0bf43848adb00922122b0a0eed2fa0318bde8317.tar.gz frameworks_av-0bf43848adb00922122b0a0eed2fa0318bde8317.tar.bz2 |
Fixed memory leakage in the DRM framework
Change-Id: Ib1276bec6cafb4e94f8f13b52e50e4987765eec4
-rw-r--r-- | drm/common/IDrmManagerService.cpp | 12 | ||||
-rw-r--r-- | drm/common/ReadWriteUtils.cpp | 2 | ||||
-rw-r--r-- | drm/libdrmframework/plugins/passthru/src/DrmPassthruPlugIn.cpp | 3 |
3 files changed, 11 insertions, 6 deletions
diff --git a/drm/common/IDrmManagerService.cpp b/drm/common/IDrmManagerService.cpp index 0282036..91fd91e 100644 --- a/drm/common/IDrmManagerService.cpp +++ b/drm/common/IDrmManagerService.cpp @@ -190,8 +190,9 @@ DrmConstraints* BpDrmManagerService::getConstraints( if (0 < bufferSize) { data = new char[bufferSize]; reply.read(data, bufferSize); + drmConstraints->put(&key, data); + delete[] data; } - drmConstraints->put(&key, data); } } return drmConstraints; @@ -219,8 +220,9 @@ DrmMetadata* BpDrmManagerService::getMetadata(int uniqueId, const String8* path) if (0 < bufferSize) { data = new char[bufferSize]; reply.read(data, bufferSize); + drmMetadata->put(&key, data); + delete[] data; } - drmMetadata->put(&key, data); } } return drmMetadata; @@ -889,9 +891,11 @@ status_t BnDrmManagerService::onTransact( int bufferSize = 0; if (NULL != value) { bufferSize = strlen(value); + reply->writeInt32(bufferSize + 1); + reply->write(value, bufferSize + 1); + } else { + reply->writeInt32(0); } - reply->writeInt32(bufferSize + 1); - reply->write(value, bufferSize + 1); } } delete drmConstraints; drmConstraints = NULL; diff --git a/drm/common/ReadWriteUtils.cpp b/drm/common/ReadWriteUtils.cpp index fd17e98..d696f16 100644 --- a/drm/common/ReadWriteUtils.cpp +++ b/drm/common/ReadWriteUtils.cpp @@ -47,7 +47,7 @@ String8 ReadWriteUtils::readBytes(const String8& filePath) { if (length == read(fd, (void*) bytes, length)) { string.append(bytes, length); } - delete bytes; + delete[] bytes; } fclose(file); } diff --git a/drm/libdrmframework/plugins/passthru/src/DrmPassthruPlugIn.cpp b/drm/libdrmframework/plugins/passthru/src/DrmPassthruPlugIn.cpp index fa659fd..084e323 100644 --- a/drm/libdrmframework/plugins/passthru/src/DrmPassthruPlugIn.cpp +++ b/drm/libdrmframework/plugins/passthru/src/DrmPassthruPlugIn.cpp @@ -65,10 +65,11 @@ DrmConstraints* DrmPassthruPlugIn::onGetConstraints( char* charValue = NULL; charValue = new char[value.length() + 1]; strncpy(charValue, value.string(), value.length()); + charValue[value.length()] = '\0'; //Just add dummy available time for verification drmConstraints->put(&(DrmConstraints::LICENSE_AVAILABLE_TIME), charValue); - + delete[] charValue; return drmConstraints; } |