<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/91130>91130</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[libfuzzer] No Large File Support in 32bit targets
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ernst-schwaiger
</td>
</tr>
</table>
<pre>
FuzzerIOPosix.cpp hasn't enabled Large File Support/LFS for 32bit targets. All stat() invocations return ``EOVERFLOW`` on large file systems. Consequently, ``IsFile(), IsDirectory(), FileSize()`` will always return false/zero and e.g. ``my32BitFuzzBinary CORPUS`` stops with "ERROR: The required directory "CORPUS" does not exist"
Patching FuzzerIOPosix.cpp like this overcomes the issue (albeit adding -D_FILE_OFFSET_BITS=64 to the CMakefiles is a cleaner solution):
```
//...
#if (LIBFUZZER_POSIX || LIBFUZZER_FUCHSIA)
// turn LFS on for i386 (and other supported 32 bit platforms)
#if __i386
#define _FILE_OFFSET_BITS 64
#endif
#include "FuzzerExtFunctions.h"
#include "FuzzerIO.h"
#include <cstdarg>
#include <cstdio>
#include <dirent.h>
#include <fstream>
#include <iterator>
#include <libgen.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
// ensure LFS is turned on
static_assert(sizeof(off_t) == 8, "Large file interface is not present, see _FILE_OFFSET_BITS in https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html");
namespace fuzzer {
//...
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVUuP4jgQ_jXmUiIKDuFx4NA8okVilhb07K7mgpykQrxjbMZVaYb-9Ssn3UO3ptFKiMiu11dVX5UVkT5axJlI5yJd9lTDtfMz9Ja4T0V9UfqIvpe78jrLmpcX9OvtoyP9MyrOZ6gVWSHHDGhVbrCEjfJHhEwbhH1zPjvPQmabbA-V85DIXDNwUGGK4MEYIFYs5ETIKWj77ArF2lkCj9x4C2IUi1G82v612mWb7d_dEZwF04apQhi6EuOJIlg4S_ijQcvmKuTi1XhNAUwXItyuaak9Fuz89XYZVPb65U2tC3PRxoAyF3X9hadShlDI7AW9A2VLwOgYvQY6XRM51xxqNNdW-SsstrvHr_tXb8TuTHDRXIOQcrXbbXcieYCnGsHjj0Z7LKF8QxZUXq2lhNIhgXUM-FMTCylFvBTxQ_f_qLiotT3C780x-jsC15rAPaMv3AkJuEbQRA2CkBNlctQMqiyDg_7ykK03q8M2y_arp8N8_bQXyXI0BHat2eKL-o6h5ASaQEFhUFn0QM40oWuhcskrqi7p8OuOMhMyi6Lo7ZjoKgDYrOfZ12_fVrvD43a__gfEeCHGC7hdZ18Xf-zXD8H1u5w7d9C2JHDL2ZZeOpmM2rRsCY7rAK2jIJaQSAjcOxvFlfMnunlssRwOwbi7ARAyKbHSFuG3isBo-MsObamrj7gSbQvTlKG6smvI6idnjS1aWkf1rXmfqK63dxSSRUFcKn8UyeqeVLs7wkAqy1F9R1wRe1SnO1LN6BU7f0dsdH5Ee9c3XUnILIz4_6jw9Yx0V6exmrh8L37PArTUeGx5oKnlBJbgbKcTYuvioIgwbKIJ6Rd0lZATV1UHDltHJEuRLGHSbgwpN7fFoi2jr1QRBqYdv7NHQstBk_AzbmgLNfOZwhi04C6XS3S0TeT8MRTCVXxRPiwQo_NCyOykbKOMkFnNJ3OwrgyyDBU3HvtPSNz_ogrvKAryQI0wYvP3RbDqhHQOIKuWQyDG889n7m0ie-UsKafJVPVwNhgPhlM5TIbTXj1LJyPEIpfjpKwG1TBNlVKyqsqpSrCaDPKenslYDuM0TgdpKuU0qtJ8XMVqqqaxrPJiIIYxnpQ2kTHPp5B0r101s-lgkMQ9o3I01L4zUlq8dHsoZJUue34WbPp5cyQxjI0mppsX1mzaB8rovEtTpEv4033y2oQefHhmeo03s49dOWqumzwq3Cl0wjy_ffpn7_7FIrxYLbTAzBb6fwEAAP__eo0z5Q">