diff options
author | Bastien Nocera <hadess@users.sourceforge.net> | 2003-05-06 12:04:41 +0000 |
---|---|---|
committer | Bastien Nocera <hadess@users.sourceforge.net> | 2003-05-06 12:04:41 +0000 |
commit | 476abbd3d2c89c3951d9144f2f483e9d9e551a75 (patch) | |
tree | 6873448ee96fb30a442fdeae0fed02fd304bcde4 | |
parent | 64702254d2e8b626b749867f7b471de4d4f7d0e6 (diff) | |
download | xine-lib-476abbd3d2c89c3951d9144f2f483e9d9e551a75.tar.gz xine-lib-476abbd3d2c89c3951d9144f2f483e9d9e551a75.tar.bz2 |
- make sure that the read_size is not bigger than the buffer we're sending back
CVS patchset: 4778
CVS date: 2003/05/06 12:04:41
-rw-r--r-- | src/xine-engine/demux.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/xine-engine/demux.c b/src/xine-engine/demux.c index ed802d8fa..59721aedc 100644 --- a/src/xine-engine/demux.c +++ b/src/xine-engine/demux.c @@ -39,6 +39,11 @@ #include <winsock.h> #endif +#ifdef MIN +#undef MIN +#endif +#define MIN(a,b) ( (a) < (b) ) ? (a) : (b) + /* #define LOG */ @@ -350,8 +355,9 @@ int xine_demux_read_header( input_plugin_t *input, unsigned char *buffer, off_t return 0; input->seek(input, 0, SEEK_SET); } else if (input->get_capabilities(input) & INPUT_CAP_PREVIEW) { - buf = xine_xmalloc(size); - read_size = input->get_optional_data(input, buf, size); + buf = xine_xmalloc(MAX_PREVIEW_SIZE); + read_size = input->get_optional_data(input, buf, INPUT_OPTIONAL_DATA_PREVIEW); + read_size = MIN (read_size, size); memcpy(buffer, buf, size); free(buf); } else { |