summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkrw <krw@openbsd.org>2013-12-14 05:07:09 +0000
committerkrw <krw@openbsd.org>2013-12-14 05:07:09 +0000
commit45a41b0381f3ef9f967afda2cda9bad9b166ff47 (patch)
tree2bf949522bda86dde57e960f5bd2a3af8d5c154b
parentZero out dirent structures that will be copied out to avoid leaking garbage (diff)
downloadwireguard-openbsd-45a41b0381f3ef9f967afda2cda9bad9b166ff47.tar.xz
wireguard-openbsd-45a41b0381f3ef9f967afda2cda9bad9b166ff47.zip
When cloning leases remember to clone address, next_server and
resolv_conf fields. Makes 'effective' lease written by '-L' a bit more useful.
-rw-r--r--sbin/dhclient/dhclient.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sbin/dhclient/dhclient.c b/sbin/dhclient/dhclient.c
index 706c84a672e..17c50bbaecd 100644
--- a/sbin/dhclient/dhclient.c
+++ b/sbin/dhclient/dhclient.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dhclient.c,v 1.277 2013/12/10 17:01:27 krw Exp $ */
+/* $OpenBSD: dhclient.c,v 1.278 2013/12/14 05:07:09 krw Exp $ */
/*
* Copyright 2004 Henning Brauer <henning@openbsd.org>
@@ -2251,6 +2251,8 @@ clone_lease(struct client_lease *oldlease)
newlease->rebind = oldlease->rebind;
newlease->is_static = oldlease->is_static;
newlease->is_bootp = oldlease->is_bootp;
+ newlease->address = oldlease->address;
+ newlease->next_server = oldlease->next_server;
if (oldlease->server_name) {
newlease->server_name = strdup(oldlease->server_name);
@@ -2262,6 +2264,11 @@ clone_lease(struct client_lease *oldlease)
if (newlease->filename == NULL)
goto cleanup;
}
+ if (oldlease->resolv_conf) {
+ newlease->resolv_conf = strdup(oldlease->resolv_conf);
+ if (newlease->resolv_conf == NULL)
+ goto cleanup;
+ }
for (i = 0; i < 256; i++) {
newlease->options[i].len = oldlease->options[i].len;