[FFmpeg-devel] [PATCH] remove unused and broken test program in libavutil/base64.c

Michael Niedermayer michaelni
Sat Jan 31 22:08:26 CET 2009


On Sat, Jan 31, 2009 at 07:08:41PM +0100, Stefano Sabatini wrote:
> On date Saturday 2009-01-31 01:11:00 +0100, Michael Niedermayer encoded:
> > On Sat, Jan 31, 2009 at 12:26:20AM +0100, Stefano Sabatini wrote:
> > > On date Friday 2009-01-30 17:06:22 +0100, Michael Niedermayer encoded:
> > > > On Fri, Jan 30, 2009 at 12:46:36AM +0100, Stefano Sabatini wrote:
> > > [...]
> > > > > I think I addressed all the points.
> > > > > 
> > > > > Round 5:
> > > > > ------------------8<----------------------8<-------------------------
> > > > > #ifdef TEST
> > > > > #include "mem.h"
> > > > > #include "lfg.h"
> > > > > 
> > > > > #undef printf
> > > > > 
> > > > > #define MAX_DATA_SIZE    1024
> > > > > #define MAX_ENCODED_SIZE 2048
> > > > > 
> > > > 
> > > > > #define SHOW_STUFF(stuff) show_stuff ? (const char *)stuff : "[...]"
> > > > 
> > > > please explain wat this is supposed to be good for?
> > > 
> > > Yes, here there is the first lines of the output:
> > > 
> > > Encoding/decoding tests
> > > Encoding data with size 0 bytes ''... encoded as ''... passed!
> > > Encoding data with size 1 bytes '1'... encoded as 'MQ=='... passed!
> > > Encoding data with size 2 bytes '22'... encoded as 'MjI='... passed!
> > > Encoding data with size 3 bytes '333'... encoded as 'MzMz'... passed!
> > > Encoding data with size 4 bytes '4444'... encoded as 'NDQ0NA=='... passed!
> > > Encoding data with size 5 bytes '55555'... encoded as 'NTU1NTU='... passed!
> > > Encoding data with size 6 bytes '666666'... encoded as 'NjY2NjY2'... passed!
> > > Encoding data with size 7 bytes 'abc:def'... encoded as 'YWJjOmRlZg=='... passed!
> > > Encoding data with size 0 bytes '[...]'... encoded as '[...]'... passed!
> > > Encoding data with size 968 bytes '[...]'... encoded as '[...]'... passed!
> > > Encoding data with size 780 bytes '[...]'... encoded as '[...]'... passed!
> > > Encoding data with size 647 bytes '[...]'... encoded as '[...]'... passed!
> > > ...
> > > 
> > > For the data with a reference encoded string I think it is a good idea
> > > to show how the data is encoded, in case of problem the hacker should
> > > be able to immediately spot where the problem is.
> > > 
> > > For the other ones the length of the encoded string is usually too
> > > long and it is too awkward to display it, but no strong opinion on
> > > this, just tell how do you prefer it.
> > 
> > hmm ok, ive not conciously registererd that this was run with several hundread
> > bytes.
> > >  
> > > > [...]
> > > > >     printf("\nDecoding tests on invalid data\n");
> > > > >     {
> > > > >         uint8_t data[32];
> > > > >         const char *encoded[] = { "M", "M=M=", "MQ===" };
> > > > 
> > > > why is this splited off and not in the main table?
> > > 
> > > I believe this test cannot be reduced to the previous one, here we're
> > > just *decoding* and checking for validity.
> > 
> > if(A) A -> decode, cmp B
> > if(B) B -> encode, cmp A
> >
> > B being NULL
> >
> > am i missing something? 
> 
> The test is an encoding/decoding test, not a decoding/encoding test,
> we could maybe find some trick to make encode_decode_test() act as a
> decoding invalidity test, but this:
> 
> 1) would increase complexity of a program meant to be simple
> 2) it's not worth the trouble

a if(B) is hardly more complex than to duplicate the whole check

also about SHOW_STUFF() it shouldnt be there and you shouldnt print
anything at all if things are ok, just print what does not produce the
expected output or an OK at the end
if a 1kb case mismatches it should be printed as well

>  
> > [...]
> > > -- 
> > > FFmpeg = Fostering and Fundamental Murdering Peaceful Educated Guru
> > 
> > are you aware that some of these are semantically contradictionary?
> 
> Yes, and FFmpeg itself has some internal contradictions ;-),
> furthermore semantic checkers are a little expensive these days...

really?

download some book in ascii txt format
grep for a word starting with f
then grep for "<1word> f" 
then grep for "<2word> m" 
then grep for "<3word> p" 
...

the result should be less boring i hope :)
at least each consecutive word pair would be semantically valid even if
longer chains may not be

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Complexity theory is the science of finding the exact solution to an
approximation. Benchmarking OTOH is finding an approximation of the exact
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20090131/0cee5984/attachment.pgp>



More information about the ffmpeg-devel mailing list