<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to bugs</title><link>https://sourceforge.net/p/dirac/bugs/</link><description>Recent changes to bugs</description><atom:link href="https://sourceforge.net/p/dirac/bugs/feed.rss" rel="self"/><language>en</language><lastBuildDate>Sat, 01 Jul 2017 21:28:47 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/dirac/bugs/feed.rss" rel="self" type="application/rss+xml"/><item><title>out of bounds heap read in dirac::VHFilter::Interleave</title><link>https://sourceforge.net/p/dirac/bugs/57/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;The attached file will cause an out of bounds read in the dirac decoder. This was found with american fuzzy lop.&lt;/p&gt;
&lt;p&gt;Stack trace (from asan):&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;==10450==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x62f00000ca00 at pc 0x0000004c36dc bp 0x7ffd5cbcba60 sp 0x7ffd5cbcb210
READ of size 1408 at 0x62f00000ca00 thread T0
    #0 0x4c36db in __asan_memcpy (/r/dirac/dirac_decoder+0x4c36db)
    #1 0x5c4151 in dirac::VHFilter::Interleave(int, int, int, int, dirac::CoeffArray&amp;amp;) /f/dirac-1.0.2/libdirac_common/wavelet_utils.cpp:504:9
    #2 0x5a8106 in dirac::VHFilterLEGALL5_3::Synth(int, int, int, int, dirac::CoeffArray&amp;amp;) /f/dirac-1.0.2/libdirac_common/wavelet_utils.cpp:899:5
    #3 0x59cc61 in dirac::WaveletTransform::Transform(dirac::Direction, dirac::PicArray&amp;amp;, dirac::CoeffArray&amp;amp;) /f/dirac-1.0.2/libdirac_common/wavelet_utils.cpp:473:25
    #4 0x568096 in dirac::PictureDecompressor::Decompress(dirac::ParseUnitByteIO&amp;amp;, dirac::PictureBuffer&amp;amp;) /f/dirac-1.0.2/libdirac_decoder/picture_decompress.cpp:172:24
    #5 0x546ebd in dirac::SequenceDecompressor::DecompressNextPicture(dirac::ParseUnitByteIO*) /f/dirac-1.0.2/libdirac_decoder/seq_decompress.cpp:128:45
    #6 0x5307e6 in dirac::DiracParser::Parse() /f/dirac-1.0.2/libdirac_decoder/dirac_cppparser.cpp:223:54
    #7 0x515963 in dirac_parse /f/dirac-1.0.2/libdirac_decoder/dirac_parser.cpp:334:38
    #8 0x513d17 in DecodeDirac(char const*, char const*) /f/dirac-1.0.2/decoder/decmain.cpp:145:17
    #9 0x513d17 in main /f/dirac-1.0.2/decoder/decmain.cpp:303
    #10 0x7efd923571d0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r2/work/glibc-2.24/csu/../csu/libc-start.c:289
    #11 0x41ce29 in _start (/r/dirac/dirac_decoder+0x41ce29)

