The function stakeVested in the contract FjordStaking.sol allows users to stake a sablier stream. Some streams can be canceled. Therefore the contract only allows authorizedSablierSenders to stake with such streams. The respecttive check is inside the stakeVested function here. But the check has a mistake and does not allow normal users to stake any stream.
The check in stakeVested reverts with StreamNotSupported if the sender of the stream is not set as part of the authorizedSablierSenders. But this check should only revert if the stream's sender is not set as part of the authorizedSablierSenders only if the stream can be canceled.
Users can not use the stakeVested function and therefor can not stake any vesting streams.
manual review
Run this test inside the existing stakeVested.t.sol test:
It will revert with StreamNotSupported, even though the stream is not cancelable.
Only check if the stream sender is set in the authorizedSablierSenders if the stream is cancelable. This can be checked with sablier.isCancelable(_streamID). Full diff:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.