From 6d81d553bb75d3ed9d6a13f00fe21bf1f0474eb5 Mon Sep 17 00:00:00 2001
From: Andrey Utkin <andrey.krieger.utkin@gmail.com>
Date: Thu, 3 Nov 2011 07:00:15 +0000
Subject: [PATCH] Fix segfault on UDP reading
---
libavformat/udp.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/libavformat/udp.c b/libavformat/udp.c
index 151e070..59d1f74 100644
|
a
|
b
|
static int udp_read(URLContext *h, uint8_t *buf, int size)
|
| 546 | 546 | avail = av_fifo_size(s->fifo); |
| 547 | 547 | if (avail) { // >=size) { |
| 548 | 548 | uint8_t tmp[4]; |
| | 549 | int skip = 0; |
| 549 | 550 | |
| 550 | 551 | av_fifo_generic_read(s->fifo, tmp, 4, NULL); |
| 551 | 552 | avail= AV_RL32(tmp); |
| 552 | 553 | if(avail > size){ |
| 553 | 554 | av_log(h, AV_LOG_WARNING, "Part of datagram lost due to insufficient buffer size\n"); |
| | 555 | skip = avail - size; |
| 554 | 556 | avail= size; |
| 555 | 557 | } |
| 556 | 558 | |
| 557 | 559 | av_fifo_generic_read(s->fifo, buf, avail, NULL); |
| | 560 | if (skip) |
| | 561 | av_fifo_drain(s->fifo, skip); |
| 558 | 562 | return avail; |
| 559 | 563 | } |
| 560 | 564 | else { |