Skip to content

Commit

Permalink
Protect against malformed JSON data files
Browse files Browse the repository at this point in the history
  • Loading branch information
Bootjack committed Feb 21, 2017
1 parent 1672ba8 commit f1537a1
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
2 changes: 1 addition & 1 deletion src/commands/status.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const initialize = require('../init');
const {genericErrorHandler} = require('../utils');
const {itemSummaryFormatter} = require('../formatters');

function createStatusStream(items) {
function createStatusStream(items = []) {
return new Readable({
objectMode: true,
read() {
Expand Down
16 changes: 10 additions & 6 deletions src/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -97,16 +97,20 @@ function assignElementPropTypes(schema, element) {

function getSavedElements(filepath, schema) {
return new Promise((resolve, reject) => {
fs.readFile(filepath, (err, content) => {
if (err) {
if (err.code === 'ENOENT') {
fs.readFile(filepath, (readErr, content) => {
if (readErr) {
if (readErr.code === 'ENOENT') {
resolve([]);
} else {
reject(err);
reject(readErr);
}
} else {
const data = JSON.parse(content).map(assignElementPropTypes.bind(this, schema));
resolve(data);
try {
const data = JSON.parse(content).map(assignElementPropTypes.bind(this, schema));
resolve(data);
} catch (parseErr) {
reject(`Unable to parse saved data at ${filepath}\n`);
}
}
});
});
Expand Down

0 comments on commit f1537a1

Please sign in to comment.