From 079077fd7707ff51243fc76e98adbc92bdd9f992 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 6 Oct 2022 15:55:34 -0700 Subject: [PATCH] CursorWindow_test: fix leaks `buf` isn't freed here. Convert it to either a unique_ptr or stack array, depending on size. Caught by the static analyzer: > frameworks/base/libs/androidfw/tests/CursorWindow_test.cpp:190:5: warning: Potential leak of memory pointed to by 'buf' [clang-analyzer-unix.Malloc] > frameworks/base/libs/androidfw/tests/CursorWindow_test.cpp:268:5: warning: Potential leak of memory pointed to by 'buf' [clang-analyzer-unix.Malloc] > frameworks/base/libs/androidfw/tests/CursorWindow_test.cpp:327:5: warning: Potential leak of memory pointed to by 'buf' [clang-analyzer-unix.Malloc] Bug: 206470603 Test: TreeHugger Change-Id: I6fee4a9c2eedce0385f794567b0083df24c63419 --- libs/androidfw/tests/CursorWindow_test.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libs/androidfw/tests/CursorWindow_test.cpp b/libs/androidfw/tests/CursorWindow_test.cpp index 15be80c481926..d1cfd03276c26 100644 --- a/libs/androidfw/tests/CursorWindow_test.cpp +++ b/libs/androidfw/tests/CursorWindow_test.cpp @@ -14,6 +14,7 @@ * limitations under the License. */ +#include #include #include "androidfw/CursorWindow.h" @@ -184,7 +185,7 @@ TEST(CursorWindowTest, Inflate) { ASSERT_EQ(w->allocRow(), OK); // Scratch buffer that will fit before inflation - void* buf = malloc(kHalfInlineSize); + char buf[kHalfInlineSize]; // Store simple value ASSERT_EQ(w->putLong(0, 0, 0xcafe), OK); @@ -262,7 +263,7 @@ TEST(CursorWindowTest, ParcelSmall) { ASSERT_EQ(w->allocRow(), OK); // Scratch buffer that will fit before inflation - void* buf = malloc(kHalfInlineSize); + char buf[kHalfInlineSize]; // Store simple value ASSERT_EQ(w->putLong(0, 0, 0xcafe), OK); @@ -322,7 +323,8 @@ TEST(CursorWindowTest, ParcelLarge) { ASSERT_EQ(w->putLong(0, 0, 0xcafe), OK); // Store object that forces inflation - void* buf = malloc(kGiantSize); + std::unique_ptr bufPtr(new char[kGiantSize]); + void* buf = bufPtr.get(); memset(buf, 42, kGiantSize); ASSERT_EQ(w->putBlob(0, 1, buf, kGiantSize), OK);