Esempio n. 1
0
// Entry point for LibFuzzer.
int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
  struct tsm_screen *screen;
  struct tsm_vte *vte;
  const int scrollback_size = 200;  // frecon use 200

  tsm_screen_new(&screen, NULL, NULL);
  tsm_screen_set_max_sb(screen, scrollback_size);
  tsm_vte_new(&vte, screen, terminal_write_fn, NULL, NULL, NULL);
  tsm_screen_resize(screen, WIDTH, HEIGHT);

  tsm_vte_input(vte, (const char*) data, size);
  tsm_screen_draw(screen, term_draw_cell, NULL);

  tsm_vte_unref(vte);
  tsm_screen_unref(screen);
  return 0;
}
Esempio n. 2
0
int main(int argc, char** argv)
{
	const char* val;

	if (tsm_screen_new(&term.screen, tsm_log, 0) < 0){
		printf("fatal, couldn't setup tsm screen\n");
		return EXIT_FAILURE;
	}

	if (tsm_vte_new(&term.vte, term.screen, write_callback,
		NULL /* write_cb_data */, tsm_log, NULL /* tsm_log_data */) < 0){
		printf("fatal, couldn't setup vte\n");
		return EXIT_FAILURE;
	}

	tsm_screen_set_max_sb(term.screen, 1000);

	setlocale(LC_CTYPE, "C");
	signal(SIGHUP, SIG_IGN);

	if ( (term.child = shl_pty_open(&term.pty,
		read_callback, NULL, 10, 5)) == 0){
		setup_shell();
		exit(EXIT_FAILURE);
	}

	if (term.child < 0){
		printf("couldn't spawn child terminal.\n");
		return EXIT_FAILURE;
	}

	short pollev = POLLIN | POLLERR | POLLNVAL | POLLHUP;
	int ptyfd = shl_pty_get_fd(term.pty);
	int age = 0;

	tsm_screen_resize(term.screen, 10, 5);
	shl_pty_resize(term.pty, 10, 5);

	while(1){
		int pc = 2;
		struct pollfd fds[3] = {
			{ .fd = ptyfd, .events = pollev},
			{ .fd = STDIN_FILENO, .events = pollev}
		};