diff options
| author | piuvas <mail@piuvas.net> | 2025-06-03 12:45:42 -0300 |
|---|---|---|
| committer | piuvas <mail@piuvas.net> | 2025-06-03 12:45:42 -0300 |
| commit | d8ac2e347df8abf72f6d5789c55534f8030b362d (patch) | |
| tree | 994b2545819020d7fd56006feaf7d0d66e627b60 | |
| parent | validate type of attributionDomains. (diff) | |
| download | sharkey-d8ac2e347df8abf72f6d5789c55534f8030b362d.tar.gz sharkey-d8ac2e347df8abf72f6d5789c55534f8030b362d.tar.bz2 sharkey-d8ac2e347df8abf72f6d5789c55534f8030b362d.zip | |
improve type validation of attributionDomains.
| -rw-r--r-- | packages/backend/src/core/activitypub/models/ApPersonService.ts | 5 |
1 files 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<MiRemoteUser> & Pick<MiRemoteUser, 'isBot' | 'isCat' | 'speakAsCat' | 'isLocked' | 'movedToUri' | 'alsoKnownAs' | 'isExplorable'>; |