From 1f85017625bfd414f3b1a0d94ecbc37dc70d712a Mon Sep 17 00:00:00 2001 From: Sheogorath Date: Fri, 27 Jul 2018 13:44:45 +0200 Subject: [PATCH] Minimize number of errors in LZString parsing errors for history Right now we still see a lot of LZString parsing errors in the logs. They probably come from the user history. We should minimize the number by add the basic length check there as well. Signed-off-by: Sheogorath --- lib/history.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/history.js b/lib/history.js index c7d2472ca..63be45216 100644 --- a/lib/history.js +++ b/lib/history.js @@ -31,6 +31,15 @@ function getHistory (userid, callback) { history = JSON.parse(user.history) // migrate LZString encoded note id to base64url encoded note id for (let i = 0, l = history.length; i < l; i++) { + // Calculate minimal string length for an UUID that is encoded + // base64 encoded and optimize comparsion by using -1 + // this should make a lot of LZ-String parsing errors obsolete + // as we can assume that a nodeId that is 48 chars or longer is a + // noteID. + const base64UuidLength = ((4 * 36) / 3) - 1 + if (!(history[i].id.length > base64UuidLength)) { + continue + } try { let id = LZString.decompressFromBase64(history[i].id) if (id && models.Note.checkNoteIdValid(id)) {