From: Arran Cudbard-Bell Date: Wed, 20 Jan 2021 13:30:52 +0000 (+0000) Subject: More ctx fixes (dhcpv4) X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=91759645264a531324267a4f5cefece3ee1459af;p=thirdparty%2Ffreeradius-server.git More ctx fixes (dhcpv4) --- diff --git a/src/modules/proto_dhcpv4/proto_dhcpv4.c b/src/modules/proto_dhcpv4/proto_dhcpv4.c index 9980ed97834..61164dc8a93 100644 --- a/src/modules/proto_dhcpv4/proto_dhcpv4.c +++ b/src/modules/proto_dhcpv4/proto_dhcpv4.c @@ -217,7 +217,7 @@ static int mod_decode(void const *instance, request_t *request, uint8_t *const d * transport, via a call to fr_dhcpv4_ok(). */ fr_cursor_init(&cursor, &request->request_pairs); - if (fr_dhcpv4_decode(packet, packet->data, packet->data_len, &cursor, &packet->code) < 0) { + if (fr_dhcpv4_decode(request->request_ctx, packet->data, packet->data_len, &cursor, &packet->code) < 0) { RPEDEBUG("Failed decoding packet"); return -1; } diff --git a/src/modules/proto_dhcpv4/proto_dhcpv4_process.c b/src/modules/proto_dhcpv4/proto_dhcpv4_process.c index 267831e816d..5ada8ce92b9 100644 --- a/src/modules/proto_dhcpv4/proto_dhcpv4_process.c +++ b/src/modules/proto_dhcpv4/proto_dhcpv4_process.c @@ -56,7 +56,7 @@ fr_dict_attr_autoload_t proto_dhcpv4_process_dict_attr[] = { */ static void dhcpv4_packet_debug(request_t *request, fr_radius_packet_t *packet, fr_pair_list_t *list, bool received) { - int i; + size_t i; #ifdef WITH_IFINDEX_NAME_RESOLUTION char if_name[IFNAMSIZ]; #endif @@ -91,7 +91,7 @@ static void dhcpv4_packet_debug(request_t *request, fr_radius_packet_t *packet, * Print the fields in the header, too. */ RINDENT(); - for (i = 0; dhcp_header_attrs[i] != NULL; i++) { + for (i = 0; i < dhcp_header_attrs_len; i++) { fr_pair_t *vp; if (!*dhcp_header_attrs[i]) continue; diff --git a/src/protocols/dhcpv4/base.c b/src/protocols/dhcpv4/base.c index 5dc3480250b..43b9175ffca 100644 --- a/src/protocols/dhcpv4/base.c +++ b/src/protocols/dhcpv4/base.c @@ -119,8 +119,8 @@ fr_dict_attr_t const **dhcp_header_attrs[] = { &attr_dhcp_client_hardware_address, &attr_dhcp_server_host_name, &attr_dhcp_boot_filename, - NULL }; +size_t dhcp_header_attrs_len = NUM_ELEMENTS(dhcp_header_attrs); char const *dhcp_message_types[] = { "invalid", diff --git a/src/protocols/dhcpv4/dhcpv4.h b/src/protocols/dhcpv4/dhcpv4.h index 589b9dd3c2f..1b17e8b9550 100644 --- a/src/protocols/dhcpv4/dhcpv4.h +++ b/src/protocols/dhcpv4/dhcpv4.h @@ -113,6 +113,7 @@ typedef struct { #endif extern fr_dict_attr_t const **dhcp_header_attrs[]; +extern size_t dhcp_header_attrs_len; extern char const *dhcp_message_types[]; extern int dhcp_header_sizes[]; extern uint8_t eth_bcast[ETH_ADDR_LEN]; diff --git a/src/protocols/dhcpv4/packet.c b/src/protocols/dhcpv4/packet.c index 3bed0455b3d..68a5506a466 100644 --- a/src/protocols/dhcpv4/packet.c +++ b/src/protocols/dhcpv4/packet.c @@ -123,7 +123,7 @@ int fr_dhcpv4_decode(TALLOC_CTX *ctx, uint8_t const *data, size_t data_len, fr_c /* * Decode the header. */ - for (i = 0; i < 14; i++) { + for (i = 0; i < dhcp_header_attrs_len; i++) { vp = fr_pair_afrom_da(ctx, *dhcp_header_attrs[i]); if (!vp) { fr_strerror_const_push("Cannot decode packet due to internal error");