]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
Don't write leases that contain non-printable or whitespace characters.
authorTed Lemon <source@isc.org>
Wed, 5 Aug 1998 19:32:20 +0000 (19:32 +0000)
committerTed Lemon <source@isc.org>
Wed, 5 Aug 1998 19:32:20 +0000 (19:32 +0000)
server/db.c

index 445def0215d9b0032df135c619bdcc9a88ead4ec..a3469f7aff52077f0b1ea7fdb167c308fa93f262 100644 (file)
@@ -42,7 +42,7 @@
 
 #ifndef lint
 static char copyright[] =
-"$Id: db.c,v 1.18 1998/03/15 20:46:22 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium.  All rights reserved.\n";
+"$Id: db.c,v 1.19 1998/08/05 19:32:20 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium.  All rights reserved.\n";
 #endif /* not lint */
 
 #include "dhcpd.h"
@@ -61,6 +61,7 @@ int write_lease (lease)
        struct tm *t;
        char tbuf [64];
        int errors = 0;
+       int i;
 
        if (counting)
                ++count;
@@ -137,6 +138,10 @@ int write_lease (lease)
                }
        }
        if (lease -> client_hostname) {
+               for (i = 0; lease -> client_hostname [i]; i++)
+                       if (lease -> client_hostname [i] < 33 ||
+                           lease -> client_hostname [i] > 126)
+                               goto bad_client_hostname;
                errno = 0;
                fprintf (db_file, "\n\tclient-hostname \"%s\";",
                         lease -> client_hostname);
@@ -144,7 +149,13 @@ int write_lease (lease)
                        ++errors;
                }
        }
+       bad_client_hostname:
        if (lease -> hostname) {
+               for (i = 0; lease -> hostname [i]; i++)
+                       if (lease -> hostname [i] < 33 ||
+                           lease -> hostname [i] > 126)
+                               goto bad_hostname;
+               errno = 0;
                errno = 0;
                fprintf (db_file, "\n\thostname \"%s\";",
                         lease -> hostname);
@@ -152,6 +163,7 @@ int write_lease (lease)
                        ++errors;
                }
        }
+       bad_hostname:
        errno = 0;
        fputs ("\n}\n", db_file);
        if (errno) {