Remove offsets from the dns_name and dns_fixedname structures
The offsets were meant to speed-up the repeated dns_name operations, but it was experimentally proven that there's actually no real-world benefit. Remove the offsets and labels fields from the dns_name and the static offsets fields to save 128 bytes from the fixedname in favor of calculating labels and offsets only when needed.
This commit is contained in:
@@ -41,8 +41,6 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||
dns_fixedname_t old_fixed;
|
||||
dns_name_t *new_name = dns_fixedname_initname(&new_fixed);
|
||||
dns_name_t *old_name = dns_fixedname_initname(&old_fixed);
|
||||
uint8_t *new_offsets;
|
||||
uint8_t *old_offsets;
|
||||
dns_decompress_t dctx = DNS_DECOMPRESS_PERMITTED;
|
||||
isc_buffer_t new_buf;
|
||||
isc_buffer_t old_buf;
|
||||
@@ -81,12 +79,6 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
||||
|
||||
REQUIRE(new_result == old_result);
|
||||
REQUIRE(dns_name_equal(new_name, old_name));
|
||||
REQUIRE(new_name->labels == old_name->labels);
|
||||
|
||||
new_offsets = new_name->offsets;
|
||||
old_offsets = old_name->offsets;
|
||||
REQUIRE(new_offsets != NULL && old_offsets != NULL);
|
||||
REQUIRE(memcmp(new_offsets, old_offsets, old_name->labels) == 0);
|
||||
|
||||
REQUIRE(new_fixed.buffer.current == old_fixed.buffer.current);
|
||||
REQUIRE(new_fixed.buffer.active == old_fixed.buffer.active);
|
||||
|
||||
@@ -34,17 +34,12 @@ typedef enum { fw_start = 0, fw_ordinary, fw_newcurrent } fw_state;
|
||||
|
||||
#define VALID_NAME(n) ISC_MAGIC_VALID(n, DNS_NAME_MAGIC)
|
||||
|
||||
#define INIT_OFFSETS(name, var, default_offsets) \
|
||||
if ((name)->offsets != NULL) \
|
||||
var = (name)->offsets; \
|
||||
else \
|
||||
var = (default_offsets);
|
||||
#define INIT_OFFSETS(name, var, default_offsets) (var) = (default_offsets)
|
||||
|
||||
#define MAKE_EMPTY(name) \
|
||||
do { \
|
||||
name->ndata = NULL; \
|
||||
name->length = 0; \
|
||||
name->labels = 0; \
|
||||
name->attributes.absolute = false; \
|
||||
} while (0)
|
||||
|
||||
@@ -197,7 +192,6 @@ old_name_fromwire(dns_name_t *name, isc_buffer_t *source, dns_decompress_t dctx,
|
||||
}
|
||||
|
||||
name->ndata = (unsigned char *)target->base + target->used;
|
||||
name->labels = labels;
|
||||
name->length = nused;
|
||||
name->attributes.absolute = true;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user