0x62f00000ca00 is located 0 bytes to the right of 50688-byte region [0x62f000000400,0x62f00000ca00)
allocated by thread T0 here:
    #0 0x50f3b0 in operator new[](unsigned long) (/r/dirac/dirac_decoder+0x50f3b0)
    #1 0x559cd3 in dirac::TwoDArray&amp;lt;int&amp;gt;::Init(int, int) /f/dirac-1.0.2/libdirac_common/../libdirac_common/arrays.h:520:38
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Hanno Böck</dc:creator><pubDate>Sat, 01 Jul 2017 21:28:47 -0000</pubDate><guid>https://sourceforge.net97ce4d6a4ef752404c3615a3d58fb6e909b12104</guid></item><item><title>#56 heap overflow (write) in dirac::ArithCodecBase::ReadAllData</title><link>https://sourceforge.net/p/dirac/bugs/56/?limit=25#c43f</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;example file attached&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Hanno Böck</dc:creator><pubDate>Sat, 01 Jul 2017 21:27:03 -0000</pubDate><guid>https://sourceforge.net3580da5505dff4ebcdf8ee304c53038ef999032c</guid></item><item><title>heap overflow (write) in dirac::ArithCodecBase::ReadAllData</title><link>https://sourceforge.net/p/dirac/bugs/56/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;The attached sample file will cause a heap overflow in the dirac decoder. This was found with the help of the fuzzing tool american fuzzy lop.&lt;/p&gt;
&lt;p&gt;Here's a stack trace from address sanitizer:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;==4153==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020000019ef at pc 0x00000056f150 bp 0x7fff5b770e80 sp 0x7fff5b770e78
WRITE of size 1 at 0x6020000019ef thread T0
    #0 0x56f14f in dirac::ArithCodecBase::ReadAllData(int) /f/dirac-1.0.2/libdirac_common/arith_codec.cpp:163:37
    #1 0x56f14f in dirac::ArithCodecBase::InitDecoder(int) /f/dirac-1.0.2/libdirac_common/arith_codec.cpp:134
    #2 0x60548e in dirac::ArithCodec&amp;lt;dirac::CoeffArray&amp;gt;::Decompress(dirac::CoeffArray&amp;amp;, int) /f/dirac-1.0.2/libdirac_decoder/../libdirac_common/arith_codec.h:451:9
    #3 0x60548e in dirac::CompDecompressor::Decompress(dirac::ComponentByteIO*, dirac::CoeffArray&amp;amp;, dirac::SubbandList&amp;amp;) /f/dirac-1.0.2/libdirac_decoder/comp_decompress.cpp:106
    #4 0x568038 in dirac::PictureDecompressor::Decompress(dirac::ParseUnitByteIO&amp;amp;, dirac::PictureBuffer&amp;amp;) /f/dirac-1.0.2/libdirac_decoder/picture_decompress.cpp:170:28
    #5 0x546ebd in dirac::SequenceDecompressor::DecompressNextPicture(dirac::ParseUnitByteIO*) /f/dirac-1.0.2/libdirac_decoder/seq_decompress.cpp:128:45
    #6 0x5307e6 in dirac::DiracParser::Parse() /f/dirac-1.0.2/libdirac_decoder/dirac_cppparser.cpp:223:54
    #7 0x515963 in dirac_parse /f/dirac-1.0.2/libdirac_decoder/dirac_parser.cpp:334:38
    #8 0x513d17 in DecodeDirac(char const*, char const*) /f/dirac-1.0.2/decoder/decmain.cpp:145:17
    #9 0x513d17 in main /f/dirac-1.0.2/decoder/decmain.cpp:303
    #10 0x7f6e7b7bc1d0 in __libc_start_main /var/tmp/portage/sys-libs/glibc-2.24-r2/work/glibc-2.24/csu/../csu/libc-start.c:289
    #11 0x41ce29 in _start (/r/dirac/dirac_decoder+0x41ce29)

