From 62328bf6f25e69cba3b325c08e68777b3aa5120e Mon Sep 17 00:00:00 2001 From: Alex Tugarev Date: Thu, 5 Sep 2019 12:41:06 +0000 Subject: [PATCH] [preferences] Reject invalid preference schemas. Fixes theia-ide/theia#6106 Signed-off-by: Alex Tugarev --- .../src/browser/preferences/preference-contribution.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/core/src/browser/preferences/preference-contribution.ts b/packages/core/src/browser/preferences/preference-contribution.ts index 0427495f48c88..1e69cbfced9b4 100644 --- a/packages/core/src/browser/preferences/preference-contribution.ts +++ b/packages/core/src/browser/preferences/preference-contribution.ts @@ -135,6 +135,13 @@ export class PreferenceSchemaProvider extends PreferenceProvider { } protected doSetSchema(schema: PreferenceSchema): PreferenceProviderDataChange[] { + const ajv = new Ajv(); + const valid = ajv.validateSchema(schema); + if (!valid) { + const errors = !!ajv.errors ? ajv.errorsText(ajv.errors) : 'unknown validation error'; + console.error('An invalid preference schema was rejected: ' + errors); + return []; + } const scope = PreferenceScope.Default; const domain = this.getDomain(); const changes: PreferenceProviderDataChange[] = [];