summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSvet Ganov <svetoslavganov@google.com>2015-04-22 20:44:19 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-04-22 20:44:20 +0000
commitdb30ac84b6bcfb33aea0443e847653f7ad876761 (patch)
treee41b2fc4f3030c82d21d1be40856ce84faba91b6
parent3797a788dc187cdffbdc034a1d4f9791432dac67 (diff)
parentba0821ed3bc2536be02df1ae850619b111cbd6f4 (diff)
downloadframeworks_base-db30ac84b6bcfb33aea0443e847653f7ad876761.zip
frameworks_base-db30ac84b6bcfb33aea0443e847653f7ad876761.tar.gz
frameworks_base-db30ac84b6bcfb33aea0443e847653f7ad876761.tar.bz2
Merge "Make read/write from/to XML persistent state more robust."
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java11
-rw-r--r--services/core/java/com/android/server/pm/Settings.java12
2 files changed, 15 insertions, 8 deletions
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
index c7092b3..0385d1e 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
@@ -383,8 +383,9 @@ final class SettingsState {
Slog.i(LOG_TAG, "[PERSIST END]");
}
- } catch (IOException e) {
- Slog.wtf(LOG_TAG, "Failed to write settings, restoring backup", e);
+ // Any error while writing is fatal.
+ } catch (Throwable t) {
+ Slog.wtf(LOG_TAG, "Failed to write settings, restoring backup", t);
destination.failWrite(out);
} finally {
IoUtils.closeQuietly(out);
@@ -406,9 +407,11 @@ final class SettingsState {
XmlPullParser parser = Xml.newPullParser();
parser.setInput(in, null);
parseStateLocked(parser);
- } catch (XmlPullParserException | IOException ise) {
+
+ // Any error while parsing is fatal.
+ } catch (Throwable t) {
throw new IllegalStateException("Failed parsing settings file: "
- + mStatePersistFile , ise);
+ + mStatePersistFile , t);
} finally {
IoUtils.closeQuietly(in);
}
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index f3fdb0d..b3aa966 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -4269,9 +4269,11 @@ final class Settings {
serializer.endTag(null, TAG_RUNTIME_PERMISSIONS);
serializer.endDocument();
destination.finishWrite(out);
- } catch (IOException e) {
+
+ // Any error while writing is fatal.
+ } catch (Throwable t) {
Slog.wtf(PackageManagerService.TAG,
- "Failed to write settings, restoring backup", e);
+ "Failed to write settings, restoring backup", t);
destination.failWrite(out);
} finally {
IoUtils.closeQuietly(out);
@@ -4319,9 +4321,11 @@ final class Settings {
XmlPullParser parser = Xml.newPullParser();
parser.setInput(in, null);
parseRuntimePermissionsLPr(parser, userId);
- } catch (XmlPullParserException | IOException ise) {
+
+ // Any error while parsing is fatal.
+ } catch (Throwable t) {
throw new IllegalStateException("Failed parsing permissions file: "
- + permissionsFile , ise);
+ + permissionsFile , t);
} finally {
IoUtils.closeQuietly(in);
}