diff options
author | 1996-07-19 03:09:41 +0000 | |
---|---|---|
committer | 1996-07-19 03:09:41 +0000 | |
commit | fbfbd66cb367a2ec3267b082fd25311590fa15c3 (patch) | |
tree | 0519d083afdc351cb424a0c4018d8b59a1b6975d | |
parent | bugfix, paths added with -w should now be searched in the same order (diff) | |
download | wireguard-openbsd-fbfbd66cb367a2ec3267b082fd25311590fa15c3.tar.xz wireguard-openbsd-fbfbd66cb367a2ec3267b082fd25311590fa15c3.zip |
Patch to catch non-printables in the announce string
(ala the 'flash' hack) from FreeBSD (cleanup of patch
from Dima Ruban <dima@demos.su>).
Also fixes a syslog() message--we use recvfrom now.
-rw-r--r-- | libexec/talkd/process.c | 12 | ||||
-rw-r--r-- | libexec/talkd/talkd.c | 6 |
2 files changed, 13 insertions, 5 deletions
diff --git a/libexec/talkd/process.c b/libexec/talkd/process.c index 2539be71e1a..e80e525bac5 100644 --- a/libexec/talkd/process.c +++ b/libexec/talkd/process.c @@ -1,4 +1,4 @@ -/* $OpenBSD: process.c,v 1.7 1996/07/02 04:11:15 deraadt Exp $ */ +/* $OpenBSD: process.c,v 1.8 1996/07/19 03:09:41 millert Exp $ */ /* * Copyright (c) 1983 Regents of the University of California. @@ -35,7 +35,7 @@ #ifndef lint /*static char sccsid[] = "from: @(#)process.c 5.10 (Berkeley) 2/26/91";*/ -static char rcsid[] = "$Id: process.c,v 1.7 1996/07/02 04:11:15 deraadt Exp $"; +static char rcsid[] = "$Id: process.c,v 1.8 1996/07/19 03:09:41 millert Exp $"; #endif /* not lint */ /* @@ -56,6 +56,7 @@ static char rcsid[] = "$Id: process.c,v 1.7 1996/07/02 04:11:15 deraadt Exp $"; #include <syslog.h> #include <stdio.h> #include <string.h> +#include <ctype.h> #include <paths.h> #include "talkd.h" @@ -67,6 +68,7 @@ process_request(mp, rp) register CTL_RESPONSE *rp; { register CTL_MSG *ptr; + char *s; rp->vers = TALK_VERSION; rp->type = mp->type; @@ -89,6 +91,12 @@ process_request(mp, rp) rp->answer = BADCTLADDR; return; } + for (s = mp->l_name; *s; s++) + if (!isprint(*s)) { + syslog(LOG_NOTICE, "Illegal user name. Aborting"); + rp->answer = FAILED; + return; + } if (memcmp(&satosin(&rp->addr)->sin_addr, &satosin(&mp->ctl_addr)->sin_addr, sizeof(struct in_addr))) { diff --git a/libexec/talkd/talkd.c b/libexec/talkd/talkd.c index b99bcb2b212..e5d4045ef7d 100644 --- a/libexec/talkd/talkd.c +++ b/libexec/talkd/talkd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: talkd.c,v 1.5 1996/07/18 00:18:54 deraadt Exp $ */ +/* $OpenBSD: talkd.c,v 1.6 1996/07/19 03:09:41 millert Exp $ */ /* * Copyright (c) 1983 Regents of the University of California. @@ -41,7 +41,7 @@ char copyright[] = #ifndef lint /*static char sccsid[] = "from: @(#)talkd.c 5.8 (Berkeley) 2/26/91";*/ -static char rcsid[] = "$Id: talkd.c,v 1.5 1996/07/18 00:18:54 deraadt Exp $"; +static char rcsid[] = "$Id: talkd.c,v 1.6 1996/07/19 03:09:41 millert Exp $"; #endif /* not lint */ /* @@ -107,7 +107,7 @@ main(argc, argv) (struct sockaddr *)&response.addr, &len); if (cc != sizeof (request)) { if (cc < 0 && errno != EINTR) - syslog(LOG_WARNING, "recv: %m"); + syslog(LOG_WARNING, "recvfrom: %m"); continue; } lastmsgtime = time(0); |