Descrption: FEC redundancy can generate bogus packets --- a/main/udptl.c +++ b/main/udptl.c @@ -493,6 +493,11 @@ int k; int which; int limit = (l + m) & UDPTL_BUF_MASK; + + /* only repair buffers that actually exist! */ + if(seq_no <= (s->rx[l].fec_span * s->rx[l].fec_entries) - m) + continue; + for (which = -1, k = (limit - s->rx[l].fec_span * s->rx[l].fec_entries) & UDPTL_BUF_MASK; k != limit; k = (k + s->rx[l].fec_entries) & UDPTL_BUF_MASK) { if (s->rx[k].buf_len <= 0) which = (which == -1) ? k : -2;