From ce9105664419f542c757c05b28ffd6537d19f63c Mon Sep 17 00:00:00 2001 From: Martijn van Beurden Date: Thu, 25 Jul 2024 15:35:36 +0200 Subject: [PATCH] Work around i386 ASAN fseek bug For some reason, i386 ASAN's fseek does not have large file support, and off_t is actually a 32-bit int --- src/flac/encode.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/flac/encode.c b/src/flac/encode.c index 1622e3d5..a9f0b2bb 100644 --- a/src/flac/encode.c +++ b/src/flac/encode.c @@ -2892,6 +2892,13 @@ FLAC__bool fskip_ahead(FILE *f, FLAC__uint64 offset) static uint8_t dump[8192]; struct flac_stat_s stb; +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#ifdef __i386__ +/* Work around i386 ASAN bug */ + if(offset > (FLAC__uint64)(INT32_MAX)) return false; +#endif +#endif + if(flac_fstat(fileno(f), &stb) == 0 && (stb.st_mode & S_IFMT) == S_IFREG) { if(fseeko(f, offset, SEEK_CUR) == 0)