diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c index 7f734162920349e3a1b2fc67ded47c0dd2360acf..d2e8ea2f42dc7dc151c0d711125812c5358b4a49 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,