From c00f1fc550f559938d5b0c8f5a2a959d7ea7105e Mon Sep 17 00:00:00 2001 From: Iro <155815508+Iro96@users.noreply.github.com> Date: Tue, 26 Aug 2025 16:51:35 +0700 Subject: [PATCH] Fix: prevent module peer overwrite on re-announce (#472) --- packages/server-runtime/src/index.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/server-runtime/src/index.ts b/packages/server-runtime/src/index.ts index f6bd4baf9..f54af95b9 100644 --- a/packages/server-runtime/src/index.ts +++ b/packages/server-runtime/src/index.ts @@ -98,11 +98,23 @@ function main() { const p = peers.get(peer.id) if (p) { unregisterModulePeer(p) - Object.assign(p, { authenticated: true, name: event.data.name }) + const { name, index } = event.data as { name: string, index?: number } + if (!name || typeof name !== 'string') { + send(peer, { type: 'error', data: { message: 'the field \'name\' must be a non-empty string for event \'module:announce\'' } }) + return + } + if (typeof index !== 'undefined') { + if (typeof index !== 'number' || index < 0) { + send(peer, { type: 'error', data: { message: 'the field \'index\' must be a non-negative number for event \'module:announce\'' } }) + return + } + } + Object.assign(p, { authenticated: true, name, index }) registerModulePeer(p, p.name, p.index) } return } + case 'ui:configure': { const { moduleName, moduleIndex, config } = event.data