FR-GV-203 - fix memory leak when using decode_tlv()
authorAlan T. DeKok <aland@freeradius.org>
Mon, 3 Jul 2017 18:48:47 +0000 (14:48 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 17 Jul 2017 12:22:18 +0000 (08:22 -0400)
src/lib/dhcp.c

index d7bba42..24578f0 100644 (file)
@@ -478,12 +478,13 @@ static int decode_tlv(VALUE_PAIR *tlv, const uint8_t *data, size_t data_len)
                }
 
                if (fr_dhcp_attr2vp(vp, p + 2, p[1]) < 0) {
+                       pairfree(&vp);
                        pairfree(&head);
                        goto make_tlv;
                }
 
                *tail = vp;
-               tail = &(vp->next);
+               while (*tail) tail = &((*tail)->next);
                p += 2 + p[1];
        }