X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=fecdec_filter.c;h=817e4c66c7bc96a2e59b5b7230d8b490633dbbb6;hp=794add49ec42d07c04ea826e36f8f77b80a9dad6;hb=9da3498d99e07ba38a205fa3833f1ec95bc7b33b;hpb=1beeb3913ee5d0e03805e55300720d267a6a51e0 diff --git a/fecdec_filter.c b/fecdec_filter.c index 794add49..817e4c66 100644 --- a/fecdec_filter.c +++ b/fecdec_filter.c @@ -161,8 +161,8 @@ static struct fecdec_group *free_oldest_group(struct private_fecdec_data *pfd) } if (!group_complete(oldest) && !group_empty(oldest)) PARA_WARNING_LOG("Clearing incomplete group %d " - "(contains %d slices)\n", fg->h.group_num, - fg->num_received_slices); + "(contains %d slices)\n", oldest->h.group_num, + oldest->num_received_slices); clear_group(oldest); return oldest; } @@ -358,7 +358,7 @@ static ssize_t fecdec(char *buf, size_t len, struct filter_node *fn) ret = read_fec_header(buf, len, &h); if (ret <= 0) return ret; - if (h.slice_bytes > fn->bufsize) + if (!h.slice_bytes || h.slice_bytes > fn->bufsize) return -E_BAD_SLICE_SIZE; if (h.slice_num > h.slices_per_group) return -E_BAD_SLICE_NUM; @@ -379,6 +379,7 @@ static void fecdec_close(struct filter_node *fn) clear_group(fg); free(fn->buf); fn->buf = NULL; + fec_free(pfd->fec); free(fn->private_data); fn->private_data = NULL; }