From: Ardis Lu Date: Thu, 3 Sep 2026 05:33:45 +0000 (-0700) Subject: Fix broken regex (faulty `|` in version group) X-Git-Url: https://git.ardis.lu/?a=commitdiff_plain;h=5d0379ea4ecee3cb5c082954437148086e899e86;p=envpass Fix broken regex (faulty `|` in version group) This issue was not caught because `ENVPASS_VERSIONS` has only ever had one value, so the `|` in the regex was never used. The new test cases will catch this error when `ENVPASS_VERSIONS` has at least two values. --- diff --git a/src/utils.js b/src/utils.js index a757e1b..9fed91f 100644 --- a/src/utils.js +++ b/src/utils.js @@ -48,7 +48,7 @@ const ENVPASS_VERSIONS = /** @type {const} */(['v1']); * @returns {value is EnvpassEncryptedValue} */ function isEnvpassEncrypted(value) { - return new RegExp(`^envpass:${ENVPASS_VERSIONS.join('|')}:.+`).test(value); + return new RegExp(`^envpass:(${ENVPASS_VERSIONS.join('|')}):.+`).test(value); } /** diff --git a/test/utils.test.js b/test/utils.test.js index fd8ea41..51d6e08 100644 --- a/test/utils.test.js +++ b/test/utils.test.js @@ -30,10 +30,14 @@ suite('parseEnvpassEncrypted', { concurrency: true }, () => { { name: 'rejects empty', input: '' }, { name: 'rejects empty with colons', input: '::' }, { name: 'rejects missing magic', input: ':v1:rXAhBNXZFsLl8EtZm3GHAZttZyLYP3j97Yy4qly53wBodRyyKYi8PlxjOlggc7mVLA/HoME4QSKdhuEs3C4UKvo0J3ZAV+JbrzfZbsBJ3tvvG4/UEVxB1+0IPoUyjhoO' }, + { name: 'rejects missing magic without colon', input: 'v1:rXAhBNXZFsLl8EtZm3GHAZttZyLYP3j97Yy4qly53wBodRyyKYi8PlxjOlggc7mVLA/HoME4QSKdhuEs3C4UKvo0J3ZAV+JbrzfZbsBJ3tvvG4/UEVxB1+0IPoUyjhoO' }, { name: 'rejects missing version', input: 'envpass::rXAhBNXZFsLl8EtZm3GHAZttZyLYP3j97Yy4qly53wBodRyyKYi8PlxjOlggc7mVLA/HoME4QSKdhuEs3C4UKvo0J3ZAV+JbrzfZbsBJ3tvvG4/UEVxB1+0IPoUyjhoO' }, + { name: 'rejects missing version without colon', input: 'envpass:rXAhBNXZFsLl8EtZm3GHAZttZyLYP3j97Yy4qly53wBodRyyKYi8PlxjOlggc7mVLA/HoME4QSKdhuEs3C4UKvo0J3ZAV+JbrzfZbsBJ3tvvG4/UEVxB1+0IPoUyjhoO' }, { name: 'rejects missing string', input: 'envpass:v1:' }, + { name: 'rejects missing string without colon', input: 'envpass:v1' }, { name: 'rejects invalid magic', input: 'INVALID:v1:rXAhBNXZFsLl8EtZm3GHAZttZyLYP3j97Yy4qly53wBodRyyKYi8PlxjOlggc7mVLA/HoME4QSKdhuEs3C4UKvo0J3ZAV+JbrzfZbsBJ3tvvG4/UEVxB1+0IPoUyjhoO' }, { name: 'rejects invalid version', input: 'envpass:INVALID:rXAhBNXZFsLl8EtZm3GHAZttZyLYP3j97Yy4qly53wBodRyyKYi8PlxjOlggc7mVLA/HoME4QSKdhuEs3C4UKvo0J3ZAV+JbrzfZbsBJ3tvvG4/UEVxB1+0IPoUyjhoO' }, + { name: 'rejects invalid version with valid first characters', input: 'envpass:v111111111:rXAhBNXZFsLl8EtZm3GHAZttZyLYP3j97Yy4qly53wBodRyyKYi8PlxjOlggc7mVLA/HoME4QSKdhuEs3C4UKvo0J3ZAV+JbrzfZbsBJ3tvvG4/UEVxB1+0IPoUyjhoO' }, { name: 'rejects leading whitespace', input: ' envpass:v1:rXAhBNXZFsLl8EtZm3GHAZttZyLYP3j97Yy4qly53wBodRyyKYi8PlxjOlggc7mVLA/HoME4QSKdhuEs3C4UKvo0J3ZAV+JbrzfZbsBJ3tvvG4/UEVxB1+0IPoUyjhoO' }, ]; for (const { name, input } of rejects) {