1
0
mirror of https://github.com/moparisthebest/k-9 synced 2024-11-27 11:42:16 -05:00

Validate file format version and content version of settings file

This commit is contained in:
cketti 2011-10-18 01:30:41 +02:00
parent e7ad0e296e
commit 9fa802afe2

View File

@ -664,11 +664,17 @@ public class SettingsImporter {
private static Imported parseRoot(XmlPullParser xpp, boolean globalSettings,
List<String> accountUuids, boolean overview)
throws XmlPullParserException, IOException {
throws XmlPullParserException, IOException, SettingsImportExportException {
Imported result = new Imported();
//TODO: check version attribute
String fileFormatVersionString = xpp.getAttributeValue(null,
SettingsExporter.FILE_FORMAT_ATTRIBUTE);
validateFileFormatVersion(fileFormatVersionString);
String contentVersionString = xpp.getAttributeValue(null,
SettingsExporter.VERSION_ATTRIBUTE);
validateContentVersion(contentVersionString);
int eventType = xpp.next();
while (!(eventType == XmlPullParser.END_TAG &&
@ -709,6 +715,52 @@ public class SettingsImporter {
return result;
}
private static int validateFileFormatVersion(String versionString)
throws SettingsImportExportException {
if (versionString == null) {
throw new SettingsImportExportException("Missing file format version");
}
int version;
try {
version = Integer.parseInt(versionString);
} catch (NumberFormatException e) {
throw new SettingsImportExportException("Invalid file format version: " +
versionString);
}
if (version != SettingsExporter.FILE_FORMAT_VERSION) {
throw new SettingsImportExportException("Unsupported file format version: " +
versionString);
}
return version;
}
private static int validateContentVersion(String versionString)
throws SettingsImportExportException {
if (versionString == null) {
throw new SettingsImportExportException("Missing content version");
}
int version;
try {
version = Integer.parseInt(versionString);
} catch (NumberFormatException e) {
throw new SettingsImportExportException("Invalid content version: " +
versionString);
}
if (version != Settings.VERSION) {
throw new SettingsImportExportException("Unsupported content version: " +
versionString);
}
return version;
}
private static ImportedSettings parseSettings(XmlPullParser xpp, String endTag)
throws XmlPullParserException, IOException {