From 757e1e98c519961ccd036af7d7ce7f1dd2478118 Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Thu, 6 May 2021 17:30:50 +0100 Subject: [PATCH] [RedisManager] block updating of too large docs in redis --- services/document-updater/app/js/RedisManager.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/document-updater/app/js/RedisManager.js b/services/document-updater/app/js/RedisManager.js index d81c7151b3..418e3ec6d4 100644 --- a/services/document-updater/app/js/RedisManager.js +++ b/services/document-updater/app/js/RedisManager.js @@ -468,6 +468,13 @@ module.exports = RedisManager = { logger.error({ err: error, doc_id, newDocLines }, error.message) return callback(error) } + // Do a cheap size check on the serialized blob. + if (newDocLines.length > Settings.max_doc_length) { + const err = new Error('blocking doc update: doc is too large') + const docSize = newDocLines.length + logger.error({ project_id, doc_id, err, docSize }, err.message) + return callback(err) + } const newHash = RedisManager._computeHash(newDocLines) const opVersions = appliedOps.map((op) => (op != null ? op.v : undefined))