On Fri, 2025-05-30 at 11:13 +0000, Krzysztof Karas wrote:
> Hi Jeff,
> 
> [...]
> > +static void __ostream_printf pr_ostream_buf(struct ostream *stream, char 
> > *fmt, ...)
> > +{
> > +   int ret, len = stream->size - stream->used;
> > +   va_list args;
> > +
> > +   va_start(args, fmt);
> > +   ret = vsnprintf(stream->buf + stream->used, len, fmt, args);
> vsnprintf() technically may return a negative error code.
> In that case, we'd be adding some unwanted values to the
> stream->used. When we encounter an error we could skip
> modifying that field.
> 
> > +   va_end(args);
> > +   stream->used += min(ret, len);
> > +}
> > +
> [...]
> 

Good catch. I'll change this to be:

        va_start(args, fmt);
        ret = vsnprintf(stream->buf + stream->used, len, fmt, args);
        va_end(args);
        if (ret > 0)
                stream->used += min(ret, len);

-- 
Jeff Layton <jlay...@kernel.org>

Reply via email to