From 1af7f37fcd45345b2e791a30cf6dc2f24c2e4dcf Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Mon, 31 Mar 2025 17:30:26 +0200 Subject: [PATCH] trust the header value for telemetry (#245139) --- .../common/extensionGalleryService.ts | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/vs/platform/extensionManagement/common/extensionGalleryService.ts b/src/vs/platform/extensionManagement/common/extensionGalleryService.ts index a0afbe7f79f..2d5de5f3aba 100644 --- a/src/vs/platform/extensionManagement/common/extensionGalleryService.ts +++ b/src/vs/platform/extensionManagement/common/extensionGalleryService.ts @@ -30,6 +30,7 @@ import { StopWatch } from '../../../base/common/stopwatch.js'; import { format2 } from '../../../base/common/strings.js'; import { IAssignmentService } from '../../assignment/common/assignment.js'; import { ExtensionGalleryResourceType, Flag, getExtensionGalleryManifestResourceUri, IExtensionGalleryManifest, IExtensionGalleryManifestService } from './extensionGalleryManifest.js'; +import { TelemetryTrustedValue } from '../../telemetry/common/telemetryUtils.js'; const CURRENT_TARGET_PLATFORM = isWeb ? TargetPlatform.WEB : getTargetPlatform(platform, arch); const SEARCH_ACTIVITY_HEADER_NAME = 'X-Market-Search-Activity-Id'; @@ -198,9 +199,9 @@ type GalleryServiceQueryEvent = QueryTelemetryData & { readonly statusCode?: string; readonly errorCode?: string; readonly count?: string; - readonly server?: string; - readonly endToEndId?: string; - readonly activityId?: string; + readonly server?: TelemetryTrustedValue; + readonly endToEndId?: TelemetryTrustedValue; + readonly activityId?: TelemetryTrustedValue; }; type GalleryServiceAdditionalQueryClassification = { @@ -1379,9 +1380,10 @@ export abstract class AbstractExtensionGalleryService implements IExtensionGalle } } - private getHeaderValue(headers: IHeaders | undefined, name: string): string | undefined { - const value = headers?.[name.toLowerCase()]; - return Array.isArray(value) ? value[0] : value; + private getHeaderValue(headers: IHeaders | undefined, name: string): TelemetryTrustedValue | undefined { + const headerValue = headers?.[name.toLowerCase()]; + const value = Array.isArray(headerValue) ? headerValue[0] : headerValue; + return value ? new TelemetryTrustedValue(value) : undefined; } private async getLatestRawGalleryExtension(extension: string, uri: URI, token: CancellationToken): Promise { @@ -1453,9 +1455,9 @@ export abstract class AbstractExtensionGalleryService implements IExtensionGalle host: string; duration: number; errorCode?: string; - server?: string; - activityId?: string; - endToEndId?: string; + server?: TelemetryTrustedValue; + activityId?: TelemetryTrustedValue; + endToEndId?: TelemetryTrustedValue; }; this.telemetryService.publicLog2('galleryService:getLatest', { extension, @@ -1711,9 +1713,9 @@ export abstract class AbstractExtensionGalleryService implements IExtensionGalle assetType: string; message: string; extensionVersion: string; - server?: string; - endToEndId?: string; - activityId?: string; + server?: TelemetryTrustedValue; + endToEndId?: TelemetryTrustedValue; + activityId?: TelemetryTrustedValue; }; this.telemetryService.publicLog2('galleryService:cdnFallback', { extension,