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 <sheogorath@shivering-isles.com>
This commit is contained in:
Sheogorath 2018-07-27 13:44:45 +02:00
parent 23bd1a18bb
commit 1f85017625
No known key found for this signature in database
GPG key ID: 1F05CC3635CDDFFD

View file

@ -31,6 +31,15 @@ function getHistory (userid, callback) {
history = JSON.parse(user.history) history = JSON.parse(user.history)
// migrate LZString encoded note id to base64url encoded note id // migrate LZString encoded note id to base64url encoded note id
for (let i = 0, l = history.length; i < l; i++) { 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 { try {
let id = LZString.decompressFromBase64(history[i].id) let id = LZString.decompressFromBase64(history[i].id)
if (id && models.Note.checkNoteIdValid(id)) { if (id && models.Note.checkNoteIdValid(id)) {