Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Michael Niedermayer authored on 2013/10/25 00:05:57... | ... |
@@ -680,16 +680,20 @@ static int rm_assemble_video_frame(AVFormatContext *s, AVIOContext *pb, |
680 | 680 |
pos = get_num(pb, &len); |
681 | 681 |
pic_num = avio_r8(pb); len--; |
682 | 682 |
} |
683 |
- if(len<0) |
|
683 |
+ if(len<0) { |
|
684 |
+ av_log(s, AV_LOG_ERROR, "Insuffient data\n"); |
|
684 | 685 |
return -1; |
686 |
+ } |
|
685 | 687 |
rm->remaining_len = len; |
686 | 688 |
if(type&1){ // frame, not slice |
687 | 689 |
if(type == 3){ // frame as a part of packet |
688 | 690 |
len= len2; |
689 | 691 |
*timestamp = pos; |
690 | 692 |
} |
691 |
- if(rm->remaining_len < len) |
|
693 |
+ if(rm->remaining_len < len) { |
|
694 |
+ av_log(s, AV_LOG_ERROR, "Insuffient remaining len\n"); |
|
692 | 695 |
return -1; |
696 |
+ } |
|
693 | 697 |
rm->remaining_len -= len; |
694 | 698 |
if(av_new_packet(pkt, len + 9) < 0) |
695 | 699 |
return AVERROR(EIO); |
... | ... |
@@ -698,6 +702,7 @@ static int rm_assemble_video_frame(AVFormatContext *s, AVIOContext *pb, |
698 | 698 |
AV_WL32(pkt->data + 5, 0); |
699 | 699 |
if ((ret = avio_read(pb, pkt->data + 9, len)) != len) { |
700 | 700 |
av_free_packet(pkt); |
701 |
+ av_log(s, AV_LOG_ERROR, "Failed to read %d bytes\n", len); |
|
701 | 702 |
return ret < 0 ? ret : AVERROR(EIO); |
702 | 703 |
} |
703 | 704 |
return 0; |
... | ... |
@@ -724,14 +729,18 @@ static int rm_assemble_video_frame(AVFormatContext *s, AVIOContext *pb, |
724 | 724 |
if(type == 2) |
725 | 725 |
len = FFMIN(len, pos); |
726 | 726 |
|
727 |
- if(++vst->cur_slice > vst->slices) |
|
727 |
+ if(++vst->cur_slice > vst->slices) { |
|
728 |
+ av_log(s, AV_LOG_ERROR, "cur slice %d, too large\n", vst->cur_slice); |
|
728 | 729 |
return 1; |
730 |
+ } |
|
729 | 731 |
if(!vst->pkt.data) |
730 | 732 |
return AVERROR(ENOMEM); |
731 | 733 |
AV_WL32(vst->pkt.data - 7 + 8*vst->cur_slice, 1); |
732 | 734 |
AV_WL32(vst->pkt.data - 3 + 8*vst->cur_slice, vst->videobufpos - 8*vst->slices - 1); |
733 |
- if(vst->videobufpos + len > vst->videobufsize) |
|
735 |
+ if(vst->videobufpos + len > vst->videobufsize) { |
|
736 |
+ av_log(s, AV_LOG_ERROR, "outside videobufsize\n"); |
|
734 | 737 |
return 1; |
738 |
+ } |
|
735 | 739 |
if (avio_read(pb, vst->pkt.data + vst->videobufpos, len) != len) |
736 | 740 |
return AVERROR(EIO); |
737 | 741 |
vst->videobufpos += len; |