From 9dee8b079e43da46f50af3792e6796b471de8a15 Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Tue, 16 Jan 2007 14:36:33 +0000 Subject: [PATCH] * Got rid of the *_load() functions. Now each diverted function is supposed to check that the *_orig() functions it calls are properly loaded. --- src/libzzuf.c | 6 ------ src/load-fd.c | 30 +++++++----------------------- src/load-mem.c | 24 ------------------------ src/load-signal.c | 6 ------ src/load-stream.c | 43 ++++--------------------------------------- src/load.h | 5 ----- 6 files changed, 11 insertions(+), 103 deletions(-) diff --git a/src/libzzuf.c b/src/libzzuf.c index f0b8681..944a1b2 100644 --- a/src/libzzuf.c +++ b/src/libzzuf.c @@ -36,7 +36,6 @@ #include "libzzuf.h" #include "debug.h" -#include "load.h" #include "fd.h" #include "fuzz.h" @@ -53,11 +52,6 @@ void _zz_init(void) { char *tmp, *tmp2; - _zz_load_mem(); - _zz_load_signal(); - _zz_load_fd(); - _zz_load_stream(); - tmp = getenv("ZZUF_DEBUG"); if(tmp && *tmp == '1') _zz_hasdebug = 1; diff --git a/src/load-fd.c b/src/load-fd.c index 3ee743d..5b318ee 100644 --- a/src/load-fd.c +++ b/src/load-fd.c @@ -70,25 +70,6 @@ static off64_t (*lseek64_orig) (int fd, off64_t offset, int whence); #endif static int (*close_orig) (int fd); - -void _zz_load_fd(void) -{ - LOADSYM(open); -#ifdef HAVE_OPEN64 - LOADSYM(open64); -#endif - LOADSYM(accept); - LOADSYM(socket); - LOADSYM(read); - LOADSYM(readv); - LOADSYM(pread); - LOADSYM(lseek); -#ifdef HAVE_LSEEK64 - LOADSYM(lseek64); -#endif - LOADSYM(close); -} - #define OPEN(fn) \ do \ { \ @@ -173,9 +154,13 @@ static void offset_check(int fd) { /* Sanity check, can be OK though (for instance with a character device) */ #ifdef HAVE_LSEEK64 - off64_t ret = lseek64_orig(fd, 0, SEEK_CUR); + off64_t ret; + LOADSYM(lseek64); + ret = lseek64_orig(fd, 0, SEEK_CUR); #else - off_t ret = lseek_orig(fd, 0, SEEK_CUR); + off_t ret; + LOADSYM(lseek); + ret = lseek_orig(fd, 0, SEEK_CUR); #endif if(ret != -1 && ret != _zz_getpos(fd)) debug("warning: offset inconsistency"); @@ -307,12 +292,11 @@ int close(int fd) { int ret; - LOADSYM(close); - /* Hey, it’s our debug channel! Silently pretend we closed it. */ if(fd == DEBUG_FILENO) return 0; + LOADSYM(close); ret = close_orig(fd); if(!_zz_ready || !_zz_iswatched(fd) || _zz_disabled) return ret; diff --git a/src/load-mem.c b/src/load-mem.c index fb04851..2a50223 100644 --- a/src/load-mem.c +++ b/src/load-mem.c @@ -82,30 +82,6 @@ static kern_return_t (*map_fd_orig) (int fd, vm_offset_t offset, vm_size_t numbytes); #endif -void _zz_load_mem(void) -{ - LOADSYM(calloc); - LOADSYM(malloc); - LOADSYM(free); - LOADSYM(realloc); - LOADSYM(valloc); -#ifdef HAVE_MEMALIGN - LOADSYM(memalign); -#endif -#ifdef HAVE_POSIX_MEMALIGN - LOADSYM(posix_memalign); -#endif - - LOADSYM(mmap); -#ifdef HAVE_MMAP64 - LOADSYM(mmap64); -#endif - LOADSYM(munmap); -#ifdef HAVE_MAP_FD - LOADSYM(map_fd); -#endif -} - /* We need a static memory buffer because some functions call memory * allocation routines before our library is loaded. Hell, even dlsym() * calls calloc(), so we need to do something about it */ diff --git a/src/load-signal.c b/src/load-signal.c index aa4e5c8..4b66f07 100644 --- a/src/load-signal.c +++ b/src/load-signal.c @@ -52,12 +52,6 @@ static int (*sigaction_orig) (int signum, const struct sigaction *act, /* Local functions */ static int isfatal(int signum); -void _zz_load_signal(void) -{ - LOADSYM(signal); - LOADSYM(sigaction); -} - static int isfatal(int signum) { switch(signum) diff --git a/src/load-stream.c b/src/load-stream.c index 0128e31..75ea902 100644 --- a/src/load-stream.c +++ b/src/load-stream.c @@ -88,45 +88,6 @@ static char * (*fgetln_orig) (FILE *stream, size_t *len); int (*__srefill_orig) (FILE *fp); #endif - -void _zz_load_stream(void) -{ - LOADSYM(fopen); -#ifdef HAVE_FOPEN64 - LOADSYM(fopen64); -#endif - LOADSYM(freopen); - LOADSYM(fseek); -#ifdef HAVE_FSEEKO - LOADSYM(fseeko); -#endif - LOADSYM(rewind); - LOADSYM(fread); - LOADSYM(getc); - LOADSYM(fgetc); -#ifdef HAVE__IO_GETC - LOADSYM(_IO_getc); -#endif - LOADSYM(fgets); - LOADSYM(ungetc); - LOADSYM(fclose); -#ifdef HAVE_GETLINE - LOADSYM(getline); -#endif -#ifdef HAVE_GETDELIM - LOADSYM(getdelim); -#endif -#ifdef HAVE___GETDELIM - LOADSYM(__getdelim); -#endif -#ifdef HAVE_FGETLN - LOADSYM(fgetln); -#endif -#ifdef HAVE___SREFILL - LOADSYM(__srefill); -#endif -} - /* Our function wrappers */ #define FOPEN(fn) \ do \ @@ -355,6 +316,7 @@ char *fgets(char *s, int size, FILE *stream) int fd; LOADSYM(fgets); + LOADSYM(fgetc); fd = fileno(stream); if(!_zz_ready || !_zz_iswatched(fd)) return fgets_orig(s, size, stream); @@ -461,6 +423,8 @@ int fclose(FILE *fp) ssize_t done, size; \ int fd, finished = 0; \ LOADSYM(fn); \ + LOADSYM(getdelim); \ + LOADSYM(fgetc); \ fd = fileno(stream); \ if(!_zz_ready || !_zz_iswatched(fd)) \ return getdelim_orig(lineptr, n, delim, stream); \ @@ -542,6 +506,7 @@ char *fgetln(FILE *stream, size_t *len) int fd; LOADSYM(fgetln); + LOADSYM(fgetc); fd = fileno(stream); if(!_zz_ready || !_zz_iswatched(fd)) return fgetln_orig(stream, len); diff --git a/src/load.h b/src/load.h index d1fed8a..4f11f6d 100644 --- a/src/load.h +++ b/src/load.h @@ -27,8 +27,3 @@ abort(); \ } while(0) -extern void _zz_load_fd(void); -extern void _zz_load_mem(void); -extern void _zz_load_signal(void); -extern void _zz_load_stream(void); -