5 #include <sys/syscall.h>
12 #define i { srand(23); printf("%s();\n",__func__); }
14 //Catch rand() calls etc...
15 int rand(void) { i
; return 23; }
16 long int random(void) { i
; return 23; }
17 int rand_r(unsigned int *seedp
) { i
; return 23; }
18 int random_r(struct random_data
*buf
, int32_t *result
) { i
; return 23; }
20 time_t time(time_t *tloc
) { i
; return (time_t)0; }
21 int clock_gettime(clockid_t clk_id
, struct timespec
*tp
) { i
; tp
->tv_nsec
=0; tp
->tv_sec
=0; return (time_t)0; }
22 //OpenSSL (not working i guess...)
23 int RAND_bytes(unsigned char *buf
, int num
) { i
; memset(buf
, 23, (size_t) num
); return 23; }
24 int RAND_pseudo_bytes(unsigned char *buf
, int num
) { i
; memset(buf
, 23, (size_t) num
); return 23; }
25 int FIPS_rand_bytes(unsigned char *buf
, int num
) { i
; memset(buf
, 23, (size_t) num
); return 23; }
26 int FIPS_rand_pseudo_bytes(unsigned char *buf
, int num
) { i
; memset(buf
, 23, (size_t) num
); return 23; }
28 pid_t
getpid(void) { i
; return (pid_t
)0; }
29 uid_t
getuid(void) { i
; return (uid_t
)0; }
30 gid_t
getgid(void) { i
; return (gid_t
)0; }
31 uid_t
geteuid(void) { i
; return (uid_t
)0; }
32 gid_t
getegid(void) { i
; return (gid_t
)0; }
34 //Catch open() calls (while redirecting filename):
35 static const char *redirect_name(const char *name
)
38 (strcmp(name
,"/dev/random") == 0) ||
39 (strcmp(name
,"/dev/urandom") == 0)
41 printf("REDIRECT HIT: %s\n", name
);
47 int open(const char *filename
, int flags
, ...)
50 static int (*open_orig
)(const char *, int, mode_t
);
56 open_orig
= dlsym(RTLD_NEXT
, "open");
60 mode
= va_arg(ap
, mode_t
);
63 ret
= open_orig(redirect_name(filename
), flags
, mode
);
64 //ret = syscall(SYS_open,redirect_name(filename),flags,mode);
66 printf("open(\"%s\", 0x%x, %o) -> %d\n", filename
, flags
, mode
, ret
);
71 int open64(const char *filename
, int flags
, ...)
74 static int (*open64_orig
)(const char *, int, mode_t
);
80 open64_orig
= dlsym(RTLD_NEXT
, "open64");
84 mode
= va_arg(ap
, mode_t
);
87 ret
= open64_orig(redirect_name(filename
), flags
, mode
);
88 //ret = syscall(SYS_open64,redirect_name(filename),flags,mode);
90 printf("open64(\"%s\", 0x%x, %o) -> %d\n", filename
, flags
, mode
, ret
);
This page took 0.656478 seconds and 4 git commands to generate.