diff options
Diffstat (limited to 'examples/terminal-emulators/terminal-test.c')
-rw-r--r-- | examples/terminal-emulators/terminal-test.c | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/examples/terminal-emulators/terminal-test.c b/examples/terminal-emulators/terminal-test.c deleted file mode 100644 index 3614f098..00000000 --- a/examples/terminal-emulators/terminal-test.c +++ /dev/null @@ -1,117 +0,0 @@ -#if !defined(_GNU_SOURCE) -#define _GNU_SOURCE -#endif - -#include <ctype.h> -#include <error.h> -#include <fcntl.h> -#include <libhfuzz/libhfuzz.h> -#include <stdbool.h> -#include <stddef.h> -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <sys/uio.h> -#include <unistd.h> - -#define ARRAYSIZE(x) (sizeof(x) / sizeof(*x)) - -static int fd_tty_write; -static int fd_tty_read; -static int fd_log; - -int LLVMFuzzerInitialize(int* argc, char*** argv) { - fd_tty_write = open("/dev/tty", O_RDWR | O_DSYNC); - if (fd_tty_write == -1) { - perror("open('/dev/tty'), O_RDWR | O_DSYNC"); - exit(EXIT_FAILURE); - } - fd_tty_read = open("/dev/tty", O_RDWR | O_NONBLOCK); - if (fd_tty_read == -1) { - perror("open('/dev/tty'), O_RDWR | O_NONBLOCK"); - exit(EXIT_FAILURE); - } - fd_log = open("./term.log", O_WRONLY | O_CREAT | O_APPEND, 0644); - if (fd_log == -1) { - perror("open('./term.log')"); - exit(EXIT_FAILURE); - } - return 0; -} - -static bool isInteresting(const char* s, size_t len) { - for (size_t i = 0; i < len; i++) { - if (s[i] == '[') { - continue; - } - if (s[i] == ']') { - continue; - } - if (s[i] == '?') { - continue; - } - if (s[i] == ';') { - continue; - } - if (s[i] == 'c') { - continue; - } - if (s[i] == 'R') { - continue; - } - if (s[i] == '\0') { - continue; - } - if (s[i] == '\x1b') { - continue; - } - if (isdigit(s[i])) { - continue; - } - return true; - } - return false; -} - -int LLVMFuzzerTestOneInput(const uint8_t* buf, size_t len) { - write(fd_tty_write, buf, len); - - for (;;) { - char read_buf[1024 * 1024]; - ssize_t sz = read(fd_tty_read, read_buf, sizeof(read_buf)); - if (sz <= 0) { - break; - } - - static const char msg_in[] = "\n============ IN ============\n"; - static const char msg_out[] = "\n============ OUT ===========\n"; - static const char msg_end[] = "\n============================\n"; - - struct iovec iov[] = { - { - .iov_base = (void*)msg_in, - .iov_len = sizeof(msg_in), - }, - { - .iov_base = (void*)buf, - .iov_len = len, - }, - { - .iov_base = (void*)msg_out, - .iov_len = sizeof(msg_out), - }, - { - .iov_base = (void*)read_buf, - .iov_len = sz, - }, - { - .iov_base = (void*)msg_end, - .iov_len = sizeof(msg_end), - }, - }; - - writev(fd_log, iov, ARRAYSIZE(iov)); - } - - return 0; -} |