Clean up some resources code

More moves and fewer allocations

Bug: 237583012
Test: unit tests
Change-Id: I5cf43c8af0743c0e4d96808f1e55ceb4f02d7021
diff --git a/cmds/idmap2/libidmap2/Idmap.cpp b/cmds/idmap2/libidmap2/Idmap.cpp
index 444f91d..813dff1 100644
--- a/cmds/idmap2/libidmap2/Idmap.cpp
+++ b/cmds/idmap2/libidmap2/Idmap.cpp
@@ -77,8 +77,7 @@
     return false;
   }
   uint32_t padding_size = CalculatePadding(size);
-  std::string padding(padding_size, '\0');
-  if (!stream.read(padding.data(), padding_size)) {
+  if (padding_size != 0 && !stream.seekg(padding_size, std::ios_base::cur)) {
     return false;
   }
   *out = buf;
diff --git a/cmds/idmap2/tests/Idmap2BinaryTests.cpp b/cmds/idmap2/tests/Idmap2BinaryTests.cpp
index e1b7829..5a7fcd5 100644
--- a/cmds/idmap2/tests/Idmap2BinaryTests.cpp
+++ b/cmds/idmap2/tests/Idmap2BinaryTests.cpp
@@ -46,7 +46,6 @@
 
 using ::android::base::StringPrintf;
 using ::android::util::ExecuteBinary;
-using ::testing::NotNull;
 
 namespace android::idmap2 {
 
@@ -95,8 +94,8 @@
                                "--overlay-name", TestConstants::OVERLAY_NAME_DEFAULT,
                                "--idmap-path", GetIdmapPath()});
   // clang-format on
-  ASSERT_THAT(result, NotNull());
-  ASSERT_EQ(result->status, EXIT_SUCCESS) << result->stderr_str;
+  ASSERT_TRUE((bool)result);
+  ASSERT_EQ(result.status, EXIT_SUCCESS) << result.stderr_str;
 
   struct stat st;
   ASSERT_EQ(stat(GetIdmapPath().c_str(), &st), 0);
@@ -122,33 +121,33 @@
                                "--overlay-name", TestConstants::OVERLAY_NAME_DEFAULT,
                                "--idmap-path", GetIdmapPath()});
   // clang-format on
-  ASSERT_THAT(result, NotNull());
-  ASSERT_EQ(result->status, EXIT_SUCCESS) << result->stderr_str;
+  ASSERT_TRUE((bool)result);
+  ASSERT_EQ(result.status, EXIT_SUCCESS) << result.stderr_str;
 
   // clang-format off
   result = ExecuteBinary({"idmap2",
                           "dump",
                           "--idmap-path", GetIdmapPath()});
   // clang-format on
-  ASSERT_THAT(result, NotNull());
-  ASSERT_EQ(result->status, EXIT_SUCCESS) << result->stderr_str;
+  ASSERT_TRUE((bool)result);
+  ASSERT_EQ(result.status, EXIT_SUCCESS) << result.stderr_str;
 
