Skip to content

Commit 6a900fc

Browse files
authored
1 parent 6ce1ad6 commit 6a900fc

File tree

3 files changed

+7
-20
lines changed

3 files changed

+7
-20
lines changed

src/vs/platform/extensionManagement/common/abstractExtensionManagementService.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
IExtensionsControlManifest, StatisticType, isTargetPlatformCompatible, TargetPlatformToString, ExtensionManagementErrorCode, IServerExtensionManagementService,
1818
ServerInstallOptions, ServerInstallVSIXOptions, ServerUninstallOptions, Metadata, ServerInstallExtensionEvent, ServerInstallExtensionResult, ServerUninstallExtensionEvent, ServerDidUninstallExtensionEvent
1919
} from 'vs/platform/extensionManagement/common/extensionManagement';
20-
import { areSameExtensions, ExtensionKey, getGalleryExtensionTelemetryData, getLocalExtensionTelemetryData, getMaliciousExtensionsSet } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
20+
import { areSameExtensions, ExtensionKey, getGalleryExtensionTelemetryData, getLocalExtensionTelemetryData } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
2121
import { ExtensionType, IExtensionManifest, isApplicationScopedExtension, TargetPlatform } from 'vs/platform/extensions/common/extensions';
2222
import { ILogService } from 'vs/platform/log/common/log';
2323
import { IProductService } from 'vs/platform/product/common/productService';
@@ -364,8 +364,8 @@ export abstract class AbstractExtensionManagementService extends Disposable impl
364364
}
365365

366366
private async checkAndGetCompatibleVersion(extension: IGalleryExtension, sameVersion: boolean, installPreRelease: boolean): Promise<{ extension: IGalleryExtension; manifest: IExtensionManifest }> {
367-
const report = await this.getExtensionsControlManifest();
368-
if (getMaliciousExtensionsSet(report).has(extension.identifier.id)) {
367+
const extensionsControlManifest = await this.getExtensionsControlManifest();
368+
if (extensionsControlManifest.malicious.some(identifier => areSameExtensions(extension.identifier, identifier))) {
369369
throw new ExtensionManagementError(nls.localize('malicious extension', "Can't install '{0}' extension since it was reported to be problematic.", extension.identifier.id), ExtensionManagementErrorCode.Malicious);
370370
}
371371

src/vs/platform/extensionManagement/common/extensionManagementUtil.ts

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { compareIgnoreCase } from 'vs/base/common/strings';
7-
import { IExtensionIdentifier, IGalleryExtension, ILocalExtension, IExtensionsControlManifest, getTargetPlatform } from 'vs/platform/extensionManagement/common/extensionManagement';
7+
import { IExtensionIdentifier, IGalleryExtension, ILocalExtension, getTargetPlatform } from 'vs/platform/extensionManagement/common/extensionManagement';
88
import { ExtensionIdentifier, IExtension, TargetPlatform } from 'vs/platform/extensions/common/extensions';
99
import { IFileService } from 'vs/platform/files/common/files';
1010
import { isLinux, platform } from 'vs/base/common/platform';
@@ -146,18 +146,6 @@ export function getGalleryExtensionTelemetryData(extension: IGalleryExtension):
146146

147147
export const BetterMergeId = new ExtensionIdentifier('pprice.better-merge');
148148

149-
export function getMaliciousExtensionsSet(manifest: IExtensionsControlManifest): Set<string> {
150-
const result = new Set<string>();
151-
152-
if (manifest.malicious) {
153-
for (const extension of manifest.malicious) {
154-
result.add(extension.id);
155-
}
156-
}
157-
158-
return result;
159-
}
160-
161149
export function getExtensionDependencies(installedExtensions: ReadonlyArray<IExtension>, extension: IExtension): IExtension[] {
162150
const dependencies: IExtension[] = [];
163151
const extensions = extension.manifest.extensionDependencies?.slice(0) ?? [];

src/vs/workbench/contrib/extensions/browser/extensionsViewlet.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storag
3333
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
3434
import { IContextKeyService, ContextKeyExpr, RawContextKey, IContextKey } from 'vs/platform/contextkey/common/contextkey';
3535
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
36-
import { getMaliciousExtensionsSet } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
3736
import { ILogService } from 'vs/platform/log/common/log';
3837
import { INotificationService } from 'vs/platform/notification/common/notification';
3938
import { IHostService } from 'vs/workbench/services/host/browser/host';
@@ -60,6 +59,7 @@ import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/b
6059
import { coalesce } from 'vs/base/common/arrays';
6160
import { extractEditorsAndFilesDropData } from 'vs/platform/dnd/browser/dnd';
6261
import { extname } from 'vs/base/common/resources';
62+
import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
6363

6464
const SearchMarketplaceExtensionsContext = new RawContextKey<boolean>('searchMarketplaceExtensions', false);
6565
const SearchIntalledExtensionsContext = new RawContextKey<boolean>('searchInstalledExtensions', false);
@@ -807,12 +807,11 @@ export class MaliciousExtensionChecker implements IWorkbenchContribution {
807807
}
808808

809809
private checkForMaliciousExtensions(): Promise<void> {
810-
return this.extensionsManagementService.getExtensionsControlManifest().then(report => {
811-
const maliciousSet = getMaliciousExtensionsSet(report);
810+
return this.extensionsManagementService.getExtensionsControlManifest().then(extensionsControlManifest => {
812811

813812
return this.extensionsManagementService.getInstalled(ExtensionType.User).then(installed => {
814813
const maliciousExtensions = installed
815-
.filter(e => maliciousSet.has(e.identifier.id));
814+
.filter(e => extensionsControlManifest.malicious.some(identifier => areSameExtensions(e.identifier, identifier)));
816815

817816
if (maliciousExtensions.length) {
818817
return Promises.settled(maliciousExtensions.map(e => this.extensionsManagementService.uninstall(e).then(() => {

0 commit comments

Comments
 (0)