diff options
| author | 2024-05-17 18:06:45 +0530 | |
|---|---|---|
| committer | 2024-05-17 17:21:21 +0000 | |
| commit | 83e67a66dec61cd195e6845df4a78b2437e281f6 (patch) | |
| tree | a1ece693eefc4665a410adc1b50246eead469f3b | |
| parent | cd53cb57724f23aa3eab000f9e3ad936c8a6a173 (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.java | 14 |
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); |