summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/server.c
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>1997-09-04 00:38:22 +0000
committerbrian <brian@FreeBSD.org>1997-09-04 00:38:22 +0000
commit01052674bd9cd2de028c4c476a70fa10439f5e6a (patch)
tree053c5b0cbcff9693f61532dc918acb018a8ceebf /usr.sbin/ppp/server.c
parenta69830cd9ab89aec27c439dd58e7f6af6ff655f1 (diff)
downloadFreeBSD-src-01052674bd9cd2de028c4c476a70fa10439f5e6a.zip
FreeBSD-src-01052674bd9cd2de028c4c476a70fa10439f5e6a.tar.gz
Install as group ``network''
Insist that uid == 0 for client ppp Disallow client sockets if no password is specified Don't exit on failure to open client socket for listening Allow specification of null local password Use reasonable size (smaller) ``vector''s in auth.c Fix "passwd ..." usage message Insist on "all" as arg to "quit" (if any) Drop client socket connection before Cleanup() when "quit all"
Diffstat (limited to 'usr.sbin/ppp/server.c')
-rw-r--r--usr.sbin/ppp/server.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/usr.sbin/ppp/server.c b/usr.sbin/ppp/server.c
index db9635e..7aab041 100644
--- a/usr.sbin/ppp/server.c
+++ b/usr.sbin/ppp/server.c
@@ -25,10 +25,16 @@ ServerLocalOpen(const char *name, mode_t mask)
{
int s;
+ if (VarLocalAuth == LOCAL_DENY) {
+ LogPrintf(LogERROR, "Local: Can't open socket %s: No password "
+ "in ppp.secret\n", name);
+ return 1;
+ }
+
ifsun.sun_len = strlen(name);
if (ifsun.sun_len > sizeof ifsun.sun_path - 1) {
LogPrintf(LogERROR, "Local: %s: Path too long\n", name);
- return 1;
+ return 2;
}
ifsun.sun_family = AF_LOCAL;
strcpy(ifsun.sun_path, name);
@@ -36,7 +42,7 @@ ServerLocalOpen(const char *name, mode_t mask)
s = socket(PF_LOCAL, SOCK_STREAM, 0);
if (s < 0) {
LogPrintf(LogERROR, "Local: socket: %s\n", strerror(errno));
- return 2;
+ return 3;
}
setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &s, sizeof s);
mask = umask(mask);
@@ -47,14 +53,14 @@ ServerLocalOpen(const char *name, mode_t mask)
fprintf(VarTerm, "Wait for a while, then try again.\n");
close(s);
unlink(name);
- return 3;
+ return 4;
}
umask(mask);
if (listen(s, 5) != 0) {
LogPrintf(LogERROR, "Local: Unable to listen to socket - OS overload?\n");
close(s);
unlink(name);
- return 4;
+ return 5;
}
ServerClose();
server = s;
@@ -69,10 +75,15 @@ ServerTcpOpen(int port)
struct sockaddr_in ifsin;
int s;
+ if (VarLocalAuth == LOCAL_DENY) {
+ LogPrintf(LogERROR, "Tcp: Can't open socket %d: No password "
+ "in ppp.secret\n", port);
+ return 6;
+ }
s = socket(PF_INET, SOCK_STREAM, 0);
if (s < 0) {
LogPrintf(LogERROR, "Tcp: socket: %s\n", strerror(errno));
- return 5;
+ return 7;
}
ifsin.sin_family = AF_INET;
ifsin.sin_addr.s_addr = INADDR_ANY;
@@ -83,12 +94,12 @@ ServerTcpOpen(int port)
if (errno == EADDRINUSE && VarTerm)
fprintf(VarTerm, "Wait for a while, then try again.\n");
close(s);
- return 6;
+ return 8;
}
if (listen(s, 5) != 0) {
LogPrintf(LogERROR, "Tcp: Unable to listen to socket - OS overload?\n");
close(s);
- return 7;
+ return 9;
}
ServerClose();
server = s;
OpenPOWER on IntegriCloud