DF-2438
Signed integer overflow in delay tick computation produces negative/erratic delays for large user-supplied millisecond values
Summary
_init user-supplied delay string parsed by atoi64 (uint64_t) then narrowed into int tmp (:141) before tmp*hz/1000 computed in plain int arithmetic (:142). For millisecond values >=~21474837 (about 5.96h depending on hz=100) tmp*hz overflows signed int. Wrap yields negative di->delay which silently disables delay (callout fires immediately) or wildly incorrect large positive delay pinning buffers in queue indefinitely (memory growth). Negative delay propagates to dp->expire=ticks+di->delay and callout_reset negative to_ticks.
No comments yet.