diff -ru gopher2_3.old/gopherd/authenticate.c gopher2_3/gopherd/authenticate.c --- gopher2_3.old/gopherd/authenticate.c Sat Aug 12 16:34:47 2000 +++ gopher2_3/gopherd/authenticate.c Sat Aug 12 16:51:51 2000 @@ -494,11 +494,12 @@ char keystr[256]; char *cp; Desnum c; - int i; + int i, keysize; - strcpy(keystr, user); - strcat(keystr, ip); - strcat(keystr, key); + keysize = sizeof(keystr)-1, memset(keystr, 0, keysize+1); + strncat(keystr, user, keysize), i = keysize - strlen(keystr); + strncat(keystr, ip, i), i = keysize - strlen(keystr); + strncat(keystr, key, i); Debug("Encoding key %s\n", keystr);