]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Check both attributes for message type and option 82
authorAlan T. DeKok <aland@freeradius.org>
Mon, 21 Nov 2016 14:06:32 +0000 (09:06 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 21 Nov 2016 14:06:32 +0000 (09:06 -0500)
src/modules/proto_dhcp/dhcp.c

index ea8369be545cbeec3fc733e9e1092f02409771f7..98d87509d65034728523aa3105044159a1a88305 100644 (file)
@@ -1,3 +1,4 @@
+
 /*
  * dhcp.c      Functions to send/receive dhcp packets.
  *
@@ -1155,11 +1156,13 @@ int8_t fr_dhcp_attr_cmp(void const *a, void const *b)
         *      DHCP-Message-Type is first, for simplicity.
         */
        if ((my_a->da->attr == PW_DHCP_MESSAGE_TYPE) && (my_b->da->attr != PW_DHCP_MESSAGE_TYPE)) return -1;
+       if ((my_a->da->attr != PW_DHCP_MESSAGE_TYPE) && (my_b->da->attr == PW_DHCP_MESSAGE_TYPE)) return +1;
 
        /*
         *      Relay-Agent is last
         */
-       if ((my_a->da->attr == PW_DHCP_OPTION_82) && (my_b->da->attr != PW_DHCP_OPTION_82)) return 1;
+       if ((my_a->da->attr == PW_DHCP_OPTION_82) && (my_b->da->attr != PW_DHCP_OPTION_82)) return +1;
+       if ((my_a->da->attr != PW_DHCP_OPTION_82) && (my_b->da->attr == PW_DHCP_OPTION_82)) return -1;
 
        if (my_a->da->attr < my_b->da->attr) return -1;
        if (my_a->da->attr > my_b->da->attr) return 1;