Fix a memory leak in the fecdec filter.
[paraslash.git] / fecdec_filter.c
index 794add49ec42d07c04ea826e36f8f77b80a9dad6..bc5300627dbdfb7a1ab1bf37f0ac5aa681dbd4a2 100644 (file)
@@ -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;
 }