Browse Source

Fix segfault on UDP reading

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n0.9
Andrey Utkin Michael Niedermayer 13 years ago
parent
commit
7a032cb97f
1 changed files with 4 additions and 0 deletions
  1. +4
    -0
      libavformat/udp.c

+ 4
- 0
libavformat/udp.c View File

@@ -546,15 +546,19 @@ static int udp_read(URLContext *h, uint8_t *buf, int size)
avail = av_fifo_size(s->fifo);
if (avail) { // >=size) {
uint8_t tmp[4];
int skip = 0;

av_fifo_generic_read(s->fifo, tmp, 4, NULL);
avail= AV_RL32(tmp);
if(avail > size){
av_log(h, AV_LOG_WARNING, "Part of datagram lost due to insufficient buffer size\n");
skip = avail - size;
avail= size;
}

av_fifo_generic_read(s->fifo, buf, avail, NULL);
if (skip)
av_fifo_drain(s->fifo, skip);
return avail;
}
else {


Loading…
Cancel
Save