summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libffmpeg/libavcodec/h264.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/libffmpeg/libavcodec/h264.c b/src/libffmpeg/libavcodec/h264.c
index a456e6074..889900362 100644
--- a/src/libffmpeg/libavcodec/h264.c
+++ b/src/libffmpeg/libavcodec/h264.c
@@ -2428,7 +2428,10 @@ static void hl_decode_mb(H264Context *h){
int tr;
if(!topright_avail){
- tr= ptr[3 - linesize]*0x01010101;
+ /* xine: avoid (negative) buffer overflow */
+ tr= (!mb_y && linesize > h->block_offset[i]) ?
+ ptr[3]*0x01010101 :
+ ptr[3 - linesize]*0x01010101;
topright= (uint8_t*) &tr;
}else if(i==5 && h->deblocking_filter){
tr= *(uint32_t*)h->top_border[mb_x+1];