On Wed, Jul 24, 2019 at 6:09 AM Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx> wrote: > > The kernel's snprintf() does not behave in a non-standard way, at least > not with respect to its return value. Note that the kernels snprintf() *does* very much protect against the overflow case - not by changing the return value, but simply by having /* Reject out-of-range values early. Large positive sizes are used for unknown buffer sizes. */ if (WARN_ON_ONCE(size > INT_MAX)) return 0; at the very top. So you can't actually overflow in the kernel by using the repeated offset += vsnprintf( .. size - offset ..); model. Yes, it's the wrong thing to do, but it is still _safe_. Linus