diff --git a/tests/test_media_primitives.c b/tests/test_media_primitives.c index 83a7a02a..2589cada 100644 --- a/tests/test_media_primitives.c +++ b/tests/test_media_primitives.c @@ -27,7 +27,9 @@ static pthread_barrier_t *post_barrier; extern FILE *__real_fopen(const char*, const char*); extern FILE *__real_fdopen(int, const char*); extern size_t __real_fread(void*, size_t, size_t, FILE*); +#ifdef __GLIBC__ extern size_t __real___fread_chk(void*, size_t, size_t, size_t, FILE*); +#endif extern size_t __real_fwrite(const void*, size_t, size_t, FILE*); extern int __real_ferror(FILE*), __real_fflush(FILE*), __real_fclose(FILE*); extern int __real_rename(const char*, const char*), __real_RAND_bytes(unsigned char*, int); @@ -59,10 +61,12 @@ size_t __wrap_fread(void *data, size_t size, size_t count, FILE *file) { return __real_fread(data, size, count, file); } /* _FORTIFY_SOURCE при -Og вызывает checked-вариант; ошибка должна внедряться и в sanitizer-сборке. */ +#ifdef __GLIBC__ size_t __wrap___fread_chk(void *data, size_t capacity, size_t size, size_t count, FILE *file) { if (file == input_file && inject(READ)) { read_failed = 1; return 0; } return __real___fread_chk(data, capacity, size, count, file); } +#endif int __wrap_ferror(FILE *file) { return file == input_file && read_failed ? 1 : __real_ferror(file); } size_t __wrap_fwrite(const void *data, size_t size, size_t count, FILE *file) { return file == output_file && inject(WRITE) ? 0 : __real_fwrite(data, size, count, file);