mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-09-01 14:55:30 +00:00
Don't trust client to provide a valid hostname. Be lenient in parsing client hostnames from lease file
This commit is contained in:
@@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char copyright[] =
|
static char copyright[] =
|
||||||
"$Id: confpars.c,v 1.42 1997/06/03 01:06:10 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium. All rights reserved.\n";
|
"$Id: confpars.c,v 1.43 1997/06/10 05:49:14 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium. All rights reserved.\n";
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
#include "dhcpd.h"
|
#include "dhcpd.h"
|
||||||
@@ -1231,12 +1231,14 @@ struct lease *parse_lease_declaration (cfile)
|
|||||||
|
|
||||||
case CLIENT_HOSTNAME:
|
case CLIENT_HOSTNAME:
|
||||||
seenbit = 1024;
|
seenbit = 1024;
|
||||||
|
token = peek_token (&val, cfile);
|
||||||
|
if (token == STRING)
|
||||||
|
lease.client_hostname =
|
||||||
|
parse_string (cfile);
|
||||||
|
else
|
||||||
lease.client_hostname =
|
lease.client_hostname =
|
||||||
parse_host_name (cfile);
|
parse_host_name (cfile);
|
||||||
if (!lease.client_hostname) {
|
token = CLIENT_HOSTNAME;
|
||||||
seenbit = 0;
|
|
||||||
return (struct lease *)0;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
static char copyright[] =
|
static char copyright[] =
|
||||||
"$Id: db.c,v 1.12 1997/06/08 03:08:29 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium. All rights reserved.\n";
|
"$Id: db.c,v 1.13 1997/06/10 05:49:15 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium. All rights reserved.\n";
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
#include "dhcpd.h"
|
#include "dhcpd.h"
|
||||||
@@ -135,7 +135,7 @@ int write_lease (lease)
|
|||||||
}
|
}
|
||||||
if (lease -> client_hostname) {
|
if (lease -> client_hostname) {
|
||||||
errno = 0;
|
errno = 0;
|
||||||
fprintf (db_file, "\n\tclient-hostname %s;",
|
fprintf (db_file, "\n\tclient-hostname \"%s\";",
|
||||||
lease -> client_hostname);
|
lease -> client_hostname);
|
||||||
if (errno) {
|
if (errno) {
|
||||||
++errors;
|
++errors;
|
||||||
|
Reference in New Issue
Block a user