From: Ted Lemon Date: Fri, 27 Apr 2001 21:32:48 +0000 (+0000) Subject: Fix some host references. X-Git-Tag: V3-RC3~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=225fed9174edb105d317787e3df5edba5df51f4c;p=thirdparty%2Fdhcp.git Fix some host references. --- diff --git a/server/dhcp.c b/server/dhcp.c index ca611b9af..8bf409e19 100644 --- a/server/dhcp.c +++ b/server/dhcp.c @@ -43,7 +43,7 @@ #ifndef lint static char copyright[] = -"$Id: dhcp.c,v 1.190 2001/04/18 18:58:39 mellon Exp $ Copyright (c) 1995-2001 The Internet Software Consortium. All rights reserved.\n"; +"$Id: dhcp.c,v 1.191 2001/04/27 21:32:48 mellon Exp $ Copyright (c) 1995-2001 The Internet Software Consortium. All rights reserved.\n"; #endif /* not lint */ #include "dhcpd.h" @@ -1619,7 +1619,7 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp) break; } if (h) - host_reference (&lease -> host, hp, MDL); + host_reference (&lease -> host, h, MDL); } if (hp) host_dereference (&hp, MDL); @@ -3250,11 +3250,22 @@ int find_lease (struct lease **lp, hang it off the lease so that we can use the supplied options. */ if (lease && host && !lease -> host) { - for (; host; host = host -> n_ipaddr) { - if (!host -> fixed_addr) { - host_reference (&lease -> host, host, MDL); + struct host_decl *p = (struct host_decl *)0; + struct host_decl *n = (struct host_decl *)0; + host_reference (&p, host, MDL); + while (p) { + if (!p -> fixed_addr) { + host_reference (&lease -> host, p, MDL); + host_dereference (&p, MDL); break; } + if (p -> n_ipaddr) + host_reference (&n, p -> n_ipaddr, MDL); + host_dereference (&p, MDL); + if (n) { + host_reference (&p, n, MDL); + host_dereference (&n, MDL); + } } }