-  ASSERT_NE(result->stdout_str.find(StringPrintf("0x%08x -> 0x%08x", R::target::integer::int1,
+  ASSERT_NE(result.stdout_str.find(StringPrintf("0x%08x -> 0x%08x", R::target::integer::int1,
                                                  R::overlay::integer::int1)),
             std::string::npos)
-      << result->stdout_str;
-  ASSERT_NE(result->stdout_str.find(StringPrintf("0x%08x -> 0x%08x", R::target::string::str1,
+      << result.stdout_str;
+  ASSERT_NE(result.stdout_str.find(StringPrintf("0x%08x -> 0x%08x", R::target::string::str1,
                                                  R::overlay::string::str1)),
             std::string::npos)
-      << result->stdout_str;
-  ASSERT_NE(result->stdout_str.find(StringPrintf("0x%08x -> 0x%08x", R::target::string::str3,
+      << result.stdout_str;
+  ASSERT_NE(result.stdout_str.find(StringPrintf("0x%08x -> 0x%08x", R::target::string::str3,
                                                  R::overlay::string::str3)),
             std::string::npos)
-      << result->stdout_str;
-  ASSERT_NE(result->stdout_str.find(StringPrintf("0x%08x -> 0x%08x", R::target::string::str4,
+      << result.stdout_str;
+  ASSERT_NE(result.stdout_str.find(StringPrintf("0x%08x -> 0x%08x", R::target::string::str4,
                                                  R::overlay::string::str4)),
             std::string::npos)
-      << result->stdout_str;
+      << result.stdout_str;
 
   // clang-format off
   result = ExecuteBinary({"idmap2",
@@ -156,9 +155,9 @@
                           "--verbose",
                           "--idmap-path", GetIdmapPath()});
   // clang-format on
-  ASSERT_THAT(result, NotNull());
-  ASSERT_EQ(result->status, EXIT_SUCCESS) << result->stderr_str;
-  ASSERT_NE(result->stdout_str.find("00000000: 504d4449  magic"), std::string::npos);
+  ASSERT_TRUE((bool)result);
+  ASSERT_EQ(result.status, EXIT_SUCCESS) << result.stderr_str;
+  ASSERT_NE(result.stdout_str.find("00000000: 504d4449  magic"), std::string::npos);
 
   // clang-format off
   result = ExecuteBinary({"idmap2",
@@ -166,8 +165,8 @@
                           "--verbose",
                           "--idmap-path", GetTestDataPath() + "/DOES-NOT-EXIST"});
   // clang-format on
-  ASSERT_THAT(result, NotNull());
-  ASSERT_NE(result->status, EXIT_SUCCESS);
+  ASSERT_TRUE((bool)result);
+  ASSERT_NE(result.status, EXIT_SUCCESS);
 
   unlink(GetIdmapPath().c_str());
 }
@@ -183,8 +182,8 @@
                                "--overlay-name", TestConstants::OVERLAY_NAME_DEFAULT,
                                "--idmap-path", GetIdmapPath()});
   // clang-format on
-  ASSERT_THAT(result, NotNull());
-  ASSERT_EQ(result->status, EXIT_SUCCESS) << result->stderr_str;
+  ASSERT_TRUE((bool)result);
+  ASSERT_EQ(result.status, EXIT_SUCCESS) << result.stderr_str;
 
   // clang-format off
   result = ExecuteBinary({"idmap2",
@@ -193,10 +192,10 @@
                           "--config", "",
                           "--resid", StringPrintf("0x%08x", R::target::string::str1)});
   // clang-format on
-  ASSERT_THAT(result, NotNull());
-  ASSERT_EQ(result->status, EXIT_SUCCESS) << result->stderr_str;
-  ASSERT_NE(result->stdout_str.find("overlay-1"), std::string::npos);
-  ASSERT_EQ(result->stdout_str.find("overlay-1-sv"), std::string::npos);
+  ASSERT_TRUE((bool)result);
+  ASSERT_EQ(result.status, EXIT_SUCCESS) << result.stderr_str;
+  ASSERT_NE(result.stdout_str.find("overlay-1"), std::string::npos);
+  ASSERT_EQ(result.stdout_str.find("overlay-1-sv"), std::string::npos);
 
   // clang-format off
   result = ExecuteBinary({"idmap2",
@@ -205,10 +204,10 @@
                           "--config", "",
                           "--resid", "test.target:string/str1"});
   // clang-format on
-  ASSERT_THAT(result, NotNull());
-  ASSERT_EQ(result->status, EXIT_SUCCESS) << result->stderr_str;
-  ASSERT_NE(result->stdout_str.find("overlay-1"), std::string::npos);
-  ASSERT_EQ(result->stdout_str.find("overlay-1-sv"), std::string::npos);
+  ASSERT_TRUE((bool)result);
+  ASSERT_EQ(result.status, EXIT_SUCCESS) << result.stderr_str;
+  ASSERT_NE(result.stdout_str.find("overlay-1"), std::string::npos);
+  ASSERT_EQ(result.stdout_str.find("overlay-1-sv"), std::string::npos);
 
   // clang-format off
   result = ExecuteBinary({"idmap2",
@@ -217,9 +216,9 @@
                           "--config", "sv",
                           "--resid", "test.target:string/str1"});
   // clang-format on
-  ASSERT_THAT(result, NotNull());
-  ASSERT_EQ(result->status, EXIT_SUCCESS) << result->stderr_str;
-  ASSERT_NE(result->stdout_str.find("overlay-1-sv"), std::string::npos);
+  ASSERT_TRUE((bool)result);
+  ASSERT_EQ(result.status, EXIT_SUCCESS) << result.stderr_str;
+  ASSERT_NE(result.stdout_str.find("overlay-1-sv"), std::string::npos);
 
   unlink(GetIdmapPath().c_str());
 }
@@ -234,8 +233,8 @@
   auto result = ExecuteBinary({"idmap2",
                                "create"});
   // clang-format on
-  ASSERT_THAT(result, NotNull());
-  ASSERT_NE(result->status, EXIT_SUCCESS);
+  ASSERT_TRUE((bool)result);
+  ASSERT_NE(result.status, EXIT_SUCCESS);
 
   // missing argument to option
   // clang-format off
@@ -246,8 +245,8 @@
                           "--overlay-name", TestConstants::OVERLAY_NAME_DEFAULT,
                           "--idmap-path"});
   // clang-format on
-  ASSERT_THAT(result, NotNull());
-  ASSERT_NE(result->status, EXIT_SUCCESS);
+  ASSERT_TRUE((bool)result);
+  ASSERT_NE(result.status, EXIT_SUCCESS);
 
   // invalid target apk path
   // clang-format off
@@ -258,8 +257,8 @@
                           "--overlay-name", TestConstants::OVERLAY_NAME_DEFAULT,
                           "--idmap-path", GetIdmapPath()});
   // clang-format on
-  ASSERT_THAT(result, NotNull());
-  ASSERT_NE(result->status, EXIT_SUCCESS);
+  ASSERT_TRUE((bool)result);
+  ASSERT_NE(result.status, EXIT_SUCCESS);
 
   // unknown policy
   // clang-format off
@@ -271,8 +270,8 @@
                           "--idmap-path", GetIdmapPath(),
                           "--policy", "this-does-not-exist"});
   // clang-format on
-  ASSERT_THAT(result, NotNull());
-  ASSERT_NE(result->status, EXIT_SUCCESS);
+  ASSERT_TRUE((bool)result);
+  ASSERT_NE(result.status, EXIT_SUCCESS);
 }
 
 }  // namespace android::idmap2
diff --git a/cmds/idmap2/tests/TestHelpers.h b/cmds/idmap2/tests/TestHelpers.h
index 45740e2..cdc0b8f 100644
--- a/cmds/idmap2/tests/TestHelpers.h
+++ b/cmds/idmap2/tests/TestHelpers.h
@@ -192,7 +192,7 @@
     // 0x100 string contents "test"
     0x74, 0x65, 0x73, 0x74};
 
-const unsigned int kIdmapRawDataLen = 0x104;
+constexpr unsigned int kIdmapRawDataLen = std::size(kIdmapRawData);
 const unsigned int kIdmapRawDataOffset = 0x54;
 const unsigned int kIdmapRawDataTargetCrc = 0x1234;
 const unsigned int kIdmapRawOverlayCrc = 0x5678;