On Sat, Jun 14, 2025 at 6:42 AM John Baldwin <j...@freebsd.org> wrote:
>
> On 6/12/25 21:21, Warner Losh wrote:
> > The branch main has been updated by imp:
> >
> > URL: 
> > https://cgit.FreeBSD.org/src/commit/?id=aae67a2c2b663a6bce8fbc087ff8490336b8618f
> >
> > commit aae67a2c2b663a6bce8fbc087ff8490336b8618f
> > Author:     WHR <w...@rivoreo.one>
> > AuthorDate: 2024-09-03 10:19:04 +0000
> > Commit:     Warner Losh <i...@freebsd.org>
> > CommitDate: 2025-06-13 01:21:44 +0000
> >
> >      mfiutil: Fix unsafe assumptions of snprintf(3) return value
> >
> >      PR: 281160
> >      Reviewed by: imp
> >      Pull Request: https://github.com/freebsd/freebsd-src/pull/1405
> >      Closes: https://github.com/freebsd/freebsd-src/pull/1405
> > ---
> >   usr.sbin/mfiutil/mfi_bbu.c | 17 +++++++++++++++--
> >   1 file changed, 15 insertions(+), 2 deletions(-)
> >
> > diff --git a/usr.sbin/mfiutil/mfi_bbu.c b/usr.sbin/mfiutil/mfi_bbu.c
> > index 9075c4d0ddd0..e97227d47c70 100644
> > --- a/usr.sbin/mfiutil/mfi_bbu.c
> > +++ b/usr.sbin/mfiutil/mfi_bbu.c
> > @@ -50,10 +50,23 @@ mfi_autolearn_period(uint32_t period, char *buf, size_t 
> > sz)
> >
> >       tmp = buf;
> >       if (d != 0) {
> > -             tmp += snprintf(buf, sz, "%u day%s", d, d == 1 ? "" : "s");
> > +             int fmt_len;
> > +             fmt_len = snprintf(buf, sz, "%u day%s", d, d == 1 ? "" : "s");
> > +             if (fmt_len < 0) {
> > +                     *buf = 0;
> > +                     return;
> > +             }
> > +             if ((size_t)fmt_len >= sz) {
> > +                     return;
> > +             }
> > +             tmp += fmt_len;
> >               sz -= tmp - buf;
> >               if (h != 0) {
> > -                     tmp += snprintf(tmp, sz, ", ");
> > +                     fmt_len = snprintf(tmp, sz, ", ");
> > +                     if (fmt_len < 0 || (size_t)fmt_len >= sz) {
> > +                             return;
> > +                     }
> > +                     tmp += fmt_len;
> >                       sz -= 2;
> >               }
> >       }
>
> It seems like using a string builder like fmemopen() or sbuf() would be
> better here than fragile dances with snprintf().

True. This is better than what was there, but either of those would be better.

Warner

Reply via email to