diff --git a/lib/memcached.js b/lib/memcached.js index 761b299..a8941af 100644 --- a/lib/memcached.js +++ b/lib/memcached.js @@ -516,8 +516,15 @@ Client.config = { switch (flag) { case FLAG_JSON: - dataSet = JSON.parse(dataSet); - break; + try { + dataSet = JSON.parse(dataSet); + break; + } catch (err) { + dataSet = null; + err.push(new Error('error during JSON parsing')); + break; + } + case FLAG_NUMERIC: dataSet = +dataSet; break; @@ -801,6 +808,15 @@ Client.config = { // check if we need to remove an empty item from the array, as splitting on /r/n might cause an empty // item at the end.. if (S.bufferArray[0] === '') S.bufferArray.shift(); + + while (S.bufferArray.length){ + if(!privates.allCommands.test(S.bufferArray[0])) { + err.push(new Error('unknown command in memcache data')); + S.bufferArray.shift(); + } else { + break; + } + } } };