diff options
author | Thibaut Mattern <thibaut.mattern@gmail.com> | 2008-01-12 16:51:25 +0100 |
---|---|---|
committer | Thibaut Mattern <thibaut.mattern@gmail.com> | 2008-01-12 16:51:25 +0100 |
commit | 1324f12dc8213fc0f7e4549665f7d3f5b7f3100e (patch) | |
tree | 6dcb82d8c5c6dafbb67afd152f1c4ad6974cfc82 /src | |
parent | 37e7a5aa4c03f8793dc9da8058a5625f5ff84d4b (diff) | |
download | xine-lib-1324f12dc8213fc0f7e4549665f7d3f5b7f3100e.tar.gz xine-lib-1324f12dc8213fc0f7e4549665f7d3f5b7f3100e.tar.bz2 |
Fixed metadata reading when length=0.
Fixed bug id=17.
Diffstat (limited to 'src')
-rw-r--r-- | src/demuxers/asfheader.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/demuxers/asfheader.c b/src/demuxers/asfheader.c index ea92f878b..eb74c0886 100644 --- a/src/demuxers/asfheader.c +++ b/src/demuxers/asfheader.c @@ -142,9 +142,9 @@ static uint8_t *asf_reader_get_bytes(asf_reader_t *reader, size_t size) { static char *asf_reader_get_string(asf_reader_t *reader, size_t size, iconv_t cd) {
char *inbuf, *outbuf;
size_t inbytesleft, outbytesleft;
- char scratch[2048];
+ char scratch[2048];
- if ((reader->size - reader->pos) < size)
+ if ((size == 0) ||((reader->size - reader->pos) < size))
return NULL;
inbuf = (char *)reader->buffer + reader->pos;
@@ -599,6 +599,12 @@ static int asf_header_parse_content_description(asf_header_t *header_pub, uint8_ content->description = asf_reader_get_string(&reader, description_length, header->iconv_cd);
content->rating = asf_reader_get_string(&reader, rating_length, header->iconv_cd);
+ lprintf("title: %d chars: \"%s\"\n", title_length, content->title);
+ lprintf("author: %d chars: \"%s\"\n", author_length, content->author);
+ lprintf("copyright: %d chars: \"%s\"\n", copyright_length, content->copyright);
+ lprintf("description: %d chars: \"%s\"\n", description_length, content->description);
+ lprintf("rating: %d chars: \"%s\"\n", rating_length, content->rating);
+
header->pub.content = content;
return 1;
}
|