diff -ur netkit-telnet-0.17/telnetd/authenc.c netkit-telnet-0.17-patched/telnetd/authenc.c
--- netkit-telnet-0.17/telnetd/authenc.c	1999-12-12 08:59:44.000000000 -0600
+++ netkit-telnet-0.17-patched/telnetd/authenc.c	2008-01-23 21:31:45.546793060 -0600
@@ -35,7 +35,7 @@
     int len;
 {
     if (nfrontp + len < netobuf + BUFSIZ) {
-	bcopy((void *)str, (void *)nfrontp, len);
+	memcpy((void *)nfrontp, (void *)str, len);
 	nfrontp += len;
 	return(len);
     }
diff -ur netkit-telnet-0.17/telnetd/slc.c netkit-telnet-0.17-patched/telnetd/slc.c
--- netkit-telnet-0.17/telnetd/slc.c	1999-12-12 08:59:44.000000000 -0600
+++ netkit-telnet-0.17-patched/telnetd/slc.c	2008-01-23 21:32:07.859024619 -0600
@@ -432,7 +432,7 @@
 	    def_slclen = len;
 	    def_slcbuf = malloc((unsigned)len);
 	    if (def_slcbuf == NULL) return;  /* too bad */
-	    bcopy(ptr, def_slcbuf, len);
+	    memcpy(def_slcbuf, ptr, len);
 	}
     }
 }
diff -ur netkit-telnet-0.17/telnetd/sys_term.c netkit-telnet-0.17-patched/telnetd/sys_term.c
--- netkit-telnet-0.17/telnetd/sys_term.c	1999-12-17 08:28:47.000000000 -0600
+++ netkit-telnet-0.17-patched/telnetd/sys_term.c	2008-01-23 21:32:27.583229320 -0600
@@ -84,7 +84,7 @@
  */
 void copy_termbuf(char *cp, int len) {
     if (len > sizeof(termbuf)) len = sizeof(termbuf);
-    bcopy(cp, (char *)&termbuf, len);
+    memcpy((char *)&termbuf, cp, len);
     termbuf2 = termbuf;
 }
 #endif /* defined(LINEMODE) && defined(TIOCPKT_IOCTL) */
diff -ur netkit-telnet-0.17/telnetd/utility.c netkit-telnet-0.17-patched/telnetd/utility.c
--- netkit-telnet-0.17/telnetd/utility.c	1999-12-12 08:59:45.000000000 -0600
+++ netkit-telnet-0.17-patched/telnetd/utility.c	2008-01-23 21:33:02.087587426 -0600
@@ -248,7 +248,7 @@
 		next = nextitem(next);
 	    } while (wewant(next) && (nfrontp > next));
 	    length = next-thisitem;
-	    bcopy(thisitem, good, length);
+	    memcpy(good, thisitem, length);
 	    good += length;
 	    thisitem = next;
 	} else {
@@ -351,7 +351,7 @@
 		netflush();
 	}
 
-	bcopy(ptr, nfrontp, len);
+	memcpy(nfrontp, ptr, len);
 	nfrontp += len;
 
 }  /* end of writenet */
