> Several strlcat() call sites being converted to seq_buf need behavior > seq_buf doesn't currently provide. The return from seq_buf_used() is > not the length of the string in a seq_buf. Once the buffer is full or > has overflowed it returns the buffer size, which counts the byte that > seq_buf_str() replaces with the NUL, so a caller that needs the string > and its length has to call seq_buf_str() and then walk the string with > strlen(). > > Move the termination out of seq_buf_str() into a helper that returns > where it put the NUL, and add seq_buf_strlen(), which terminates the > buffer in the same way and returns that offset. > > As discussed in review, don't add WARN_ON() for seq_buf_strlen() and > drop it from seq_buf_str(). > > Add tests comparing seq_buf_strlen() against strlen() of seq_buf_str() > for empty, appended, truncated, exactly full, and overflowed buffers, > checking that seq_buf_strlen() alone terminates a full buffer, and > checking that a zero-sized seq_buf reports an empty string from both > accessors without touching the buffer. > > Tests passed under qemu on ARCH=x86_64 with GCC 16.2.0 and CONFIG_KASAN=y, > and on big-endian ARCH=s390 with GCC s390x-linux-gnu 16.2.0. > > Assisted-by: LLM > Reviewed-by: Andy Shevchenko <[email protected]> > Signed-off-by: Kees Cook <[email protected]>
Sashiko has reviewed this patch and found no issues. It looks great! -- Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=5
