summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Arnab Banerjee <a1.banerjee@samsung.corp-partner.google.com> 2024-05-17 18:06:45 +0530
committer Song Chun Fan <schfan@google.com> 2024-05-17 17:21:21 +0000
commit83e67a66dec61cd195e6845df4a78b2437e281f6 (patch)
treea1ece693eefc4665a410adc1b50246eead469f3b
parentcd53cb57724f23aa3eab000f9e3ad936c8a6a173 (diff)
Fix TypedArray instance leak in ParsingPackageUtils.
TypedArray instance was not closed after creation due to recycle method not being invoked. Added recycle call. Bug: 337976070 FIXES: 337976070 Change-Id: I222e33209e6b66f344e24ae1ca232ca7312da087
-rw-r--r--core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java14
1 files changed, 9 insertions, 5 deletions
diff --git a/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java b/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java
index 9fc7ddb57847..0e5049e97711 100644
--- a/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java
+++ b/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java
@@ -1911,12 +1911,16 @@ public class ParsingPackageUtils {
} else if (parser.getName().equals("package")) {
final TypedArray sa = res.obtainAttributes(parser,
R.styleable.AndroidManifestQueriesPackage);
- final String packageName = sa.getNonConfigurationString(
- R.styleable.AndroidManifestQueriesPackage_name, 0);
- if (TextUtils.isEmpty(packageName)) {
- return input.error("Package name is missing from package tag.");
+ try {
+ final String packageName = sa.getNonConfigurationString(
+ R.styleable.AndroidManifestQueriesPackage_name, 0);
+ if (TextUtils.isEmpty(packageName)) {
+ return input.error("Package name is missing from package tag.");
+ }
+ pkg.addQueriesPackage(packageName.intern());
+ } finally {
+ sa.recycle();
}
- pkg.addQueriesPackage(packageName.intern());
} else if (parser.getName().equals("provider")) {
final TypedArray sa = res.obtainAttributes(parser,
R.styleable.AndroidManifestQueriesProvider);