From 0e28348e160c5fa1122b1348691caeff5d79fc94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Mart=C3=ADn?= Date: Wed, 1 Aug 2018 15:48:24 +0200 Subject: [PATCH] manage JSON parse and stringify sinc errors --- lib/cartodb/backends/template_maps.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/cartodb/backends/template_maps.js b/lib/cartodb/backends/template_maps.js index d6ab6c46..ac1308cd 100644 --- a/lib/cartodb/backends/template_maps.js +++ b/lib/cartodb/backends/template_maps.js @@ -297,7 +297,6 @@ TemplateMaps.prototype.delTemplate = function(owner, tpl_id, callback) { // @param callback function(err) // TemplateMaps.prototype.updTemplate = function(owner, tpl_id, template, callback) { - template = templateDefaults(template); var invalidError = this._checkInvalidTemplate(template); @@ -320,7 +319,14 @@ TemplateMaps.prototype.updTemplate = function(owner, tpl_id, template, callback) return callback(new Error(`Template '${tpl_id}' of user '${owner}' does not exist`)); } - this._redisCmd('HSET', [userTemplatesKey, template.name, JSON.stringify(template)], (err, didSetNewField) => { + let templateString; + try { + templateString = JSON.stringify(template) + } catch (error) { + return callback(error); + } + + this._redisCmd('HSET', [userTemplatesKey, template.name, templateString], (err, didSetNewField) => { if (err) { return callback(err); } @@ -329,7 +335,14 @@ TemplateMaps.prototype.updTemplate = function(owner, tpl_id, template, callback) debug('New template created on update operation'); } - if (this.fingerPrint(JSON.parse(beforeUpdateTemplate)) !== this.fingerPrint(template)) { + let beforeUpdateTemplateObject; + try { + beforeUpdateTemplateObject = JSON.parse(beforeUpdateTemplate) + } catch (error) { + return callback(error); + } + + if (this.fingerPrint(beforeUpdateTemplateObject) !== this.fingerPrint(template)) { this.emit('update', owner, template.name, template); }