Changes of Revision 5
[-] | Changed | ffmpeg.spec |
1
2 %define majoravresample 0 3 %define libavresample libavresample 4 %define libnameavresample %{libavresample}%{majoravresample} 5 -%define lastrelease 0.11.1 6 +%define lastrelease 0.11.2 7 8 %bcond_without avfilter 9 %bcond_without libvpx 10 |
||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/Changelog ^ |
@@ -3,6 +3,12 @@ version next: +version 0.11.2: + +- Several bugs and crashes have been fixed as well as build problems + with recent mingw64 + + version 0.11: Fixes:CVE-2012-2772, CVE-2012-2774, CVE-2012-2775, CVE-2012-2776, CVE-2012-2777, CVE-2012-2779, CVE-2012-2782, CVE-2012-2783, CVE-2012-2784, CVE-2012-2785, | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/Doxyfile ^ |
@@ -31,7 +31,7 @@ # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 0.11.1 +PROJECT_NUMBER = 0.11.2 # With the PROJECT_LOGO tag one can specify an logo or icon that is included # in the documentation. The maximum height of the logo should not exceed 55 | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/RELEASE ^ |
@@ -1 +1 @@ -0.11.1 +0.11.2 | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/VERSION ^ |
@@ -1 +1 @@ -0.11.1 +0.11.2 | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/configure ^ |
@@ -1173,6 +1173,7 @@ dlfcn_h dlopen dos_paths + dxva_h ebp_available ebx_available exp2 @@ -1217,7 +1218,6 @@ memalign mkstemp mmap - netinet_sctp_h PeekNamedPipe poll_h posix_memalign @@ -1237,6 +1237,7 @@ struct_addrinfo struct_ipv6_mreq struct_rusage_ru_maxrss + struct_sctp_event_subscribe struct_sockaddr_in6 struct_sockaddr_sa_len struct_sockaddr_storage @@ -1665,7 +1666,7 @@ rtmp_protocol_deps="!librtmp_protocol" rtmp_protocol_select="tcp_protocol" rtp_protocol_select="udp_protocol" -sctp_protocol_deps="network netinet_sctp_h" +sctp_protocol_deps="network struct_sctp_event_subscribe" tcp_protocol_deps="network" tls_protocol_deps_any="openssl gnutls" tls_protocol_select="tcp_protocol" @@ -3070,7 +3071,7 @@ check_type netinet/in.h "struct sockaddr_in6" check_type "sys/types.h sys/socket.h" "struct sockaddr_storage" check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len - check_header netinet/sctp.h + check_type netinet/sctp.h "struct sctp_event_subscribe" # Prefer arpa/inet.h over winsock2 if check_header arpa/inet.h ; then check_func closesocket @@ -3125,6 +3126,7 @@ check_func_headers glob.h glob check_header dlfcn.h +check_header dxva.h check_header dxva2api.h -D_WIN32_WINNT=0x0600 check_header libcrystalhd/libcrystalhd_if.h check_header malloc.h | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/doc/Makefile ^ |
@@ -35,7 +35,7 @@ GENTEXI := $(GENTEXI:%=doc/avoptions_%.texi) $(GENTEXI): TAG = GENTEXI -$(GENTEXI): doc/avoptions_%.texi: doc/print_options +$(GENTEXI): doc/avoptions_%.texi: doc/print_options$(HOSTEXESUF) $(M)doc/print_options $* > $@ doc/%.html: TAG = HTML | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/doc/ffmpeg.texi ^ |
@@ -340,6 +340,10 @@ @file{PREFIX-N.log}, where N is a number specific to the output stream +Note that this option is overwritten by a local option of the same name +when using @code{-vcodec libx264}. That option maps to the x264 option stats +which has a different syntax. + @item -vlang @var{code} Set the ISO 639 language code (3 letters) of the current video stream. | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/libavcodec/aasc.c ^ |
@@ -66,7 +66,7 @@ const uint8_t *buf = avpkt->data; int buf_size = avpkt->size; AascContext *s = avctx->priv_data; - int compr, i, stride; + int compr, i, stride, psize; s->frame.reference = 3; s->frame.buffer_hints = FF_BUFFER_HINTS_VALID | FF_BUFFER_HINTS_PRESERVE | FF_BUFFER_HINTS_REUSABLE; @@ -78,6 +78,7 @@ compr = AV_RL32(buf); buf += 4; buf_size -= 4; + psize = avctx->bits_per_coded_sample / 8; switch (avctx->codec_tag) { case MKTAG('A', 'A', 'S', '4'): bytestream2_init(&s->gb, buf - 4, buf_size + 4); @@ -86,13 +87,13 @@ case MKTAG('A', 'A', 'S', 'C'): switch(compr){ case 0: - stride = (avctx->width * 3 + 3) & ~3; + stride = (avctx->width * psize + psize) & ~psize; for(i = avctx->height - 1; i >= 0; i--){ - if(avctx->width*3 > buf_size){ + if(avctx->width * psize > buf_size){ av_log(avctx, AV_LOG_ERROR, "Next line is beyond buffer bounds\n"); break; } - memcpy(s->frame.data[0] + i*s->frame.linesize[0], buf, avctx->width*3); + memcpy(s->frame.data[0] + i*s->frame.linesize[0], buf, avctx->width * psize); buf += stride; buf_size -= stride; } | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/libavcodec/bmv.c ^ |
@@ -268,6 +268,11 @@ c->avctx = avctx; avctx->pix_fmt = PIX_FMT_PAL8; + if (avctx->width != SCREEN_WIDE || avctx->height != SCREEN_HIGH) { + av_log(avctx, AV_LOG_ERROR, "Invalid dimension %dx%d\n", avctx->width, avctx->height); + return AVERROR_INVALIDDATA; + } + c->pic.reference = 1; if (avctx->get_buffer(avctx, &c->pic) < 0) { av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/libavcodec/dxva2_internal.h ^ |
@@ -25,7 +25,14 @@ #define _WIN32_WINNT 0x0600 #define COBJMACROS + +#include "config.h" + #include "dxva2.h" +#if HAVE_DXVA_H +#include <dxva.h> +#endif + #include "avcodec.h" #include "mpegvideo.h" | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/libavcodec/escape124.c ^ |
@@ -48,7 +48,7 @@ CodeBook codebooks[3]; } Escape124Context; -static int can_safely_read(GetBitContext* gb, int bits) { +static int can_safely_read(GetBitContext* gb, uint64_t bits) { return get_bits_left(gb) >= bits; } @@ -90,7 +90,7 @@ unsigned i, j; CodeBook cb = { 0 }; - if (!can_safely_read(gb, size * 34)) + if (!can_safely_read(gb, size * 34L)) return cb; if (size >= INT_MAX / sizeof(MacroBlock)) | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/libavcodec/faxcompr.c ^ |
@@ -228,7 +228,7 @@ mode = !mode; } //sync line pointers - while(run_off <= offs){ + while(offs < width && run_off <= offs){ run_off += *ref++; run_off += *ref++; } | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/libavcodec/mpegaudio_parser.c ^ |
@@ -53,6 +53,7 @@ int inc= FFMIN(buf_size - i, s->frame_size); i += inc; s->frame_size -= inc; + state = 0; if(!s->frame_size){ next= i; | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/libavcodec/pthread.c ^ |
@@ -79,6 +79,7 @@ pthread_cond_t current_job_cond; pthread_mutex_t current_job_lock; int current_job; + unsigned int current_execute; int done; } ThreadContext; @@ -203,6 +204,7 @@ AVCodecContext *avctx = v; ThreadContext *c = avctx->thread_opaque; int our_job = c->job_count; + int last_execute = 0; int thread_count = avctx->thread_count; int self_id; @@ -213,7 +215,9 @@ if (c->current_job == thread_count + c->job_count) pthread_cond_signal(&c->last_job_cond); - pthread_cond_wait(&c->current_job_cond, &c->current_job_lock); + while (last_execute == c->current_execute && !c->done) + pthread_cond_wait(&c->current_job_cond, &c->current_job_lock); + last_execute = c->current_execute; our_job = self_id; if (c->done) { @@ -233,7 +237,8 @@ static av_always_inline void avcodec_thread_park_workers(ThreadContext *c, int thread_count) { - pthread_cond_wait(&c->last_job_cond, &c->current_job_lock); + while (c->current_job != thread_count + c->job_count) + pthread_cond_wait(&c->last_job_cond, &c->current_job_lock); pthread_mutex_unlock(&c->current_job_lock); } @@ -282,6 +287,7 @@ c->rets = &dummy_ret; c->rets_count = 1; } + c->current_execute++; pthread_cond_broadcast(&c->current_job_cond); avcodec_thread_park_workers(c, avctx->thread_count); | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/libavcodec/sp5xdec.c ^ |
@@ -72,7 +72,7 @@ for (i = 2; i < buf_size-2 && j < buf_size+1024-2; i++) recoded[j++] = buf[i]; else - for (i = 14; i < buf_size && j < buf_size+1024-2; i++) + for (i = 14; i < buf_size && j < buf_size+1024-3; i++) { recoded[j++] = buf[i]; if (buf[i] == 0xff) | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/libavcodec/wmaenc.c ^ |
@@ -85,8 +85,6 @@ (avctx->sample_rate * 8); s->block_align = FFMIN(s->block_align, MAX_CODED_SUPERFRAME_SIZE); avctx->block_align = s->block_align; - avctx->bit_rate = avctx->block_align * 8LL * avctx->sample_rate / - s->frame_len; //av_log(NULL, AV_LOG_ERROR, "%d %d %d %d\n", s->block_align, avctx->bit_rate, s->frame_len, avctx->sample_rate); avctx->frame_size = avctx->delay = s->frame_len; | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/libavfilter/af_aresample.c ^ |
@@ -176,6 +176,9 @@ avfilter_copy_buffer_ref_props(outsamplesref, insamplesref); + outsamplesref->format = outlink->format; + outsamplesref->audio->channel_layout = outlink->channel_layout; + outsamplesref->audio->sample_rate = outlink->sample_rate; if(insamplesref->pts != AV_NOPTS_VALUE) { int64_t inpts = av_rescale(insamplesref->pts, inlink->time_base.num * (int64_t)outlink->sample_rate * inlink->sample_rate, inlink->time_base.den); | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/libavfilter/audio.c ^ |
@@ -204,7 +204,7 @@ link->cur_buf->audio->sample_rate = samplesref->audio->sample_rate; /* Copy actual data into new samples buffer */ - for (i = 0; samplesref->data[i] && i < 8; i++) + for (i = 0; i < 8 && samplesref->data[i]; i++) memcpy(link->cur_buf->data[i], samplesref->data[i], samplesref->linesize[0]); for (i = 0; i < planes; i++) memcpy(link->cur_buf->extended_data[i], samplesref->extended_data[i], samplesref->linesize[0]); | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/libavformat/oggdec.c ^ |
@@ -336,6 +336,13 @@ return 0; } +/** + * @brief find the next Ogg packet + * @param *str is set to the stream for the packet or -1 if there is + * no matching stream, in that case assume all other return + * values to be uninitialized. + * @return negative value on error or EOF. + */ static int ogg_packet(AVFormatContext *s, int *str, int *dstart, int *dsize, int64_t *fpos) { @@ -346,6 +353,8 @@ int segp = 0, psize = 0; av_dlog(s, "ogg_packet: curidx=%i\n", ogg->curidx); + if (str) + *str = -1; do{ idx = ogg->curidx; @@ -524,8 +533,10 @@ ogg_save (s); avio_seek (s->pb, s->data_offset, SEEK_SET); ogg_reset(s); - while (!ogg_packet(s, &i, NULL, NULL, NULL)) { - int64_t pts = ogg_calc_pts(s, i, NULL); + while (streams_left > 0 && !ogg_packet(s, &i, NULL, NULL, NULL)) { + int64_t pts; + if (i < 0) continue; + pts = ogg_calc_pts(s, i, NULL); if (pts != AV_NOPTS_VALUE && s->streams[i]->start_time == AV_NOPTS_VALUE && !ogg->streams[i].got_start){ s->streams[i]->duration -= pts; ogg->streams[i].got_start= 1; @@ -534,8 +545,6 @@ ogg->streams[i].got_start= 1; streams_left--; } - if(streams_left<=0) - break; } ogg_restore (s, 0); @@ -610,7 +619,7 @@ { struct ogg *ogg; struct ogg_stream *os; - int idx = -1, ret; + int idx, ret; int pstart, psize; int64_t fpos, pts, dts; @@ -669,7 +678,7 @@ AVIOContext *bc = s->pb; int64_t pts = AV_NOPTS_VALUE; int64_t keypos = -1; - int i = -1; + int i; int pstart, psize; avio_seek(bc, *pos_arg, SEEK_SET); ogg_reset(s); | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/libavformat/swfenc.c ^ |
@@ -494,8 +494,10 @@ avio_wl32(pb, file_size); avio_seek(pb, swf->duration_pos, SEEK_SET); avio_wl16(pb, swf->video_frame_number); + if (swf->vframes_pos) { avio_seek(pb, swf->vframes_pos, SEEK_SET); avio_wl16(pb, swf->video_frame_number); + } avio_seek(pb, file_size, SEEK_SET); } return 0; | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/libavutil/arm/intmath.h ^ |
@@ -75,6 +75,7 @@ return x; } +#if !CONFIG_SMALL //the code below cannot be compiled without always_inline #define av_clip_uintp2 av_clip_uintp2_arm static av_always_inline av_const unsigned av_clip_uintp2_arm(int a, int p) { @@ -82,7 +83,7 @@ __asm__ ("usat %0, %2, %1" : "=r"(x) : "r"(a), "i"(p)); return x; } - +#endif //!CONFIG_SMALL #else /* HAVE_ARMV6 */ | ||
[+] | Changed | ffmpeg-0.11.2.tar.bz2/library.mak ^ |
@@ -82,8 +82,8 @@ -$(RM) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR)" \ "$(SHLIBDIR)/$(SLIBNAME)" \ "$(SHLIBDIR)/$(SLIBNAME_WITH_VERSION)" - -$(RM) $(SLIB_INSTALL_EXTRA_SHLIB:%="$(SHLIBDIR)"%) - -$(RM) $(SLIB_INSTALL_EXTRA_LIB:%="$(LIBDIR)"%) + -$(RM) $(SLIB_INSTALL_EXTRA_SHLIB:%="$(SHLIBDIR)/%") + -$(RM) $(SLIB_INSTALL_EXTRA_LIB:%="$(LIBDIR)/%") -$(RM) "$(LIBDIR)/$(LIBNAME)" uninstall-headers:: |