Fix forbidden sale copy and wire WarBow wallet profile modal #482
No reviewers
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:open_issues
agents
agent:security_audit
agent:verify
area
timecurve
arena
arena-v2
audit
block:feature_review
block:security
bug
contracts
design
devops
docs
documentation
enhancement
epic
feature
frontend
indexer
low priority
megaeth
operations
ops
performance
QA
qa checklist
referrals
removal
security
smart-contracts
tech-debt
testing
time-arena
timecurve
visual-qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
code/yieldomega!482
Loading…
Reference in a new issue
No description provided.
Delete branch "verify/issue-318-sale-copy-warbow-profile"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Verification for GitLab #318 found the acceptance work was not yet on
main. This MR:/play console withpreLaunchBuyGateMessage()(arena framing).onOpenWalletProfilethroughArenaWarbowHeroPanelrival rows (PlayerIdentity→ profile modal, not explorer).Test plan
/play consolecd frontend && npm test(arenaSimplePhase.test.ts,arenaCommandConsoleStatic.test.ts)arenaCommandConsoleStatic.test.tswiresonOpenProfile={onOpenWalletProfile}; Playwright on preview: SKIP targets not indexed (lane visible, no rivals without stack buys)preLaunchBuyGateMessage+revertMessage.test.tsTimeArena mappingsnpm run typecheckcd frontend && npm run typechecknpm run lintcd frontend && npm run lintnpm testcd frontend && npm test— 635 tests/bash scripts/e2e-anvil.sh— 6/6 anvil arena specshttp://127.0.0.1:4173/body scanbash scripts/verify-cloud-postgres.shFollow-ups
mentioned in issue #318
changed the description
changed the description
Security review — MR !482
Commit reviewed:
954f5ea3e29ce7c311098d9696fc6b39c1ef867dScope: Frontend-only diff — forbidden “sale” copy replaced with arena framing (
preLaunchBuyGateMessage,revertMessagemappings, session error string); WarBow rival rows wired to existingonOpenWalletProfile→WalletProfileModal;AddressInlineprofile click addsstopPropagation; WarBow target rows changed from nested<button>to<div role="option">with keyboard handlers.Method: Traced attacker-controlled inputs (indexer WarBow targets, manual steal-victim input, profile callback) through
PlayerIdentity→AddressInline(viemisAddressgate) →TimeArenaPagestate →WalletProfileModal→useWalletStats/useWalletProfileBalances(address length/prefix checks, parameterized indexer SQL,parseHexAddressfor RPC). No contract, indexer, auth, or dependency changes in this diff.Outcome:
FINDINGS: 0medium+Inline threads: none (no medium+ issues to anchor on the diff).
Security review: no medium+ findings on this diff.
added 89 commits
main5bc5822a- Merge main into verify/issue-318-sale-copy-warbow-profiled8840738- fix(frontend): type WarBow target list refs as div elementsf398cab1- test(frontend): align #318 copy guards after main mergeCompare with previous version
Resolved merge conflicts with
main:preLaunchBuyGateMessage()for the pre-launch buy gate (#318).arenaSaleSessionBuyPreflightextraction; updated preflight to say "arena state".stopPropagation.Sanity:
npm run typecheck,npm run lint, and targeted Vitest (#318 / WarBow / revert copy) — PASS.changed the description
Security review — MR !482
Commit reviewed:
f398cab1323fa99f06885098f6ac25a2c0140481Scope: Frontend-only diff — forbidden “sale” copy replaced with arena framing (
preLaunchBuyGateMessage,revertMessagemappings,arenaSaleSessionBuyPreflightstring); WarBow rival rows wired to existingonOpenWalletProfile→WalletProfileModal;AddressInlineprofile click addsevent.stopPropagation(); WarBow target rows changed from nested<button>to<div role="option">with roving keyboard focus andtargetIsInsideAddressActionclick guard. Test-only copy guards. No contract, indexer, auth, or dependency changes in the MR diff.Method: Traced attacker-controlled inputs (indexer WarBow targets via
buildWarbowTargets+isAddress, manual steal-victim input, profile callback address) throughPlayerIdentity→AddressInline(viemisAddressgate, React text rendering) →TimeArenaPagestate →WalletProfileModal→useWalletStats/useWalletProfileBalances(0x+42-char enablement,parseHexAddressfor RPC, parameterized indexer path). Compared against prior review on954f5eaafter main merge (5bc5822a,d8840738,f398cab).Outcome:
FINDINGS: 0medium+Inline threads: none (no medium+ issues to anchor on the diff).
Security review: no medium+ findings on this diff.
mentioned in commit
e4f06c1524