0x6020000019ef is located 1 bytes to the left of 1-byte region [0x6020000019f0,0x6020000019f1)
allocated by thread T0 here:
    #0 0x50f3b0 in operator new[](unsigned long) (/r/dirac/dirac_decoder+0x50f3b0)
    #1 0x56ee2e in dirac::ArithCodecBase::ReadAllData(int) /f/dirac-1.0.2/libdirac_common/arith_codec.cpp:161:28
    #2 0x56ee2e in dirac::ArithCodecBase::InitDecoder(int) /f/dirac-1.0.2/libdirac_common/arith_codec.cpp:134
    #3 0x568038 in dirac::PictureDecompressor::Decompress(dirac::ParseUnitByteIO&amp;amp;, dirac::PictureBuffer&amp;amp;) /f/dirac-1.0.2/libdirac_decoder/picture_decompress.cpp:170:28
    #4 0x546ebd in dirac::SequenceDecompressor::DecompressNextPicture(dirac::ParseUnitByteIO*) /f/dirac-1.0.2/libdirac_decoder/seq_decompress.cpp:128:45
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Hanno Böck</dc:creator><pubDate>Sat, 01 Jul 2017 21:26:22 -0000</pubDate><guid>https://sourceforge.net80a74507d6f3a515299079d11172181fdc22efe0</guid></item><item><title>decmain.cpp: 2 * possible unterminated strings ?</title><link>https://sourceforge.net/p/dirac/bugs/55/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;&lt;span&gt;[decmain.cpp:122]&lt;/span&gt;: (error) Dangerous usage of 'infile_name' (strncpy doesn't always null-terminate it).&lt;br /&gt;
&lt;span&gt;[decmain.cpp:128]&lt;/span&gt;: (error) Dangerous usage of 'outfile_data' (strncpy doesn't always null-terminate it).&lt;/p&gt;
&lt;p&gt;Source code is&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;strncpy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;infile_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;iname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;sizeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;infile_name&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;span class="n"&gt;strncpy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outfile_data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;oname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;sizeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outfile_data&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;ifp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fopen&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;infile_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;rb&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;perror&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;iname&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;fpdata&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fopen&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outfile_data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;wb&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Suggest properly terminate the two strings before calling fopen.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">dcb</dc:creator><pubDate>Sun, 11 May 2014 16:06:41 -0000</pubDate><guid>https://sourceforge.net2986a6228d3c5f7f5e326f94671bd2cef01c8f59</guid></item><item><title>invalid invocation of `cp` when build docs on Mac OS X</title><link>https://sourceforge.net/p/dirac/bugs/54/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;The BSD cp command (or at least, the one included with Mac OS X) does not support the '-d' option; the documentation Makefile tries to do this anyway and so the build fails. &lt;/p&gt;
&lt;p&gt;Using just `cp -R` rather than `cd -dR` works fine.&lt;/p&gt;&lt;/div&gt;</description><pubDate>Tue, 24 Jan 2012 04:32:33 -0000</pubDate><guid>https://sourceforge.net368f8ab5d74152b0974ccf1f79abd1faf54952e6</guid></item><item><title>Dirac-1.0.2 quant_chooser.cpp fails with gcc45</title><link>https://sourceforge.net/p/dirac/bugs/53/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;I maintain dirac in openSUSE and it fails on :-&lt;br /&gt;
quant_chooser.cpp: In member function 'void dirac::QuantChooser::SetSkip(dirac::CodeBlock&amp;amp;, int)':&lt;br /&gt;
quant_chooser.cpp:343:49: error: invalid operands of types '__gnu_cxx::__enable_if&amp;lt;true, double&amp;gt;::__type' and 'int' to binary'operator&amp;lt;&amp;lt;'&lt;br /&gt;
in line 343 where [i] is column 49 :-&lt;br /&gt;
if ( (std::abs(m_coeff_data[j][i])&amp;lt;&amp;lt;2) &amp;gt;= u_threshold )&lt;br /&gt;
can_skip = false;&lt;br /&gt;
In function :-&lt;br /&gt;
void QuantChooser::SetSkip( CodeBlock&amp;amp; cblock , const int qidx)&lt;br /&gt;
{&lt;br /&gt;
const int u_threshold = dirac_quantiser_lists.QuantFactor4( qidx );&lt;br /&gt;
// Sets the skip flag for a codeblock&lt;br /&gt;
bool can_skip = true;&lt;br /&gt;
for (int j=cblock.Ystart(); j&amp;lt;cblock.Yend(); ++j )&lt;br /&gt;
{&lt;br /&gt;
for (int i=cblock.Xstart(); i&amp;lt;cblock.Xend(); ++i )&lt;br /&gt;
{&lt;br /&gt;
if ( (std::abs(m_coeff_data[j][i])&amp;lt;&amp;lt;2) &amp;gt;= u_threshold )&lt;br /&gt;
can_skip = false;&lt;br /&gt;
}      }&lt;br /&gt;
cblock.SetSkip( can_skip );&lt;br /&gt;
} &lt;br /&gt;
&amp;gt; and also :-&lt;br /&gt;
&amp;gt; quant_chooser.cpp: In member function 'dirac::CoeffType&amp;gt; dirac::QuantChooser::BlockAbsMax(const dirac::Subband&amp;amp;)':&lt;br /&gt;
&amp;gt; quant_chooser.cpp:358:64: error: no matching function for call to&lt;br /&gt;
&amp;gt; 'max(int&amp;amp;, __gnu_cxx::__enable_if&amp;lt;true, double&amp;gt;::__type)'&lt;br /&gt;
&amp;gt; In line 358 where the last ) before ; is column 64:-&lt;br /&gt;
&amp;gt;             val = std::max( val , std::abs(m_coeff_data[j][i]) );&lt;br /&gt;
&amp;gt; In function&lt;br /&gt;
&amp;gt; CoeffType QuantChooser::BlockAbsMax( const Subband&amp;amp; node )&lt;br /&gt;
&amp;gt; {&lt;br /&gt;
&amp;gt;     int val( 0 );&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;gt;     for (int j=node.Yp() ; j&amp;lt;node.Yp()+node.Yl(); ++j)&lt;br /&gt;
&amp;gt;     {&lt;br /&gt;
&amp;gt;         for (int i=node.Xp() ; i&amp;lt;node.Xp()+node.Xl(); ++i)&lt;br /&gt;
&amp;gt;         {               val = std::max( val , std::abs(m_coeff_data[j][i]) );&lt;br /&gt;
&amp;gt;         }// i&lt;br /&gt;
&amp;gt;     }// j&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;gt;     return val;&lt;br /&gt;
&amp;gt; }&lt;/p&gt;
&lt;p&gt;The -fpermissive flag doesn't work either but the suse 11.2 version builds with gcc44.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Dave Plater</dc:creator><pubDate>Fri, 09 Apr 2010 06:12:12 -0000</pubDate><guid>https://sourceforge.net5ad8752091b39476a1d0d139f3e9e9b2359507c5</guid></item><item><title>DirectShow Decoder Filter does not display frame-rate</title><link>https://sourceforge.net/p/dirac/bugs/52/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Encode a file using Dirac and store to AVI (ex: MediaCoder).&lt;br /&gt;
Use GraphStudio to create a render graph. Right Click on the "Dirac Video Decoder" and look at XForm-In and XForm-Out tabs.&lt;br /&gt;
Frame rate information is not propagated from input to output.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Thu, 23 Apr 2009 22:23:54 -0000</pubDate><guid>https://sourceforge.net2a7275969feb999127e4fbbea4a1cc596eb7083a</guid></item><item><title>SyncToUnitStart pathological condition</title><link>https://sourceforge.net/p/dirac/bugs/51/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;In Dirac version 0.9.1 &lt;/p&gt;
&lt;p&gt;When decoding I frames that are incomplete the module&lt;br /&gt;
ParseUnitByteIO::SyncToUnitStart can enter a loop condition from which it never returns.&lt;/p&gt;
&lt;p&gt;It appears to be searching for 'BBCD' but never finds&lt;br /&gt;
it and never exits the loop. This occurs even though &lt;br /&gt;
BBCD is at the start of the frame. &lt;/p&gt;
&lt;p&gt;It is possible to force this condition by sending a malformed frame of data to the parser (by dropping or adding a byte). The decoder returns the state STATE_BUFFER indicating it needs more data. When the &lt;br /&gt;
next I frame is received (starting BBCD) the decoder&lt;br /&gt;
does not recover and enters an endless loop.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">soDark6</dc:creator><pubDate>Thu, 17 Apr 2008 07:04:24 -0000</pubDate><guid>https://sourceforge.netf31bb32376c0f5d1e41fdb42f93744050a4d73b1</guid></item><item><title>Lossless encoding with motion estimation broken</title><link>https://sourceforge.net/p/dirac/bugs/50/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;About version 0.9.1.&lt;/p&gt;
&lt;p&gt;When ME/MC is enabled, the lossless switch leads to a core dump after a couple of frames. Does not happen with -num_L1 0, i.e. in INTRA coding mode.&lt;/p&gt;
&lt;p&gt;Example call:&lt;br /&gt;
~/lib/sw/dirac-0.9.1/encoder/dirac_encoder -QCIF -fr 25 -local -verbose -lossless -num_L1 250 -targetrate 64 ~/lib/videos/akiyo_qcif.yuv enc.drc &amp;gt; dirac.log&lt;/p&gt;
&lt;p&gt;Reported by till@etill.net.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Tue, 04 Mar 2008 07:54:33 -0000</pubDate><guid>https://sourceforge.net5af1ed25b565bb290e450610b828b37795a4388b</guid></item><item><title>Dirac encode fail v0.91</title><link>https://sourceforge.net/p/dirac/bugs/49/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hello there,&lt;/p&gt;
&lt;p&gt;I hope I will not interrupt you.&lt;br /&gt;
Could you advice please what is wrong in what I am doing during an encode?&lt;br /&gt;
My steps was that:&lt;br /&gt;
1) I made 7 BMP files from some DivX video file using VirtualDub to extract them as BMP files.&lt;br /&gt;
2) Then I converted them to RGB files using ImageMagick v6.3.7.Q16 with the follow line, for each file:&lt;br /&gt;
convert -size 720x480 - depth 8 00x.bmp rgb:00x.rgb&lt;br /&gt;
I did that for 7 BMP files, change the x to appropriate numbers.&lt;br /&gt;
3) Next step was converting to YUV files using your software which I compile with Visual Studio 2005 Professional. The line was:&lt;br /&gt;
rgbtoyuv422 &amp;lt;00x.rgb &amp;gt;00x.yuv 720 480 1&lt;br /&gt;
I did that for 7 RGB files, change the x to appropriate numbers.&lt;br /&gt;
4) Then I concatinate them to one big file with the following line:&lt;br /&gt;
copy *.yuv /b all_in_one.yuv /b&lt;br /&gt;
5) Finally I run the encodedirac as it show the attach file, but I receive an error after ~1min.&lt;br /&gt;
The line for encode process was:&lt;br /&gt;
EncodeDirac -SD480I60 -width 720 -height 480 -fr 29.97 -cformat YUV422P -qf 9 all_in_one.yuv test.drc&lt;/p&gt;
&lt;p&gt;So, could you see any mistake in my steps?&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
&lt;p&gt;Best Regards,&lt;br /&gt;
Anastasios&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anastasios K</dc:creator><pubDate>Thu, 14 Feb 2008 01:04:37 -0000</pubDate><guid>https://sourceforge.net670316dfb91a8e2e2f051dbd74ab45d21c00c9db</guid></item></channel></rss>