summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Lemon <source@isc.org>1996-08-29 09:55:52 +0000
committerTed Lemon <source@isc.org>1996-08-29 09:55:52 +0000
commiteaeb3d58209b96bc55e2d66d6fcb38d4b56d6bb5 (patch)
tree0697938aa40d3d94673f91fce2aacaac273a67ee
parent88ddda34a5c53c4926857dd32b9ebdd3ba463333 (diff)
downloadisc-dhcp-eaeb3d58209b96bc55e2d66d6fcb38d4b56d6bb5.tar.gz
Make sure specified UDP port is valid
-rw-r--r--dhcpd.c19
-rw-r--r--server/dhcpd.c19
2 files changed, 28 insertions, 10 deletions
diff --git a/dhcpd.c b/dhcpd.c
index 5410a5ac..12054dc9 100644
--- a/dhcpd.c
+++ b/dhcpd.c
@@ -41,7 +41,7 @@
*/
static char objcopyright[] =
-"$Id: dhcpd.c,v 1.28 1996/08/29 09:49:52 mellon Exp $ Copyright 1995, 1996 The Internet Software Consortium.";
+"$Id: dhcpd.c,v 1.29 1996/08/29 09:55:52 mellon Exp $ Copyright 1995, 1996 The Internet Software Consortium.";
static char copyright[] =
"Copyright 1995, 1996 The Internet Software Consortium.";
static char arr [] = "All rights reserved.";
@@ -72,6 +72,7 @@ int main (argc, argv, envp)
int i, status;
struct servent *ent;
int pidfilewritten = 0;
+ char *s;
#ifndef DEBUG
int pid;
char pbuf [20];
@@ -95,13 +96,19 @@ int main (argc, argv, envp)
note (copyright);
note (arr);
- log_perror = 0;
-
for (i = 1; i < argc; i++) {
if (!strcmp (argv [i], "-p")) {
if (++i == argc)
usage ();
- server_port = htons (atoi (argv [i]));
+ for (s = argv [i]; *s; s++)
+ if (!isdigit (*s))
+ error ("%s: not a valid UDP port",
+ argv [i]);
+ server_port = atoi (argv [i]);
+ if (server_port < 1 || server_port > 65535)
+ error ("%s: not a valid UDP port",
+ argv [i]);
+ server_port = htons (server_port);
debug ("binding to user-specified port %d",
ntohs (server_port));
} else if (!strcmp (argv [i], "-f")) {
@@ -130,6 +137,8 @@ int main (argc, argv, envp)
}
}
+ log_perror = 0;
+
#ifndef DEBUG
if (daemon) {
/* Become a daemon... */
@@ -215,7 +224,7 @@ int main (argc, argv, envp)
static void usage ()
{
- error ("Usage: dhcpd [-p <port>] [-d] [-f] [if0 [...ifN]]");
+ error ("Usage: dhcpd [-p <UDP port #>] [-d] [-f] [if0 [...ifN]]");
}
void cleanup ()
diff --git a/server/dhcpd.c b/server/dhcpd.c
index 5410a5ac..12054dc9 100644
--- a/server/dhcpd.c
+++ b/server/dhcpd.c
@@ -41,7 +41,7 @@
*/
static char objcopyright[] =
-"$Id: dhcpd.c,v 1.28 1996/08/29 09:49:52 mellon Exp $ Copyright 1995, 1996 The Internet Software Consortium.";
+"$Id: dhcpd.c,v 1.29 1996/08/29 09:55:52 mellon Exp $ Copyright 1995, 1996 The Internet Software Consortium.";
static char copyright[] =
"Copyright 1995, 1996 The Internet Software Consortium.";
static char arr [] = "All rights reserved.";
@@ -72,6 +72,7 @@ int main (argc, argv, envp)
int i, status;
struct servent *ent;
int pidfilewritten = 0;
+ char *s;
#ifndef DEBUG
int pid;
char pbuf [20];
@@ -95,13 +96,19 @@ int main (argc, argv, envp)
note (copyright);
note (arr);
- log_perror = 0;
-
for (i = 1; i < argc; i++) {
if (!strcmp (argv [i], "-p")) {
if (++i == argc)
usage ();
- server_port = htons (atoi (argv [i]));
+ for (s = argv [i]; *s; s++)
+ if (!isdigit (*s))
+ error ("%s: not a valid UDP port",
+ argv [i]);
+ server_port = atoi (argv [i]);
+ if (server_port < 1 || server_port > 65535)
+ error ("%s: not a valid UDP port",
+ argv [i]);
+ server_port = htons (server_port);
debug ("binding to user-specified port %d",
ntohs (server_port));
} else if (!strcmp (argv [i], "-f")) {
@@ -130,6 +137,8 @@ int main (argc, argv, envp)
}
}
+ log_perror = 0;
+
#ifndef DEBUG
if (daemon) {
/* Become a daemon... */
@@ -215,7 +224,7 @@ int main (argc, argv, envp)
static void usage ()
{
- error ("Usage: dhcpd [-p <port>] [-d] [-f] [if0 [...ifN]]");
+ error ("Usage: dhcpd [-p <UDP port #>] [-d] [-f] [if0 [...ifN]]");
}
void cleanup ()