	public HomePageConfig loadConfigFor(Identity identity) {
		String userName = identity.getName();
		HomePageConfig retVal = null;
		File configFile = getConfigFile(userName);
		if (!configFile.exists()) {
			// config file does not exist! create one, init the defaults, save it.
			retVal = loadAndSaveDefaults(identity);
		} else {
			// file exists, load it with XStream, resolve version
			try {
				Object tmp = homeConfigXStream.fromXML(configFile);
				if (tmp instanceof HomePageConfig) {
					retVal = (HomePageConfig)tmp;
					if(retVal.resolveVersionIssues()) {
						saveConfigTo(identity, retVal);
					}
				}
			} catch (Exception e) {
				log.error("Error while loading homepage config from path::" + configFile.getAbsolutePath() + ", fallback to default configuration",
						e);
				FileUtils.deleteFile(configFile);
				retVal = loadAndSaveDefaults(identity);
				// show message to user
			}
		}
		return retVal;
	}
The software does not properly neutralize special elements that are used in XML, allowing attackers to modify the syntax, content, or commands of the XML before it is processed by an end system.