]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
use memcpy, as IPs are stored internally in network byte order
authorAlan T. DeKok <aland@freeradius.org>
Fri, 6 Nov 2020 17:39:29 +0000 (12:39 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 6 Nov 2020 17:40:22 +0000 (12:40 -0500)
src/protocols/dhcpv4/base.c

index 65f5a8ffef86abc8b107fbf2170ed52cfd3fbabb..16275aa053739deaf5c697ee66f46324e2354544 100644 (file)
@@ -410,7 +410,7 @@ ssize_t fr_dhcpv4_encode_dbuff(fr_dbuff_t *dbuff, dhcp_packet_t *original, int c
        /* DHCP-Server-IP-Address */
        vp = fr_pair_find_by_da(vps, attr_dhcp_server_ip_address);
        if (vp) {
-               FR_DBUFF_IN_RETURN(&work_dbuff, (uint32_t) vp->vp_ipv4addr);
+               FR_DBUFF_MEMCPY_IN_RETURN(&work_dbuff, (uint8_t const *)&vp->vp_ipv4addr, 4);
        } else {
                FR_DBUFF_IN_RETURN(&work_dbuff, (uint32_t) INADDR_ANY);
        }
@@ -420,10 +420,11 @@ ssize_t fr_dhcpv4_encode_dbuff(fr_dbuff_t *dbuff, dhcp_packet_t *original, int c
         */
        vp = fr_pair_find_by_da(vps, attr_dhcp_gateway_ip_address);
        if (vp) {
-               FR_DBUFF_IN_RETURN(&work_dbuff, (uint32_t) vp->vp_ipv4addr);
+               FR_DBUFF_MEMCPY_IN_RETURN(&work_dbuff, (uint8_t const *)&vp->vp_ipv4addr, 4);
 
        } else if (original) {  /* copy whatever value was in the original */
                FR_DBUFF_MEMCPY_IN_RETURN(&work_dbuff, (uint8_t const *)&original->giaddr, sizeof(original->giaddr));
+
        } else {
                FR_DBUFF_IN_RETURN(&work_dbuff, (uint32_t) INADDR_ANY);
        }