|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
b6578c0 |
From e3abee3dee32ae7cd8e937e44ace94ab7f45ede9 Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
Date: Sun, 18 Jun 2017 16:07:57 -0400
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
b6578c0 |
Subject: [PATCH] resolved: simplify alloc size calculation
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
The allocation size was calculated in a complicated way, and for values
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
close to the page size we would actually allocate less than requested.
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
Reported by Chris Coulson <chris.coulson@canonical.com>.
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
CVE-2017-9445
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
---
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
src/resolve/resolved-dns-packet.c | 8 +-------
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
src/resolve/resolved-dns-packet.h | 2 --
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
2 files changed, 1 insertion(+), 9 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
diff --git a/src/resolve/resolved-dns-packet.c b/src/resolve/resolved-dns-packet.c
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
index 8b620cb6a8..7262a50eee 100644
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
--- a/src/resolve/resolved-dns-packet.c
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
+++ b/src/resolve/resolved-dns-packet.c
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
@@ -47,13 +47,7 @@ int dns_packet_new(DnsPacket **ret, DnsProtocol protocol, size_t mtu) {
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
assert(ret);
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
- if (mtu <= UDP_PACKET_HEADER_SIZE)
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
- a = DNS_PACKET_SIZE_START;
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
- else
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
- a = mtu - UDP_PACKET_HEADER_SIZE;
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
-
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
- if (a < DNS_PACKET_HEADER_SIZE)
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
- a = DNS_PACKET_HEADER_SIZE;
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
+ a = MAX(mtu, DNS_PACKET_HEADER_SIZE);
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
/* round up to next page size */
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
a = PAGE_ALIGN(ALIGN(sizeof(DnsPacket)) + a) - ALIGN(sizeof(DnsPacket));
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
diff --git a/src/resolve/resolved-dns-packet.h b/src/resolve/resolved-dns-packet.h
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
index 7b7d4e14c9..05a7a844e4 100644
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
--- a/src/resolve/resolved-dns-packet.h
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
+++ b/src/resolve/resolved-dns-packet.h
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
@@ -66,8 +66,6 @@ struct DnsPacketHeader {
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
/* With EDNS0 we can use larger packets, default to 4096, which is what is commonly used */
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
#define DNS_PACKET_UNICAST_SIZE_LARGE_MAX 4096
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
-#define DNS_PACKET_SIZE_START 512
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
-
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
struct DnsPacket {
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
int n_ref;
|
|
![](https://seccdn.libravatar.org/avatar/74d2a4e8b5849d63c6838ef3fb9772b27447d57f0ac32af5cd03096343616233?s=16&d=retro) |
1d5d446 |
DnsProtocol protocol;
|