[Bug 273192] [PATCH] Distextract tries to divide by 0

From: <bugzilla-noreply_at_freebsd.org>
Date: Fri, 18 Aug 2023 03:40:31 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=273192

            Bug ID: 273192
           Summary: [PATCH] Distextract tries to divide by 0
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: bin
          Assignee: bugs@FreeBSD.org
          Reporter: lars@oddbit.com

Created attachment 244181
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=244181&action=edit
Patch to prevent floating point exception in distextract

In the file ./usr.sbin/bsdinstall/distextract/distextract.c, we find:

        /* Calculate [overall] percentage of completion (if possible) */
        if (file->size >= 0)
                return (file->read * 100 / file->size);
        else
                return (-1);

That conditional is incorrect; if distextract encounters a zero-length file, it
will attempt to divide by file->size, which is 0, which will cause distextract
fail error out with:

    Floating point exception (core dumped)

The attached patch prevents this error.

Addendum: I'm unclear why we use distextract. The "script" automated install
script already includes an alternate code path that uses tar if the install
isn't running on a tty; if we used this in all cases we could completely drop
distextract.

-- 
You are receiving this mail because:
You are the assignee for the bug.