Restrict fortified stdio test hook to glibc
This commit is contained in:
1 parent
0d55c98add
commit
64519c41a7
1 file changed
+4
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user