disallow creation of objects larger than PTRDIFF_MAX via mmap
authorRich Felker <dalias@aerifal.cx>
Thu, 27 Jun 2013 16:48:59 +0000 (12:48 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 27 Jun 2013 16:48:59 +0000 (12:48 -0400)
commit3cd6f5229f079f892411e82fce3fe15c78eef4d8
treefd513b5adab33019ed5251ffea1076eec6140afc
parentb17c75a4d539d7ec5b81cc7ce7ce6b065a87e7a6
disallow creation of objects larger than PTRDIFF_MAX via mmap

internally, other parts of the library assume sizes don't overflow
ssize_t and/or ptrdiff_t, and the way this assumption is made valid is
by preventing creating of such large objects. malloc already does so,
but the check was missing from mmap.

this is also a quality of implementation issue: even if the
implementation internally could handle such objects, applications
could inadvertently invoke undefined behavior by subtracting pointers
within an object. it is very difficult to guard against this in
applications, so a good implementation should simply ensure that it
does not happen.
src/mman/mmap.c