https://github.com/Cyfrin/2024-10-sablier/blob/main/src/SablierFlow.sol#L189-L211
https://github.com/Cyfrin/2024-10-sablier/blob/main/src/SablierFlow.sol#L661-L669
According to the documentation a paused stream is a stream (not voided) that has an rps=0. To set this specific paused status the sender may call SablierFlow::Pause which at the end emits ISablierFlow.PauseFlowStream to confirm the changed status. However, he may get the same result by directly changing the rps stream value through SablierFlow::adjustRatePerSecond which at the end emits only another type of event.
The SablierFlow::adjustRatePerSecond does not take into account the value to which the stream rps should be changed. Therefore, it is possible to achieve the same status with the emission of two events that are totally different one another.
The emission of different events using different functions to achieve the same status may mislead the user, having also an impact on any front-end integration that may rely on events emitted to the final user (sender).
Manual review
Either allow the sender to use SablierFlow::adjustRatePerSecond only for new rps != 0 or emits at the end of the function the ISablierFlow.PauseFlowStream in case new rps == 0
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.