Improve defence against corrupt skins

This commit is contained in:
Jordan Eldredge 2018-07-11 16:36:34 -07:00
parent e1e4d986e4
commit 535991b4b4
2 changed files with 23 additions and 13 deletions

View file

@ -35,9 +35,13 @@ class Shooter {
_validateZip(u) {
return new Promise((resolve, reject) => {
fs.readFile(u, (err, buffer) => {
JSZip.loadAsync(buffer).then(resolve, reject);
});
try {
fs.readFile(u, (err, buffer) => {
JSZip.loadAsync(buffer).then(resolve, reject);
});
} catch (e) {
reject(e);
}
});
}

View file

@ -82,16 +82,22 @@ export function loadFilesFromReferences(
export function setSkinFromArrayBuffer(arrayBuffer) {
return async dispatch => {
dispatch({ type: LOADING });
const skinData = await skinParser(arrayBuffer);
dispatch({
type: SET_SKIN_DATA,
skinImages: skinData.images,
skinColors: skinData.colors,
skinPlaylistStyle: skinData.playlistStyle,
skinCursors: skinData.cursors,
skinRegion: skinData.region,
skinGenLetterWidths: skinData.genLetterWidths
});
try {
const skinData = await skinParser(arrayBuffer);
dispatch({
type: SET_SKIN_DATA,
skinImages: skinData.images,
skinColors: skinData.colors,
skinPlaylistStyle: skinData.playlistStyle,
skinCursors: skinData.cursors,
skinRegion: skinData.region,
skinGenLetterWidths: skinData.genLetterWidths
});
} catch (e) {
console.error(e);
dispatch({ type: LOADED });
alert(`Failed to parse skin`);
}
};
}