Submitted by Aymen0909, also found by juancito (1, 2), J4X, jasonxiale, niroh, neocrao, pina, erosjohn, 0xpiken, lilizhu, oakcobalt, n0kto, ZanyBonzy, pkqs90, Drynooo, zxriptor, Ephraim, LeoGold, 0xRobocop, 0xOmer, klau5, jesjupyter, and Beepidibop
https://github.com/code-423n4/2024-01-salty/blob/main/src/ManagedWallet.sol#L67-L69 
https://github.com/code-423n4/2024-01-salty/blob/main/src/ManagedWallet.sol#L48-L49
The receive function in ManagedWallet fails to reset the proposedMainWallet address to the zero address (address(0)) when the confirmation wallet rejects the wallet change:
This omission renders it impossible to submit new proposals for changing wallets in the future. After the confirmation wallet rejects for the first time, the proposedMainWallet remains different from address(0), causing the proposeWallets function to revert due to the check on the proposedMainWallet address:
After the first rejection of wallet changes, the proposeWallets function will consistently revert, making it impossible to change the main and confirmation wallets indefinitely.
The scenario for this issue to occurs is straightforward :
VS Code
In the receive function, reset the proposedMainWallet variable to address(0) after the confirmation process has been rejected (similar to the reset done in changeWallets()).
othernet-global (Salty.IO) confirmed and commented:
Picodes (Judge) decreased severity to Medium
Status: Mitigation confirmed. Full details in reports from t0x1c, 0xpiken, and [zzebra83].
