-# $OpenBSD: Makefile,v 1.1 2015/10/09 06:44:13 semarie Exp $
+# $OpenBSD: Makefile,v 1.2 2015/10/09 11:38:05 semarie Exp $
PROG= generic
-SRCS+= main.c manager.c
+SRCS+= main.c manager.c test_tty.c
NOMAN= yes
CFLAGS+= -Wall -Werror
systrace -A ./${PROG} | diff -I OpenBSD -u ${.CURDIR}/tests.out -
regenerate: ${PROG}
- echo '# $$OpenBSD: Makefile,v 1.1 2015/10/09 06:44:13 semarie Exp $$' > ${.CURDIR}/tests.out
+ echo '# $$OpenBSD: Makefile,v 1.2 2015/10/09 11:38:05 semarie Exp $$' > ${.CURDIR}/tests.out
./${PROG} | tee -a ${.CURDIR}/tests.out
.include <bsd.regress.mk>
-/* $OpenBSD: main.c,v 1.1 2015/10/09 06:44:13 semarie Exp $ */
+/* $OpenBSD: main.c,v 1.2 2015/10/09 11:38:05 semarie Exp $ */
/*
* Copyright (c) 2015 Sebastien Marie <semarie@openbsd.org>
*
#include "manager.h"
+void test_request_tty(void);
+
static void
test_nop()
{
start_test1(&ret, "rpath malloc prot_exec", "/dev/zero", test_mmap);
start_test1(&ret, "rpath malloc", "/dev/zero", test_mmap);
+ /* tty */
+ start_test(&ret, NULL, NULL, test_request_tty);
+
return (ret);
}
--- /dev/null
+/*
+ * Copyright (c) 2015 Sebastien Marie <semarie@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/ioctl.h>
+#include <sys/termios.h>
+#include <sys/ttycom.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+void
+test_request_tty()
+{
+ int fd = STDERR_FILENO;
+ struct termios ts; /* sys/termios.h */
+ struct winsize ws; /* sys/ttycom.h */
+
+ /* TODO: get a tty */
+
+ /* tests that need tty+proc (malloc for self) */
+ if (pledge("tty proc malloc", NULL) == -1)
+ _exit(errno);
+
+ /* TIOCSPGRP (tty+proc) */
+ if ((tcsetpgrp(fd, 1) == -1) && (errno != ENOTTY))
+ _exit(errno);
+ errno = 0; /* discard error */
+
+ /* tests that only need tty */
+ if (pledge("tty", NULL) == -1)
+ _exit(errno);
+
+
+ /* TIOCGETA */
+ if (ioctl(fd, TIOCGETA, &ts) == -1)
+ _exit(errno);
+
+ /* TIOCGWINSZ */
+ if (ioctl(fd, TIOCGWINSZ, &ws) == -1)
+ _exit(errno);
+
+ /* TIOCSBRK */
+ if ((ioctl(fd, TIOCSBRK, NULL) == -1) && (errno != ENOTTY))
+ _exit(errno);
+ errno = 0; /* discard error */
+
+ /* TIOCCDTR */
+ if ((ioctl(fd, TIOCCDTR, NULL) == -1) && (errno != ENOTTY))
+ _exit(errno);
+ errno = 0; /* discard error */
+
+ /* TIOCSETA */
+ if (tcsetattr(fd, TCSANOW, &ts) == -1)
+ _exit(errno);
+
+ /* TIOCSETAW */
+ if (tcsetattr(fd, TCSADRAIN, &ts) == -1)
+ _exit(errno);
+
+ /* TIOCSETAF */
+ if (tcsetattr(fd, TCSAFLUSH, &ts) == -1)
+ _exit(errno);
+}
-# $OpenBSD: tests.out,v 1.1 2015/10/09 06:44:13 semarie Exp $
+# $OpenBSD: tests.out,v 1.2 2015/10/09 11:38:05 semarie Exp $
test(test_nop): pledge=("",NULL) status=0 exit=0
test(test_inet): pledge=("",NULL) status=9 signal=9 pledged_syscall=97
test(test_inet): pledge=("abort",NULL) status=134 signal=6 coredump=present pledged_syscall=97
status=0 exit=0
test(test_mmap): pledge=("rpath malloc prot_exec",{"/dev/zero",NULL}) status=0 exit=0
test(test_mmap): pledge=("rpath malloc",{"/dev/zero",NULL}) status=9 signal=9 pledged_syscall=197
+test(test_request_tty): pledge=skip status=0 exit=0