--- kon2-0.3.9b.orig/src/utmp.c
+++ kon2-0.3.9b/src/utmp.c
@@ -45,6 +45,8 @@
 #include	<utmp.h>
 #include	<grp.h>
 #include	<sys/stat.h>
+#include	<time.h>
+#include	<utmp.h>
 
 static int ttyGid;
 
@@ -56,16 +58,21 @@
 	struct group	*ttygrp;
 	char	*tn;
 
+#define	PTYCHARLEN	4
 	pw = getpwuid(getuid());
-	tn = rindex(tty, '/') + 1;
+	if (strlen (tty) <= PTYCHARLEN) {
+		tn = tty;
+	} else {
+		tn = tty + strlen (tty) - PTYCHARLEN;
+	}
 	memset((char *)&utmp, 0, sizeof(utmp));
-	strncpy(utmp.ut_id, tn + 3, sizeof(utmp.ut_id));
+	strncpy(utmp.ut_id, tn, sizeof(utmp.ut_id));
 	utmp.ut_type = DEAD_PROCESS;
 	setutent();
 	getutid(&utmp);
 	utmp.ut_type = USER_PROCESS;
 	utmp.ut_pid = getpid();
-	strncpy(utmp.ut_line, tn, sizeof(utmp.ut_line));
+	strncpy(utmp.ut_line, tty + strlen ("/dev/"), sizeof(utmp.ut_line));
 	strncpy(utmp.ut_user, pw->pw_name, sizeof(utmp.ut_user));
 	time(&(utmp.ut_time));
 	pututline(&utmp);
@@ -85,7 +92,11 @@
 	struct utmp	utmp, *utp;
 	char	*tn;
 
-	tn = rindex(tty, '/') + 4;
+	if (strlen (tty) <= PTYCHARLEN) {
+		tn = tty;
+	} else {
+		tn = tty + strlen (tty) - PTYCHARLEN;
+	}
 	memset((char *)&utmp, 0, sizeof(utmp));
 	strncpy(utmp.ut_id, tn, sizeof(utmp.ut_id));
 	utmp.ut_type = USER_PROCESS;
