From d8ac2e347df8abf72f6d5789c55534f8030b362d Mon Sep 17 00:00:00 2001 From: piuvas Date: Tue, 3 Jun 2025 12:45:42 -0300 Subject: [PATCH] improve type validation of attributionDomains. --- .../backend/src/core/activitypub/models/ApPersonService.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/core/activitypub/models/ApPersonService.ts b/packages/backend/src/core/activitypub/models/ApPersonService.ts index ae417b83ac..4832cbc653 100644 --- a/packages/backend/src/core/activitypub/models/ApPersonService.ts +++ b/packages/backend/src/core/activitypub/models/ApPersonService.ts @@ -54,6 +54,7 @@ import type { ApLoggerService } from '../ApLoggerService.js'; import type { ApImageService } from './ApImageService.js'; import type { IActor, ICollection, IObject, IOrderedCollection } from '../type.js'; +import { isArray } from 'util'; const nameLength = 128; const summaryLength = 2048; @@ -445,7 +446,7 @@ export class ApPersonService implements OnModuleInit, OnApplicationShutdown { makeNotesFollowersOnlyBefore: (person as any).makeNotesFollowersOnlyBefore ?? null, makeNotesHiddenBefore: (person as any).makeNotesHiddenBefore ?? null, emojis, - attributionDomains: person.attributionDomains?.every(x => typeof x === 'string') ? person.attributionDomains : [], + attributionDomains: (Array.isArray(person.attributionDomains) && person.attributionDomains.every(x => typeof x === 'string')) ? person.attributionDomains : [], })) as MiRemoteUser; let _description: string | null = null; @@ -629,7 +630,7 @@ export class ApPersonService implements OnModuleInit, OnApplicationShutdown { // We use "!== false" to handle incorrect types, missing / null values, and "default to true" logic. hideOnlineStatus: person.hideOnlineStatus !== false, isExplorable: person.discoverable !== false, - attributionDomains: person.attributionDomains?.every(x => typeof x === 'string') ? person.attributionDomains : [], + attributionDomains: (Array.isArray(person.attributionDomains) && person.attributionDomains.every(x => typeof x === 'string')) ? person.attributionDomains : [], ...(await this.resolveAvatarAndBanner(exist, person.icon, person.image, person.backgroundUrl).catch(() => ({}))), } as Partial & Pick;