Skip to content

Commit f8f551b

Browse files
fix: Recreate JSON-RPC request in MultichainRouter (#3086)
Recreate the JSON-RPC request in MultichainRouter to remove any unnecesary properties passed in from the middlewares in the client. This ensures that we don't leak unnecessary details to Snaps and also makes sure the requests are formatted as expected downstream.
1 parent 24ac367 commit f8f551b

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

packages/snaps-controllers/coverage.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"branches": 93.28,
2+
"branches": 93.31,
33
"functions": 96.8,
44
"lines": 98.15,
55
"statements": 97.88

packages/snaps-controllers/src/multichain/MultichainRouter.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
KnownCaipNamespace,
1919
parseCaipAccountId,
2020
} from '@metamask/utils';
21+
import { nanoid } from 'nanoid';
2122

2223
import { getRunnableSnaps } from '../snaps';
2324
import type { GetAllSnaps, HandleSnapRequest } from '../snaps';
@@ -291,7 +292,7 @@ export class MultichainRouter {
291292
connectedAddresses,
292293
origin,
293294
scope,
294-
request,
295+
request: rawRequest,
295296
}: {
296297
connectedAddresses: CaipAccountId[];
297298
origin: string;
@@ -304,6 +305,14 @@ export class MultichainRouter {
304305
!scope.startsWith('wallet:eip155'),
305306
);
306307

308+
// Re-create the request to simplify and remove additional properties that may be present in MM middleware.
309+
const request = {
310+
jsonrpc: '2.0' as const,
311+
id: rawRequest.id ?? nanoid(),
312+
method: rawRequest.method,
313+
params: rawRequest.params,
314+
};
315+
307316
const { method, params } = request;
308317

309318
// If the RPC request can be serviced by an account Snap, route it there.

0 commit comments

Comments
 (0)