Security fix for CVE-2018-5732 CVE-2018-5733
This commit is contained in:
parent
c6bcdf99e5
commit
6b39f020c6
41
dhcp-4.3.6-options_overflow.patch
Normal file
41
dhcp-4.3.6-options_overflow.patch
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
diff --git a/common/options.c b/common/options.c
|
||||||
|
index 83e0384..8a1deca 100644
|
||||||
|
--- a/common/options.c
|
||||||
|
+++ b/common/options.c
|
||||||
|
@@ -1672,7 +1672,8 @@ format_min_length(format, oc)
|
||||||
|
|
||||||
|
|
||||||
|
/* Format the specified option so that a human can easily read it. */
|
||||||
|
-
|
||||||
|
+/* Maximum pretty printed size */
|
||||||
|
+#define MAX_OUTPUT_SIZE 32*1024
|
||||||
|
const char *pretty_print_option (option, data, len, emit_commas, emit_quotes)
|
||||||
|
struct option *option;
|
||||||
|
const unsigned char *data;
|
||||||
|
@@ -1680,8 +1681,9 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes)
|
||||||
|
int emit_commas;
|
||||||
|
int emit_quotes;
|
||||||
|
{
|
||||||
|
- static char optbuf [32768]; /* XXX */
|
||||||
|
- static char *endbuf = &optbuf[sizeof(optbuf)];
|
||||||
|
+ /* We add 128 byte pad so we don't have to add checks everywhere. */
|
||||||
|
+ static char optbuf [MAX_OUTPUT_SIZE + 128]; /* XXX */
|
||||||
|
+ static char *endbuf = optbuf + MAX_OUTPUT_SIZE;
|
||||||
|
int hunksize = 0;
|
||||||
|
int opthunk = 0;
|
||||||
|
int hunkinc = 0;
|
||||||
|
@@ -2132,7 +2134,14 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes)
|
||||||
|
log_error ("Unexpected format code %c",
|
||||||
|
fmtbuf [j]);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
op += strlen (op);
|
||||||
|
+ if (op >= endbuf) {
|
||||||
|
+ log_error ("Option data exceeds"
|
||||||
|
+ " maximum size %d", MAX_OUTPUT_SIZE);
|
||||||
|
+ return ("<error>");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (dp == data + len)
|
||||||
|
break;
|
||||||
|
if (j + 1 < numelem && comma != ':')
|
13
dhcp-4.3.6-reference_count_overflow.patch
Normal file
13
dhcp-4.3.6-reference_count_overflow.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/common/options.c b/common/options.c
|
||||||
|
index 83e0384..a58c5fc 100644
|
||||||
|
--- a/common/options.c
|
||||||
|
+++ b/common/options.c
|
||||||
|
@@ -189,6 +189,8 @@ int parse_option_buffer (options, buffer, length, universe)
|
||||||
|
|
||||||
|
/* If the length is outrageous, the options are bad. */
|
||||||
|
if (offset + len > length) {
|
||||||
|
+ /* Avoid reference count overflow */
|
||||||
|
+ option_dereference(&option, MDL);
|
||||||
|
reason = "option length exceeds option buffer length";
|
||||||
|
bogus:
|
||||||
|
log_error("parse_option_buffer: malformed option "
|
12
dhcp.spec
12
dhcp.spec
@ -16,7 +16,7 @@
|
|||||||
Summary: Dynamic host configuration protocol software
|
Summary: Dynamic host configuration protocol software
|
||||||
Name: dhcp
|
Name: dhcp
|
||||||
Version: 4.3.6
|
Version: 4.3.6
|
||||||
Release: 16%{?dist}
|
Release: 17%{?dist}
|
||||||
# NEVER CHANGE THE EPOCH on this package. The previous maintainer (prior to
|
# NEVER CHANGE THE EPOCH on this package. The previous maintainer (prior to
|
||||||
# dcantrell maintaining the package) made incorrect use of the epoch and
|
# dcantrell maintaining the package) made incorrect use of the epoch and
|
||||||
# that's why it is at 12 now. It should have never been used, but it was.
|
# that's why it is at 12 now. It should have never been used, but it was.
|
||||||
@ -75,7 +75,8 @@ Patch38: dhcp-dhclient-preinit6s.patch
|
|||||||
Patch39: dhcp-handle_ctx_signals.patch
|
Patch39: dhcp-handle_ctx_signals.patch
|
||||||
Patch40: dhcp-4.3.6-omapi-leak.patch
|
Patch40: dhcp-4.3.6-omapi-leak.patch
|
||||||
Patch41: dhcp-4.3.6-isc-util.patch
|
Patch41: dhcp-4.3.6-isc-util.patch
|
||||||
|
Patch42: dhcp-4.3.6-options_overflow.patch
|
||||||
|
Patch43: dhcp-4.3.6-reference_count_overflow.patch
|
||||||
|
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
@ -344,6 +345,10 @@ rm bind/bind.tar.gz
|
|||||||
# include isc/util.h explicitly, is it no longer contained in used headers
|
# include isc/util.h explicitly, is it no longer contained in used headers
|
||||||
%patch41 -p1 -b .isc-util
|
%patch41 -p1 -b .isc-util
|
||||||
|
|
||||||
|
## https://bugzilla.redhat.com/show_bug.cgi?id=1550246
|
||||||
|
%patch42 -p1
|
||||||
|
%patch43 -p1
|
||||||
|
|
||||||
# DHCLIENT_DEFAULT_PREFIX_LEN 64 -> 128
|
# DHCLIENT_DEFAULT_PREFIX_LEN 64 -> 128
|
||||||
# https://bugzilla.gnome.org/show_bug.cgi?id=656610
|
# https://bugzilla.gnome.org/show_bug.cgi?id=656610
|
||||||
sed -i -e 's|DHCLIENT_DEFAULT_PREFIX_LEN 64|DHCLIENT_DEFAULT_PREFIX_LEN 128|g' includes/site.h
|
sed -i -e 's|DHCLIENT_DEFAULT_PREFIX_LEN 64|DHCLIENT_DEFAULT_PREFIX_LEN 128|g' includes/site.h
|
||||||
@ -666,6 +671,9 @@ done
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Mar 1 2018 Pavel Zhukov <pzhukov@redhat.com> - 12:4.3.6-17
|
||||||
|
- Fix CVE-2018-5732 CVE-2018-5733 (#1550246)
|
||||||
|
|
||||||
* Thu Feb 22 2018 Petr Menšík <pemensik@redhat.com> - 12:4.3.6-16
|
* Thu Feb 22 2018 Petr Menšík <pemensik@redhat.com> - 12:4.3.6-16
|
||||||
- Compile with recent bind includes, that does not include isc/util.h
|
- Compile with recent bind includes, that does not include isc/util.h
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user