DragonFlyBSD Kernel Audit
← triage · dashboard
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.

Discussion (0)

No comments yet.