From 0e1c782fe458bea4f6bddb5394fae1dbb485bde3 Mon Sep 17 00:00:00 2001 From: Aarthika Date: Tue, 24 Oct 2017 10:11:20 +0530 Subject: [PATCH 1/2] Handling error during JSON parsing --- lib/memcached.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/memcached.js b/lib/memcached.js index 761b299..52ff179 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; From 9233a68b272f8a3d775682fdd9a17a1deb657773 Mon Sep 17 00:00:00 2001 From: Aarthika Date: Mon, 30 Oct 2017 14:19:40 +0530 Subject: [PATCH 2/2] Avoid hanging if the memcache value retrievd in not in a proper format --- lib/memcached.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/memcached.js b/lib/memcached.js index 52ff179..a8941af 100644 --- a/lib/memcached.js +++ b/lib/memcached.js @@ -808,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; + } + } } };