]> git.ardis.lu - envpass/commitdiff
Fix broken regex (faulty `|` in version group)
authorArdis Lu <ardisglu@gmail.com>
Thu, 3 Sep 2026 05:33:45 +0000 (22:33 -0700)
committerArdis Lu <ardisglu@gmail.com>
Thu, 3 Sep 2026 05:34:50 +0000 (22:34 -0700)
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.

src/utils.js
test/utils.test.js

index a757e1b1191b61f8fbea23dbd185784fda08407a..9fed91fd3d215097264a1c5653d0bfa6374451d5 100644 (file)
@@ -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);
 }
 
 /**
index fd8ea415959250b78f95d29257c7ccf5d4e07cd3..51d6e083a4404d1621802eefadfb713ab06e89c8 100644 (file)
@@ -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) {
This page took 0.038093 seconds and 4 git commands to generate.