[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