-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathkcmp.c
53 lines (42 loc) · 894 Bytes
/
kcmp.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "utils.h"
#include "sysc_nums.h"
#include "sys_util.h"
unsigned int loops;
enum kcmp_type {
KCMP_FILE,
KCMP_VM,
KCMP_FILES,
KCMP_FS,
KCMP_SIGHAND,
KCMP_IO,
KCMP_SYSVSEM,
KCMP_TYPES,
};
int arrayOfEnum[8] = { KCMP_FILE, KCMP_VM, KCMP_FILES,
KCMP_FS, KCMP_SIGHAND, KCMP_IO,
KCMP_SYSVSEM, KCMP_TYPES
};
/*
*
* int kcmp(pid_t pid1, pid_t pid2, int type,
* unsigned long idx1, unsigned long idx2);
*/
static void do_kcmp_fuzzing(void)
{
pid_t pid1, pid2;
enum kcmp_type enum_types;
unsigned long fd_idx1, fd_idx2;
while(loops--){
pid2 = getfakeorrealpid();
pid1 = getfakeorrealpid();
enum_types = arrayOfEnum[rand() % 8]; //0->7
fd_idx1 = rand64();
fd_idx2 = rand64();
syscall(__NR_kcmp, pid1, pid2, enum_types, fd_idx1,
fd_idx2);
}
}
void kcmpfuzz(unsigned int amount){
loops = amount;
do_kcmp_fuzzing();
}