libbluray | branch: master | hpi1 <[email protected]> | Mon Jan 21 13:31:15 2013 +0200| [a37d7d9e8b93080b587cbb7402d6a983cfa12d07] | committer: hpi1
meta_parse: check for failed read > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=a37d7d9e8b93080b587cbb7402d6a983cfa12d07 --- src/libbluray/bdnav/meta_parse.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/libbluray/bdnav/meta_parse.c b/src/libbluray/bdnav/meta_parse.c index 1a088c8..6bf44dc 100644 --- a/src/libbluray/bdnav/meta_parse.c +++ b/src/libbluray/bdnav/meta_parse.c @@ -161,9 +161,13 @@ META_ROOT *meta_parse(const char *device_path) if (length > 0 && length < MAX_META_FILE_SIZE) { file_seek(handle, 0, SEEK_SET); - uint8_t *data = malloc(length); - int64_t size_read = file_read(handle, data, length); - doc = xmlReadMemory((char*)data, size_read, base, NULL, 0); + size_t size = (size_t)length; + uint8_t *data = malloc(size); + size_t size_read = file_read(handle, data, size); + if (size != size_read) { + BD_DEBUG(DBG_DIR, "Failed to read %s\n", path); + } else { + doc = xmlReadMemory((char*)data, (int)size, base, NULL, 0); if (doc == NULL) { BD_DEBUG(DBG_DIR, "Failed to parse %s\n", path); X_FREE(path); @@ -179,6 +183,7 @@ META_ROOT *meta_parse(const char *device_path) root->dl_entries[i].thumbnails = NULL; _parseManifestNode(root_element, &root->dl_entries[i]); xmlFreeDoc(doc); + } X_FREE(data); } file_close(handle); _______________________________________________ libbluray-devel mailing list [email protected] http://mailman.videolan.org/listinfo/libbluray-devel
