Repository navigation
Centralize app persistence in SQLite and harden state/event flows - #86
Merged
Merged
MacroscopeApp / Macroscope - Correctness Check
completed
Feb 21, 2026 in 4m 15s
2 issues identified (17 code objects reviewed).
• Merge Base:
b9bb89c
• Head:f8aadcf
Details
| ✅ | File Path | Comments Posted |
|---|---|---|
| ✅ | apps/server/src/persistenceService.ts |
0 |
| ✅ | apps/server/src/wsServer.ts |
0 |
| ❌ | apps/web/src/routes/__root.tsx |
2 |
| ✅ | apps/web/src/wsNativeApi.ts |
0 |
| ✅ | packages/contracts/src/ipc.ts |
0 |
| ✅ | packages/contracts/src/provider.ts |
0 |
Filtered Issues Details
apps/server/src/wsServer.ts
- line 338: The
WS_METHODS.providersCatchUphandler inwsServer.tscallspersistenceService.providerCatchUpusing user-controlled parameters (request.params). The underlyingproviderCatchUpimplementation inpersistenceService.ts(visible in the provided diff/references) uses thelimitparameter directly in a SQLLIMITclause and loads all resulting rows into memory using.all(). Because there is no server-side upper bound enforcement onlimitin the shown code, a client can send a very large number (or-1for all rows), causing the server to attempt to load an unbounded number of events into memory. This creates a high-risk Out-Of-Memory (OOM) vector reachable via the WebSocket API. [ Already posted ]
Loading