FR-GV-204 - free VP if decoding options fails, so we don't leak memory
authorAlan T. DeKok <aland@freeradius.org>
Sat, 1 Jul 2017 12:49:24 +0000 (08:49 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 17 Jul 2017 12:22:26 +0000 (08:22 -0400)
src/lib/dhcp.c

index 24578f0..c632e66 100644 (file)
@@ -792,6 +792,7 @@ int fr_dhcp_decode(RADIUS_PACKET *packet)
         */
        if (fr_dhcp_decode_options(packet->data + 240, packet->data_len - 240,
                                   tail) < 0) {
+               pairfree(&head);
                return -1;
        }
 
@@ -1451,6 +1452,7 @@ int fr_dhcp_encode(RADIUS_PACKET *packet)
                         *      limitations: sizeof(vp->vp_octets) < 255
                         */
                        if (length > 255) {
+                               pairfree(&vp);
                                fr_strerror_printf("WARNING Ignoring too long attribute %s!", vp->name);
                                break;
                        }