diff --git a/libavformat/md5proto.c b/libavformat/md5proto.c index 0e04b90aac..14cefe719c 100644 --- a/libavformat/md5proto.c +++ b/libavformat/md5proto.c @@ -25,6 +25,7 @@ #include "libavutil/error.h" #include "avformat.h" #include "avio.h" +#include "internal.h" #include "url.h" struct MD5Context { @@ -57,14 +58,13 @@ static int md5_close(URLContext *h) { struct MD5Context *c = h->priv_data; const char *filename = h->filename; - uint8_t md5[16], buf[64]; + uint8_t md5[16], buf[2 * sizeof(md5) + 1]; URLContext *out; - int i, err = 0; + int err = 0; av_md5_final(c->md5, md5); - for (i = 0; i < sizeof(md5); i++) - snprintf(buf + i*2, 3, "%02x", md5[i]); - buf[i*2] = '\n'; + ff_data_to_hex(buf, md5, sizeof(md5), 1); + buf[2 * sizeof(md5)] = '\n'; av_strstart(filename, "md5:", &filename); @@ -74,10 +74,10 @@ static int md5_close(URLContext *h) h->protocol_whitelist, h->protocol_blacklist, h); if (err) return err; - err = ffurl_write(out, buf, i*2+1); + err = ffurl_write(out, buf, sizeof(buf)); ffurl_close(out); } else { - if (fwrite(buf, 1, i*2+1, stdout) < i*2+1) + if (fwrite(buf, 1, sizeof(buf), stdout) < sizeof(buf)) err = AVERROR(errno); }