[FFmpeg-devel] [PATCH] Add tests for functions in hash.c
NagaChaitanya Vellanki
nagachaitanya.vellanki at gmail.com
Wed Mar 9 01:59:08 CET 2016
Please review the latest patch. the DST_BUF_SIZE is not AV_HASH_MAX_SIZE *
8 since AV_HASH_MAX_SIZE is 64.
Thank you,
Naga
On Sun, Mar 6, 2016 at 9:45 PM, James Almer <jamrial at gmail.com> wrote:
> On 3/7/2016 12:26 AM, NagaChaitanya Vellanki wrote:
> > ---
> > libavutil/Makefile | 1 +
> > libavutil/hash.c | 45
> +++++++++++++++++++++++++++++++++++++++++++++
> > tests/fate/libavutil.mak | 4 ++++
> > tests/ref/fate/hash | 45
> +++++++++++++++++++++++++++++++++++++++++++++
> > 4 files changed, 95 insertions(+)
> > create mode 100644 tests/ref/fate/hash
> >
> > diff --git a/libavutil/Makefile b/libavutil/Makefile
> > index 934564f..58df75a 100644
> > --- a/libavutil/Makefile
> > +++ b/libavutil/Makefile
> > @@ -186,6 +186,7 @@ TESTPROGS = adler32
> \
> > file
> \
> > fifo
> \
> > float_dsp
> \
> > + hash
> \
> > hmac
> \
> > lfg
> \
> > lls
> \
> > diff --git a/libavutil/hash.c b/libavutil/hash.c
> > index 7037b0d..ac35e88 100644
> > --- a/libavutil/hash.c
> > +++ b/libavutil/hash.c
> > @@ -237,3 +237,48 @@ void av_hash_freep(AVHashContext **ctx)
> > av_freep(&(*ctx)->ctx);
> > av_freep(ctx);
> > }
> > +
> > +#ifdef TEST
> > +// LCOV_EXCL_START
> > +#define SRC_BUF_SIZE 64
> > +#define DST_BUF_SIZE 512
>
> You should use AV_HASH_MAX_SIZE for dst. If someone goes and adds a new
> algorithm
> with a digest bigger than 64 bytes that value will change and the dst
> buffer here
> may not be enough anymore.
> AV_HASH_MAX_SIZE*4 should do it i think.
>
> > +
> > +int main(void)
> > +{
> > + struct AVHashContext *ctx = NULL;
> > + int i, j;
> > + static const uint8_t src[SRC_BUF_SIZE] = { 0 };
> > + uint8_t dst[DST_BUF_SIZE];
> > + for(i = 0; i < NUM_HASHES; i++) {
>
> Nit: Space after for.
>
> > + if(av_hash_alloc(&ctx, av_hash_names(i)) < 0) {
>
> Nit: Space after if, and no need for brackets.
>
> > + return 1;
> > + }
> > +
> > + av_hash_init(ctx);
> > + av_hash_update(ctx, src, SRC_BUF_SIZE);
> > + memset(dst, 0, DST_BUF_SIZE);
>
> memset (or even zero initializing dst) is probably not needed at all.
> hash.h doxy says hex and b64 digests are always 0-terminated, and you never
> read more than av_hash_get_size(ctx) for the binary digest.
>
> > + av_hash_final_hex(ctx, dst, DST_BUF_SIZE);
> > + printf("%s hex: %s\n", av_hash_get_name(ctx), dst);
> > +
> > + av_hash_init(ctx);
> > + av_hash_update(ctx, src, SRC_BUF_SIZE);
> > + memset(dst, 0, DST_BUF_SIZE);
> > + av_hash_final_bin(ctx, dst, DST_BUF_SIZE);
> > + printf("%s bin: ", av_hash_get_name(ctx));
> > + for(j = 0; j < av_hash_get_size(ctx); j++) {
>
> Nit: Space after for.
>
> > + printf("%#x ", dst[j]);
>
> Indentation should be four spaces.
>
> > + }
> > + printf("\n");
> > +
> > + av_hash_init(ctx);
> > + av_hash_update(ctx, src, SRC_BUF_SIZE);
> > + memset(dst, 0, DST_BUF_SIZE);
> > + av_hash_final_b64(ctx, dst, DST_BUF_SIZE);
> > + printf("%s b64: %s\n", av_hash_get_name(ctx), dst);
> > + av_hash_freep(&ctx);
> > + }
> > + return 0;
> > +}
> > +
> > +// LCOV_EXCL_STOP
> > +#endif
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
More information about the ffmpeg-devel
mailing list