[Bug 205806] [patch] bsdinstall(8): partedit can hang/crash on read/lseek/malloc failures

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sat Jan 2 19:53:55 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=205806

            Bug ID: 205806
           Summary: [patch] bsdinstall(8): partedit can hang/crash on
                    read/lseek/malloc failures
           Product: Base System
           Version: 10.2-STABLE
          Hardware: amd64
                OS: Any
            Status: New
          Keywords: patch
          Severity: Affects Only Me
          Priority: ---
         Component: bin
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: will at worrbase.com
                CC: freebsd-amd64 at FreeBSD.org
          Keywords: patch
                CC: freebsd-amd64 at FreeBSD.org

Created attachment 164966
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=164966&action=edit
malloc + read in a loop -> mmap

The current code for reading in the bootcode from a file has a few problems.

https://svnweb.freebsd.org/base/head/usr.sbin/bsdinstall/partedit/gpart_ops.c?revision=285679&view=markup#l408

408: if lseek(2) fails, bootsize underflows to SIZE_T_MAX, making the resulting
allocation dangerous
409: if malloc(3) fails, we end up with a null pointer deref later
413: if read(2) fails, the installer will hang trying to read(2) boot loader
code

I've replaced this with a call to mmap(2), which will give us what we want, and
also contains more error-handling if something goes wrong.

Tested on FreeBSD 10.2-STABLE on amd64.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the freebsd-amd64 mailing list