From 7beb796adbd644c96e32addec79fde33df3d7424 Mon Sep 17 00:00:00 2001 From: trevor-signal <131492920+trevor-signal@users.noreply.github.com> Date: Tue, 18 Aug 2026 14:40:06 -0400 Subject: [PATCH] FIlter result of postBatchIdentityCheck --- ts/textsecure/WebAPI.preload.ts | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/ts/textsecure/WebAPI.preload.ts b/ts/textsecure/WebAPI.preload.ts index c5b5869780..96bc02cbca 100644 --- a/ts/textsecure/WebAPI.preload.ts +++ b/ts/textsecure/WebAPI.preload.ts @@ -2306,29 +2306,31 @@ export async function registerCapabilities( export async function postBatchIdentityCheck( elements: VerifyServiceIdRequestType ): Promise { - const res = await _ajax({ + const result = await _ajax({ host: 'chatService', data: JSON.stringify({ elements }), call: 'batchIdentityCheck', httpType: 'POST', unauthenticated: true, responseType: 'json', - // TODO DESKTOP-8719 - zodSchema: z.unknown(), + zodSchema: verifyServiceIdResponse, }); - const result = safeParseUnknown(verifyServiceIdResponse, res); + // Guard against server returning keys for uuids that we did not request + const submittedUuids = new Set(elements.map(el => el.uuid)); - if (result.success) { - return result.data; - } - - log.error( - 'invalid response from postBatchIdentityCheck', - toLogFormat(result.error) + const filtered = result.elements.filter(uuidAndKeyHash => + submittedUuids.has(uuidAndKeyHash.uuid) ); - throw result.error; + if (filtered.length !== result.elements.length) { + log.error( + 'postBatchIdentityCheck: server returned ' + + `${result.elements.length - filtered.length} unrequested uuids` + ); + } + + return { elements: filtered }; } function getProfileUrl(