Changeset 1631 for zzuf/trunk
- Timestamp:
- Jan 9, 2007, 11:02:57 AM (16 years ago)
- Location:
- zzuf/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
zzuf/trunk/configure.ac
r1628 r1631 15 15 AC_PROG_LIBTOOL 16 16 17 AC_CHECK_HEADERS(inttypes.h stdint.h getopt.h )18 AC_CHECK_FUNCS(open64 lseek64 mmap64 fopen64 fseeko _IO_getc getline getdelim __getdelim fgetln __srefill )17 AC_CHECK_HEADERS(inttypes.h stdint.h getopt.h libc.h) 18 AC_CHECK_FUNCS(open64 lseek64 mmap64 fopen64 fseeko _IO_getc getline getdelim __getdelim fgetln __srefill map_fd) 19 19 AC_CHECK_TYPES(sighandler_t, [], [], 20 20 [#define _GNU_SOURCE -
zzuf/trunk/doc/zzuf.1
r1624 r1631 282 282 \fBfgetln\fR(), \fB__srefill\fR() 283 283 .TP 284 Mac OS X-specific: 285 \fBmap_fd\fR() 286 .TP 284 287 Signal handling: 285 288 \fBsignal\fR(), \fBsigaction\fR() -
zzuf/trunk/src/load-fd.c
r1626 r1631 39 39 #include <fcntl.h> 40 40 #include <stdarg.h> 41 #if defined HAVE_LIBC_H 42 # include <libc.h> 43 #endif 41 44 42 45 #include "libzzuf.h" … … 72 75 #endif 73 76 static int (*munmap_orig) (void *start, size_t length); 77 #ifdef HAVE_MAP_FD 78 static kern_return_t (*map_fd_orig) (int fd, vm_offset_t offset, 79 vm_offset_t *addr, boolean_t find_space, 80 vm_size_t numbytes); 81 #endif 74 82 static int (*close_orig) (int fd); 75 83 … … 93 101 #endif 94 102 LOADSYM(munmap); 103 #ifdef HAVE_MAP_FD 104 LOADSYM(map_fd); 105 #endif 95 106 LOADSYM(close); 96 107 } … … 306 317 } 307 318 319 #ifdef HAVE_MAP_FD 320 kern_return_t map_fd(int fd, vm_offset_t offset, vm_offset_t *addr, 321 boolean_t find_space, vm_size_t numbytes) 322 { 323 kern_return_t ret; 324 325 if(!_zz_ready) 326 LOADSYM(map_fd); 327 ret = map_fd_orig(fd, offset, addr, find_space, numbytes); 328 if(!_zz_ready || !_zz_iswatched(fd) || _zz_disabled) 329 return ret; 330 331 if(ret == 0) 332 { 333 void *tmp = malloc(numbytes); 334 memcpy(tmp, (void *)*addr, numbytes); 335 _zz_fuzz(fd, tmp, numbytes); 336 *addr = (vm_offset_t)tmp; 337 /* FIXME: the map is never freed; there is no such thing as unmap_fd, 338 * but I suppose that kind of map should go when the filedesciptor is 339 * closed (unlike mmap, which returns a persistent buffer). */ 340 } 341 342 debug("map_fd(%i, %lli, &%p, %i, %lli) = %i", fd, (long long int)offset, 343 (void *)*addr, (int)find_space, (long long int)numbytes, ret); 344 345 return ret; 346 } 347 #endif 348 308 349 int close(int fd) 309 350 {
Note: See TracChangeset
for help on using the changeset viewer.