summaryrefslogtreecommitdiff
path: root/libavformat/rmdec.c
diff options
context:
space:
mode:
authorRonald S. Bultje <rsbultje@gmail.com>2007-07-28 18:02:19 +0000
committerDiego Biurrun <diego@biurrun.de>2007-07-28 18:02:19 +0000
commit28263f5f15e1acededd06128f1bd75e0112b00c2 (patch)
tree4ad43913369d51bacde1dc45c9fb03205f4fc0c2 /libavformat/rmdec.c
parentbd7c6fd50c40f1fa41cc356dfa6df3575fe8c589 (diff)
Fix get_str/get_str8() to also work if the target string is not long enough to
fit all data from the container string, and allow NULL as a string also to simply skip the string altogether. patch by Ronald S. Bultje, rsbultje gmail com Originally committed as revision 9817 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/rmdec.c')
-rw-r--r--libavformat/rmdec.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c
index 7f73416292..d2e8ea2f42 100644
--- a/libavformat/rmdec.c
+++ b/libavformat/rmdec.c
@@ -25,29 +25,31 @@
static void get_str(ByteIOContext *pb, char *buf, int buf_size)
{
int len, i;
- char *q;
+ char *q, r;
len = get_be16(pb);
q = buf;
for(i=0;i<len;i++) {
+ r = get_byte(pb);
if (i < buf_size - 1)
- *q++ = get_byte(pb);
+ *q++ = r;
}
- *q = '\0';
+ if (buf_size > 0) *q = '\0';
}
static void get_str8(ByteIOContext *pb, char *buf, int buf_size)
{
int len, i;
- char *q;
+ char *q, r;
len = get_byte(pb);
q = buf;
for(i=0;i<len;i++) {
+ r = get_byte(pb);
if (i < buf_size - 1)
- *q++ = get_byte(pb);
+ *q++ = r;
}
- *q = '\0';
+ if (buf_size > 0) *q = '\0';
}
static int rm_read_audio_stream_info(AVFormatContext *s, AVStream *st,