In _calculateStreamedAmount function of SablierV2LockupLinear contract, the start timestamp of the stream is not checked versus current timestamp, which leads to overflow in math and as a result some functionalities do not work.
In _calculateStreamedAmount function, the calculation of streamed amount is done in unchecked block.
Since the validity of startTime is not checked in the function, so startTime can surely be bigger than blockTimestamp. For information, there's a validation of cliffTime but it is usually zero when there is no cliff time.
As a result, overflow in math occurs and elapsedTime will be near to type(uint256).max, and this big number causes a revert in div function because of overflow.
This means _calculateStreamedAmount function reverts when startTime > blockTimestamp`.
The issue specifically prevents senders from cancelling the stream before it starts.
Manual Review
There should be a validation where it returns zero if a stream is not started.
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.