FR-GV-206 - decode option 60 (string) not 63 (octets), and check length
authorAlan T. DeKok <aland@freeradius.org>
Mon, 3 Jul 2017 15:36:13 +0000 (11:36 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 17 Jul 2017 12:35:23 +0000 (08:35 -0400)
src/modules/proto_dhcp/dhcp.c

index 98d8750..a66a931 100644 (file)
@@ -1097,8 +1097,8 @@ int fr_dhcp_decode(RADIUS_PACKET *packet)
                        /*
                         *      Vendor is "MSFT 98"
                         */
-                       vp = fr_pair_find_by_num(head, 63, DHCP_MAGIC_VENDOR, TAG_ANY);
-                       if (vp && (strcmp(vp->vp_strvalue, "MSFT 98") == 0)) {
+                       vp = fr_pair_find_by_num(head, 60, DHCP_MAGIC_VENDOR, TAG_ANY);
+                       if (vp && (vp->vp_length >= 7) && (memcmp(vp->vp_octets, "MSFT 98", 7) == 0)) {
                                vp = fr_pair_find_by_num(head, 262, DHCP_MAGIC_VENDOR, TAG_ANY);
 
                                /*