You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
Fix segfault on UDP reading
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
committed by
Michael Niedermayer
parent
4354788a89
commit
7a032cb97f
@@ -546,15 +546,19 @@ static int udp_read(URLContext *h, uint8_t *buf, int size)
|
|||||||
avail = av_fifo_size(s->fifo);
|
avail = av_fifo_size(s->fifo);
|
||||||
if (avail) { // >=size) {
|
if (avail) { // >=size) {
|
||||||
uint8_t tmp[4];
|
uint8_t tmp[4];
|
||||||
|
int skip = 0;
|
||||||
|
|
||||||
av_fifo_generic_read(s->fifo, tmp, 4, NULL);
|
av_fifo_generic_read(s->fifo, tmp, 4, NULL);
|
||||||
avail= AV_RL32(tmp);
|
avail= AV_RL32(tmp);
|
||||||
if(avail > size){
|
if(avail > size){
|
||||||
av_log(h, AV_LOG_WARNING, "Part of datagram lost due to insufficient buffer size\n");
|
av_log(h, AV_LOG_WARNING, "Part of datagram lost due to insufficient buffer size\n");
|
||||||
|
skip = avail - size;
|
||||||
avail= size;
|
avail= size;
|
||||||
}
|
}
|
||||||
|
|
||||||
av_fifo_generic_read(s->fifo, buf, avail, NULL);
|
av_fifo_generic_read(s->fifo, buf, avail, NULL);
|
||||||
|
if (skip)
|
||||||
|
av_fifo_drain(s->fifo, skip);
|
||||||
return avail;
|
return avail;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
Reference in New Issue
Block a user