Skip to content

Commit ebd0d60

Browse files
authored
Merge branch 'master' into je-impersonation
2 parents 8bc9131 + cb2b92f commit ebd0d60

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

src/remote-config/condition-evaluator-internal.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -302,14 +302,15 @@ function compareSemanticVersions(
302302
const version1 = String(actualValue).split('.').map(Number);
303303
const version2 = targetValue.split('.').map(Number);
304304

305+
if (version1.length > MAX_LENGTH || version2.length > MAX_LENGTH) {
306+
return false;
307+
}
308+
305309
for (let i = 0; i < MAX_LENGTH; i++) {
306310
// Check to see if segments are present. Note that these may be present and be NaN.
307311
const version1HasSegment = version1[i] !== undefined;
308312
const version2HasSegment = version2[i] !== undefined;
309313

310-
// If both are undefined, we've consumed everything and they're equal.
311-
if (!version1HasSegment && !version2HasSegment) return predicateFn(0)
312-
313314
// Insert zeros if undefined for easier comparison.
314315
if (!version1HasSegment) version1[i] = 0;
315316
if (!version2HasSegment) version2[i] = 0;
@@ -321,5 +322,6 @@ function compareSemanticVersions(
321322
if (version1[i] < version2[i]) return predicateFn(-1);
322323
if (version1[i] > version2[i]) return predicateFn(1);
323324
}
324-
return false;
325+
// If this point is reached, the semantic versions are equal.
326+
return predicateFn(0);
325327
}

test/unit/remote-config/condition-evaluator.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1114,6 +1114,7 @@ describe('ConditionEvaluator', () => {
11141114
{ targets: ['5.12.3'], actual: '5.11.9', outcome: true },
11151115
{ targets: ['5.12.3'], actual: '5.12.3', outcome: true },
11161116
{ targets: ['5.12.3'], actual: '5.12.9', outcome: false },
1117+
{ targets: ['5.6.7.8.9'], actual: '5.6.7.8.9', outcome: true },
11171118
invalidNumericSignalTestCase,
11181119
];
11191120

@@ -1127,6 +1128,9 @@ describe('ConditionEvaluator', () => {
11271128
{ targets: ['5.0'], actual: 5.0, outcome: true },
11281129
{ targets: ['5.12.3'], actual: '5.12.9', outcome: false },
11291130
{ targets: ['5.12.3'], actual: '5.12.3.0.0.0.0', outcome: false },
1131+
{ targets: ['5.6.7.8.9'], actual: '5.6.7.8.9', outcome: true },
1132+
{ targets: ['5.6.7.8.9'], actual: '4.5.6.7.8', outcome: false },
1133+
{ targets: ['5.6.7.8.9.0'], actual: '5.6.7.8.9.0', outcome: false },
11301134
invalidNumericSignalTestCase,
11311135
];
11321136

@@ -1166,6 +1170,7 @@ describe('ConditionEvaluator', () => {
11661170
{ targets: ['5'], actual: 5.0, outcome: true },
11671171
{ targets: ['5.0'], actual: 5.0, outcome: true },
11681172
{ targets: ['5.12.3'], actual: '5.11.9', outcome: false },
1173+
{ targets: ['5.6.7.8.9'], actual: '5.6.7.8.9', outcome: true },
11691174
invalidNumericSignalTestCase
11701175
];
11711176

0 commit comments

Comments
 (0)