Go to the source code of this file.
|
dfsan_label | dfsan_union (dfsan_label l1, dfsan_label l2) |
|
dfsan_label | dfsan_create_label (const char *desc, void *userdata) |
| Creates and returns a base label with the given description and user data. More...
|
|
void | dfsan_set_label (dfsan_label label, void *addr, size_t size) |
| Sets the label for each address in [addr,addr+size) to label . More...
|
|
void | dfsan_add_label (dfsan_label label, void *addr, size_t size) |
|
dfsan_label | dfsan_get_label (long data) |
|
dfsan_label | dfsan_read_label (const void *addr, size_t size) |
| Retrieves the label associated with the data at the given address. More...
|
|
const struct dfsan_label_info * | dfsan_get_label_info (dfsan_label label) |
| Retrieves a pointer to the dfsan_label_info struct for the given label. More...
|
|
int | dfsan_has_label (dfsan_label label, dfsan_label elem) |
| Returns whether the given label label contains the label elem. More...
|
|
dfsan_label | dfsan_has_label_with_desc (dfsan_label label, const char *desc) |
|
size_t | dfsan_get_label_count (void) |
| Returns the number of labels allocated. More...
|
|
void | dfsan_set_write_callback (dfsan_write_callback_t labeled_write_callback) |
|
void | dfsan_dump_labels (int fd) |
|
void | dfsan_weak_hook_memcmp (void *caller_pc, const void *s1, const void *s2, size_t n, dfsan_label s1_label, dfsan_label s2_label, dfsan_label n_label) |
|
void | dfsan_weak_hook_strncmp (void *caller_pc, const char *s1, const char *s2, size_t n, dfsan_label s1_label, dfsan_label s2_label, dfsan_label n_label) |
|
typedef void(* dfsan_write_callback_t)(int fd, const void *buf, size_t count) |
Sets the label for each address in [addr,addr+size) to the union of the current label for that address and label
.
dfsan_label dfsan_create_label |
( |
const char * |
desc, |
|
|
void * |
userdata |
|
) |
| |
Creates and returns a base label with the given description and user data.
void dfsan_dump_labels |
( |
int |
fd | ) |
|
Writes the labels currently used by the program to the given file descriptor. The lines of the output have the following format:
<label> <parent label 1> <parent label 2> <label description="" if="" any>="">
Retrieves the label associated with the given data.
The type of 'data' is arbitrary. The function accepts a value of any type, which can be truncated or extended (implicitly or explicitly) as necessary. The truncation/extension operations will preserve the label of the original value.
size_t dfsan_get_label_count |
( |
void |
| ) |
|
Returns the number of labels allocated.
Returns whether the given label label contains the label elem.
If the given label label contains a label with the description desc, returns that label, else returns 0.
Retrieves the label associated with the data at the given address.
Sets the label for each address in [addr,addr+size) to label
.
Sets a callback to be invoked on calls to write(). The callback is invoked before the write is done. The write is not guaranteed to succeed when the callback executes. Pass in NULL to remove any callback.
Computes the union of l1
and l2
, possibly creating a union label in the process.
Interceptor hooks. Whenever a dfsan's custom function is called the corresponding hook is called it non-zero. The hooks should be defined by the user. The primary use case is taint-guided fuzzing, where the fuzzer needs to see the parameters of the function and the labels. FIXME: implement more hooks.