From: Alan T. DeKok Date: Tue, 26 Jan 2021 11:45:27 +0000 (-0500) Subject: clean up tags on fail, too X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=411d50f132be4563cbca18c006038714f673613f;p=thirdparty%2Ffreeradius-server.git clean up tags on fail, too --- diff --git a/src/protocols/radius/base.c b/src/protocols/radius/base.c index 2aae250278..11cbf8d2b3 100644 --- a/src/protocols/radius/base.c +++ b/src/protocols/radius/base.c @@ -1026,7 +1026,9 @@ ssize_t fr_radius_decode(TALLOC_CTX *ctx, uint8_t const *packet, size_t packet_l while (attr < end) { slen = fr_radius_decode_pair(ctx, cursor, dict_radius, attr, (end - attr), &packet_ctx); if (slen < 0) { + fail: talloc_free(packet_ctx.tmp_ctx); + talloc_free(packet_ctx.tags); return slen; } @@ -1035,8 +1037,7 @@ ssize_t fr_radius_decode(TALLOC_CTX *ctx, uint8_t const *packet, size_t packet_l * all kinds of bad things happen. */ if (!fr_cond_assert(slen <= (end - attr))) { - talloc_free(packet_ctx.tmp_ctx); - return -1; + goto fail; } attr += slen;