From 8a98b6b01278257abe99eba01ef9624aa06beebb Mon Sep 17 00:00:00 2001 From: badrAZ Date: Thu, 17 Sep 2020 09:35:42 +0200 Subject: [PATCH] feat(xo-server-audit/_uploadLastHash): check integrity sequentially (#5250) - implementation is simpler - stop on first error --- CHANGELOG.unreleased.md | 1 + packages/xo-server-audit/src/index.js | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.unreleased.md b/CHANGELOG.unreleased.md index d8acbd6ae..5ea53da80 100644 --- a/CHANGELOG.unreleased.md +++ b/CHANGELOG.unreleased.md @@ -35,5 +35,6 @@ > > In case of conflict, the highest (lowest in previous list) `$version` wins. +- xo-server-audit patch - xo-vmdk-to-vhd patch - xo-web minor diff --git a/packages/xo-server-audit/src/index.js b/packages/xo-server-audit/src/index.js index c6ed4209c..63f7efeb3 100644 --- a/packages/xo-server-audit/src/index.js +++ b/packages/xo-server-audit/src/index.js @@ -335,16 +335,18 @@ class AuditXoPlugin { } // check the integrity of all stored hashes - integrityCheckSuccess = await Promise.all( - hashes.map((oldest, key) => - oldest !== lastHash - ? this._checkIntegrity({ oldest, newest: hashes[key + 1] }) - : true - ) - ).then( - () => true, - () => false - ) + try { + for (let i = 0; i < hashes.length - 1; ++i) { + await this._checkIntegrity({ + oldest: hashes[i], + newest: hashes[i + 1], + }) + } + + integrityCheckSuccess = true + } catch (_) { + integrityCheckSuccess = false + } } // generate a valid fingerprint of all stored records in case of a failure integrity check