]> git.ipfire.org Git - thirdparty/util-linux.git/commit - misc-utils/fincore.c
fincore: Handle large files on 32 bit without LFS
authorTobias Stoeckmann <tobias@stoeckmann.org>
Sun, 25 Feb 2018 19:27:59 +0000 (20:27 +0100)
committerKarel Zak <kzak@redhat.com>
Mon, 26 Feb 2018 10:54:12 +0000 (11:54 +0100)
commitfcfe1a5cde0ad12a52f580037da201de667c5ced
tree803a344c7333dca84e09537b7214dac8ac54151d
parentea62c152766ff22038630c9afdeb1df5dcc044cb
fincore: Handle large files on 32 bit without LFS

If util-linux is installed on a system without large file support,
an out of memory issue can occur while processing a file which is
2 GB in size:

$ ./configure --disable-largefile && make

$ dd if=/dev/zero of=2gb-file seek=2147483646 count=1 bs=1
$ fincore 2gb-file
(endless loop)
fincore: failed to do mmap: 2gb-file: Cannot allocate memory

Even though iterating with "len" seems counter-intuitive, it fixes
this issue. The variable len is only in the last iteration not a
multiplication of pagesize -- which is the requirement for mmap.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
misc-utils/fincore.c