From 26d1bf2b7be9af211755c6fb90ff8de55e5a9bd3 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Mon, 16 Aug 2010 09:29:59 +0200 Subject: [PATCH] vss: Avoid potential double free of FEC parameters. If an error occurs in initialize_fec_client() we free the FEC parameter structure but do not invalidate it. It's both easier and safer to free this struct just before allocating it. --- vss.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/vss.c b/vss.c index 3405d5a0..96b2ba9e 100644 --- a/vss.c +++ b/vss.c @@ -282,11 +282,11 @@ static int initialize_fec_client(struct fec_client *fc, struct vss_task *vsst) rs = fc->fcp->slices_per_group - fc->fcp->data_slices_per_group; ret = num_slices(vsst->header_len, fc->mps - FEC_HEADER_SIZE, rs); if (ret < 0) - goto err; + return ret; hs = ret; ret = num_slices(mmd->afd.max_chunk_size, fc->mps - FEC_HEADER_SIZE, rs); if (ret < 0) - goto err; + return ret; ds = ret; k = hs + ds; if (k < fc->fcp->data_slices_per_group) @@ -308,9 +308,6 @@ static int initialize_fec_client(struct fec_client *fc, struct vss_task *vsst) fc->stream_start = *now; fc->first_stream_chunk = mmd->current_chunk; return 1; -err: - fec_free(fc->parms); - return ret; } static void compute_group_size(struct vss_task *vsst, struct fec_group *g, -- 2.30.2