mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
Fixed isIncrementedMangledName algorithm
This commit is contained in:
@@ -64,6 +64,7 @@ export class MangledIdentifierNamesGenerator extends AbstractIdentifierNamesGene
|
||||
* @param {string} prevName
|
||||
* @returns {boolean}
|
||||
*/
|
||||
// eslint-disable-next-line complexity
|
||||
public static isIncrementedMangledName (nextName: string, prevName: string): boolean {
|
||||
if (nextName === prevName) {
|
||||
return false;
|
||||
@@ -76,6 +77,8 @@ export class MangledIdentifierNamesGenerator extends AbstractIdentifierNamesGene
|
||||
return nextNameLength > prevNameLength;
|
||||
}
|
||||
|
||||
let isIncrementedPrevCharacter: boolean = false;
|
||||
|
||||
for (let i: number = 0; i < nextNameLength; i++) {
|
||||
const nextNameCharacter: string = nextName[i];
|
||||
const prevNameCharacter: string = prevName[i];
|
||||
@@ -84,6 +87,17 @@ export class MangledIdentifierNamesGenerator extends AbstractIdentifierNamesGene
|
||||
continue;
|
||||
}
|
||||
|
||||
const isDigitNextNameCharacter: boolean = MangledIdentifierNamesGenerator.isDigitCharacter(nextNameCharacter);
|
||||
const isDigitPrevNameCharacter: boolean = MangledIdentifierNamesGenerator.isDigitCharacter(prevNameCharacter);
|
||||
|
||||
if (
|
||||
isIncrementedPrevCharacter
|
||||
&& isDigitNextNameCharacter
|
||||
&& !isDigitPrevNameCharacter
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const isUpperCaseNextNameCharacter: boolean = MangledIdentifierNamesGenerator.isUpperCaseCharacter(nextNameCharacter);
|
||||
const isUpperCasePrevNameCharacter: boolean = MangledIdentifierNamesGenerator.isUpperCaseCharacter(prevNameCharacter);
|
||||
|
||||
@@ -98,6 +112,12 @@ export class MangledIdentifierNamesGenerator extends AbstractIdentifierNamesGene
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
isIncrementedPrevCharacter = nextNameCharacter > prevNameCharacter;
|
||||
|
||||
if (nextNameCharacter < prevNameCharacter) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return nextName > prevName;
|
||||
@@ -111,6 +131,14 @@ export class MangledIdentifierNamesGenerator extends AbstractIdentifierNamesGene
|
||||
return /^[A-Z]*$/.test(string);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} character
|
||||
* @returns {boolean}
|
||||
*/
|
||||
private static isDigitCharacter (string: string): boolean {
|
||||
return /^[0-9]*$/.test(string);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates next name based on a global previous mangled name
|
||||
* We can ignore nameLength parameter here, it hasn't sense with this generator
|
||||
|
||||
Reference in New Issue
Block a user