aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-02-12 15:51:38 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-02-12 15:59:15 +0100
commitd32926db7f4224305a08510c3adc2a3467b3ab2f (patch)
treef91cf1926cd3feb804b2b810b99e476824e84cf3
parent8c5fece11fcb845f459eebb86b03f98d39e5880c (diff)
downloadffmpeg-d32926db7f4224305a08510c3adc2a3467b3ab2f.tar.gz
avformat/riff: return error code from ff_get_guid()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavformat/riff.h2
-rw-r--r--libavformat/riffdec.c7
2 files changed, 6 insertions, 3 deletions
diff --git a/libavformat/riff.h b/libavformat/riff.h
index b59c6065a0..dba38034e9 100644
--- a/libavformat/riff.h
+++ b/libavformat/riff.h
@@ -91,7 +91,7 @@ static av_always_inline int ff_guidcmp(const void *g1, const void *g2)
return memcmp(g1, g2, sizeof(ff_asf_guid));
}
-void ff_get_guid(AVIOContext *s, ff_asf_guid *g);
+int ff_get_guid(AVIOContext *s, ff_asf_guid *g);
void ff_put_guid(AVIOContext *s, const ff_asf_guid *g);
const ff_asf_guid *get_codec_guid(enum AVCodecID id, const AVCodecGuid *av_guid);
diff --git a/libavformat/riffdec.c b/libavformat/riffdec.c
index c1e9ec1532..48c9a941b7 100644
--- a/libavformat/riffdec.c
+++ b/libavformat/riffdec.c
@@ -29,11 +29,14 @@
#include "avio_internal.h"
#include "riff.h"
-void ff_get_guid(AVIOContext *s, ff_asf_guid *g)
+int ff_get_guid(AVIOContext *s, ff_asf_guid *g)
{
av_assert0(sizeof(*g) == 16); //compiler will optimize this out
- if (avio_read(s, *g, sizeof(*g)) < (int)sizeof(*g))
+ if (avio_read(s, *g, sizeof(*g)) < (int)sizeof(*g)) {
memset(*g, 0, sizeof(*g));
+ return AVERROR_INVALIDDATA;
+ }
+ return 0;
}
enum AVCodecID ff_codec_guid_get_id(const AVCodecGuid *guids, ff_asf_guid guid)