From 9437444cf55cc2bb962aff7a031dda01533d72ee Mon Sep 17 00:00:00 2001 From: Nate Myren Date: Fri, 19 Apr 2024 19:07:34 +0000 Subject: Only try to initialize appcompat properties if the folder is present If the Init process doesn't write the appcompat system properties folder, do not attempt to initialize it Bug: 331307495 Test: manual (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:d071e949a6153e76eb7c67e5947d4d387a8afe2d) Merged-In: I21716ea87e55a63a1b79127887c451d0fcf006f3 Change-Id: I21716ea87e55a63a1b79127887c451d0fcf006f3 --- libc/system_properties/system_properties.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/libc/system_properties/system_properties.cpp b/libc/system_properties/system_properties.cpp index 9dd5e35ce..1dedb61e7 100644 --- a/libc/system_properties/system_properties.cpp +++ b/libc/system_properties/system_properties.cpp @@ -120,14 +120,18 @@ bool SystemProperties::AreaInit(const char* filename, bool* fsetxattr_failed, return false; } - auto* appcompat_contexts = new (appcompat_override_contexts_data_) ContextsSerialized(); appcompat_filename_ = PropertiesFilename(properties_filename_.c_str(), "appcompat_override"); - if (!appcompat_contexts->Initialize(true, appcompat_filename_.c_str(), fsetxattr_failed, - load_default_path)) { - appcompat_override_contexts_ = nullptr; - return false; + appcompat_override_contexts_ = nullptr; + if (access(appcompat_filename_.c_str(), F_OK) != -1) { + auto* appcompat_contexts = new (appcompat_override_contexts_data_) ContextsSerialized(); + if (!appcompat_contexts->Initialize(true, appcompat_filename_.c_str(), fsetxattr_failed, + load_default_path)) { + // The appcompat folder exists, but initializing it failed + return false; + } else { + appcompat_override_contexts_ = appcompat_contexts; + } } - appcompat_override_contexts_ = appcompat_contexts; initialized_ = true; return true; -- cgit v1.2.3