]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
Make sure specified UDP port is valid
authorTed Lemon <source@isc.org>
Thu, 29 Aug 1996 09:55:52 +0000 (09:55 +0000)
committerTed Lemon <source@isc.org>
Thu, 29 Aug 1996 09:55:52 +0000 (09:55 +0000)
dhcpd.c
server/dhcpd.c

diff --git a/dhcpd.c b/dhcpd.c
index 5410a5ac79e018b604e5487d77103f339763bd21..12054dc9393b101237d20f58604068a997b23973 100644 (file)
--- 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 ()
index 5410a5ac79e018b604e5487d77103f339763bd21..12054dc9393b101237d20f58604068a997b23973 100644 (file)
@@ -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 ()