SHA256
1
0
forked from pool/dhcp
dhcp/0014-dhclient6-unsigned-lifetimes-for-script-bsc-926159.patch
Reinhard Max e9398b14d9 - Update to dhcp-4.3.6-P1:
* CVE-2018-5733, bsc#1083303: reference count overflow in dhcpd.
  * CVE-2018-5732, bsc#1083302: buffer overflow bug in dhclient.
  * Plugged a socket descriptor leak in OMAPI
  * The server now allows the client identifier (option 61) to own
    leases in more than one subnet concurrently [ISC-Bugs #41358].
  * When replying to a DHCPINFORM, the server will now include
    options specified at the pool scope, provided the ciaddr field
    of the DHCPINFORM is populated.
    [ISC-Bugs #43219] [ISC-Bugs #45051].
  * When memory allocation fails in a repeated way the process
    writes "Run out of memory." on the standard error and exists
    with status 1  [ISC-Bugs #32744].
  * The new lmdb (Lightning Memory DataBase) bind9 configure
    option is now disabled by default to avoid the presence of
    this library to be detected which can lead to a link failure.
    [ISC-Bugs #45069]
  * The linux interface discovery code has been modified to use
    getifaddrs() as is done for BSD and OS-X.
    [ISC-Bugs #28761] and others.
  * Fixed a bug in OMAPI that causes omshell to crash when a
    name-value pair with a zero length value is shipped in an
    object [ISC-Bugs #29108].
  * On 64-bit platforms, dhclient now generates the correct value
    for the script environment variable, "expiry", the lease
    expiry value exceeds 0x7FFFFFFF [ISC-Bugs #43326].
  * Common timer logic was modified to cap the maximum timeout
    values at 0x7FFFFFFF - 1 [ISC-Bugs #28038].
  * DHCP6 FQDN option unpacking code now correctly handles values
    that contain spaces, special, or non-printable characters.

OBS-URL: https://build.opensuse.org/package/show/network:dhcp/dhcp?expand=0&rev=186
2018-03-08 13:53:43 +00:00

69 lines
2.4 KiB
Diff

From 9267da086dcbb39509eae05d1d60ba37596a3f89 Mon Sep 17 00:00:00 2001
From: Marius Tomaschewski <mt@suse.de>
Date: Wed, 29 Apr 2015 11:18:36 +0200
Subject: dhclient6: unsigned lifetimes for script (bsc#926159)
Address/IA lifetimes are all unsigned, don't turn into signed
(negative e.g. in infinite case) when passing them to scripts
and format timestamps as long to not break them on 64bit archs.
References: bsc#926159
--- client/dhc6.c.orig
+++ client/dhc6.c
@@ -4344,8 +4344,8 @@ dhc6_marshall_values(const char *prefix,
client_envadd(client, prefix,
"ip6_type", "temporary");
}
- client_envadd(client, prefix, "life_starts", "%d",
- (int)(addr->starts));
+ client_envadd(client, prefix, "life_starts", "%ld",
+ (long)(addr->starts));
client_envadd(client, prefix, "preferred_life", "%u",
addr->preferred_life);
client_envadd(client, prefix, "max_life", "%u",
@@ -4356,8 +4356,8 @@ dhc6_marshall_values(const char *prefix,
if (ia != NULL) {
client_envadd(client, prefix, "iaid", "%s",
print_hex_1(4, ia->iaid, 12));
- client_envadd(client, prefix, "starts", "%d",
- (int)(ia->starts));
+ client_envadd(client, prefix, "starts", "%ld",
+ (long)(ia->starts));
client_envadd(client, prefix, "renew", "%u", ia->renew);
client_envadd(client, prefix, "rebind", "%u", ia->rebind);
}
--- client/dhclient.c.orig
+++ client/dhclient.c
@@ -3708,13 +3708,13 @@ write_client6_lease(struct client_state
return ISC_R_IOERROR;
if (ia->ia_type != D6O_IA_TA)
- stat = fprintf(leaseFile, " starts %d;\n"
+ stat = fprintf(leaseFile, " starts %ld;\n"
" renew %u;\n"
" rebind %u;\n",
- (int)ia->starts, ia->renew, ia->rebind);
+ (long)ia->starts, ia->renew, ia->rebind);
else
- stat = fprintf(leaseFile, " starts %d;\n",
- (int)ia->starts);
+ stat = fprintf(leaseFile, " starts %ld;\n",
+ (long)ia->starts);
if (stat <= 0)
return ISC_R_IOERROR;
@@ -3731,10 +3731,10 @@ write_client6_lease(struct client_state
if (stat <= 0)
return ISC_R_IOERROR;
- stat = fprintf(leaseFile, " starts %d;\n"
+ stat = fprintf(leaseFile, " starts %ld;\n"
" preferred-life %u;\n"
" max-life %u;\n",
- (int)addr->starts, addr->preferred_life,
+ (long)addr->starts, addr->preferred_life,
addr->max_life);
if (stat <= 0)
return ISC_R_IOERROR;