Release 1.0.0

- Add basic tiling compositor functionality
This commit is contained in:
Cagebreak Signing Key 1 2020-02-17 17:28:35 +00:00
commit de6c07ca2a
45 changed files with 6864 additions and 0 deletions

11
fuzz/execl_override.c Normal file
View file

@ -0,0 +1,11 @@
/* This file is used by the fuzzer in order to prevent executing shell commands.
*/
#define _GNU_SOURCE
#include <time.h>
struct tm *(*orig_localtime)(const time_t *timep);
int
execl(const char *pathname, const char *arg, ...) {
return 0;
}

86
fuzz/fuzz-parse.c Normal file
View file

@ -0,0 +1,86 @@
#define _POSIX_C_SOURCE 200812L
#define FUZZING
#include "../keybinding.h"
#include "../parse.h"
#include "../seat.h"
#include "../server.h"
#include <signal.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <sys/wait.h>
#include <unistd.h>
#include <wayland-server-core.h>
#ifndef WAIT_ANY
#define WAIT_ANY -1
#endif
void
set_sig_handler(int sig) {
struct sigaction sa;
sa.sa_handler = SIG_IGN; // handle signal by ignoring
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
if(sigaction(SIGCHLD, &sa, 0) == -1) {
perror(0);
exit(1);
}
}
struct cg_server server;
int
LLVMFuzzerInitialize(int *argc, char ***argv) {
set_sig_handler(SIGCHLD);
server.wl_display = NULL;
server.event_loop = NULL;
server.seat = malloc(sizeof(struct cg_seat));
server.seat->mode = 0;
server.seat->default_mode = 0;
server.idle = NULL;
server.idle_inhibit_v1 = NULL;
/* new_idle_inhibitor_v1 */
wl_list_init(&server.inhibitors);
server.output_layout = NULL;
wl_list_init(&server.outputs);
server.curr_output = NULL;
/* new_output */
/* xdg_toplevel_decoration */
/* new_xdg_shell_surface */
/* new_xwayland_surface */
server.keybindings = keybinding_list_init();
server.output_transform = 0;
server.running = true;
server.modes = malloc(sizeof(char *));
server.modes[0] = NULL;
server.nws = 1;
server.message_timeout = 0;
server.bg_color = malloc(4 * sizeof(float));
server.bg_color[0] = 0;
server.bg_color[1] = 0;
server.bg_color[2] = 0;
server.bg_color[3] = 1;
return 0;
}
int
LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
char *str = malloc(size * sizeof(char) + 1);
strncpy(str, (char *)data, size);
str[size] = 0;
parse_rc_line(&server, str);
free(str);
keybinding_list_free(server.keybindings);
server.keybindings = keybinding_list_init();
return 0;
}

32
fuzz/meson.build Normal file
View file

@ -0,0 +1,32 @@
fuzz_sources = [
'fuzz-parse.c',
]
fuzz_headers = [
'../parse.h',
]
inc = include_directories(['..','../build/'])
fuzz_dependencies = cagebreak_dependencies
if fuzzing_engine.found()
fuzz_dependencies += fuzzing_engine
else
link_args = [ '-fsanitize=fuzzer', ]
endif
override_lib = shared_library('execl_override',
[ 'execl_override.c' ],
install: false
)
executable(
'fuzz-parse',
fuzz_sources + fuzz_headers + cagebreak_headers + cagebreak_sources,
dependencies: fuzz_dependencies,
install: false,
include_directories: inc,
link_args: link_args + fuzz_link_args,
c_args: fuzz_compile_args,
link_with: override_lib,
)