Prevent level order to be modified (#8821)

This commit is contained in:
Michael Weimann 2022-06-13 08:03:16 +02:00 committed by GitHub
parent 18d7f7c525
commit b87c537885
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 64 additions and 2 deletions

View file

@ -80,7 +80,8 @@ export const LEVEL_ORDER = [
function getLevelOrder(setting: ISetting): SettingLevel[] {
// Settings which support only a single setting level are inherently ordered
if (setting.supportedLevelsAreOrdered || setting.supportedLevels.length === 1) {
return setting.supportedLevels;
// return a copy to prevent callers from modifying the array
return [...setting.supportedLevels];
}
return LEVEL_ORDER;
}
@ -359,7 +360,7 @@ export default class SettingsStore {
if (!levelOrder.includes(SettingLevel.DEFAULT)) levelOrder.push(SettingLevel.DEFAULT); // always include default
const minIndex = levelOrder.indexOf(level);
if (minIndex === -1) throw new Error("Level " + level + " is not prioritized");
if (minIndex === -1) throw new Error(`Level "${level}" for setting "${settingName}" is not prioritized`);
const handlers = SettingsStore.getHandlers(settingName);