From 949e9621d10faada3bb55a4aa206df44e7d39ae8 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Wed, 2 Jun 2021 15:51:50 +0200 Subject: udhcpc: get rid of client_data.fqdn field function old new delta attach_option 253 276 +23 udhcpc_main 2582 2588 +6 udhcpc6_main 2579 2571 -8 add_client_options 175 158 -17 udhcp_insert_new_option 169 138 -31 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 2/3 up/down: 29/-56) Total: -27 bytes Signed-off-by: Denys Vlasenko --- networking/udhcp/common.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'networking/udhcp/common.c') diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c index 7929950f5..b325c4112 100644 --- a/networking/udhcp/common.c +++ b/networking/udhcp/common.c @@ -424,7 +424,6 @@ int FAST_FUNC udhcp_str2nip(const char *str, void *arg) void* FAST_FUNC udhcp_insert_new_option( struct option_set **opt_list, unsigned code, - const void *buffer, unsigned length, bool dhcpv6) { @@ -434,17 +433,15 @@ void* FAST_FUNC udhcp_insert_new_option( log2("attaching option %02x to list", code); new = xmalloc(sizeof(*new)); if (!dhcpv6) { - new->data = xmalloc(length + OPT_DATA); + new->data = xzalloc(length + OPT_DATA); new->data[OPT_CODE] = code; new->data[OPT_LEN] = length; - memcpy(new->data + OPT_DATA, buffer, length); } else { - new->data = xmalloc(length + D6_OPT_DATA); + new->data = xzalloc(length + D6_OPT_DATA); new->data[D6_OPT_CODE] = code >> 8; new->data[D6_OPT_CODE + 1] = code & 0xff; new->data[D6_OPT_LEN] = length >> 8; new->data[D6_OPT_LEN + 1] = length & 0xff; - memcpy(new->data + D6_OPT_DATA, buffer, length); } curr = opt_list; @@ -498,7 +495,11 @@ static NOINLINE void attach_option( existing = udhcp_find_option(*opt_list, optflag->code); if (!existing) { /* make a new option */ - udhcp_insert_new_option(opt_list, optflag->code, buffer, length, dhcpv6); + uint8_t *p = udhcp_insert_new_option(opt_list, optflag->code, length, dhcpv6); + if (!dhcpv6) + memcpy(p + OPT_DATA, buffer, length); + else + memcpy(p + D6_OPT_DATA, buffer, length); goto ret; } -- cgit v1.2.3