summaryrefslogtreecommitdiff
path: root/src/input/input_stdin_fifo.c
diff options
context:
space:
mode:
authorDarren Salt <linux@youmustbejoking.demon.co.uk>2009-02-10 17:17:50 +0000
committerDarren Salt <linux@youmustbejoking.demon.co.uk>2009-02-10 17:17:50 +0000
commita0b9021d54dc9890da5f0c9bd26361db4556f6c2 (patch)
tree980f00f5a31e15e5ef3eeb400d5883b6b1d2643b /src/input/input_stdin_fifo.c
parent2afab9c8441685d1ec8f6ef5c9f8c4a163533dfa (diff)
downloadxine-lib-a0b9021d54dc9890da5f0c9bd26361db4556f6c2.tar.gz
xine-lib-a0b9021d54dc9890da5f0c9bd26361db4556f6c2.tar.bz2
Fix broken size checks in various input plugins (ref. CVE-2008-5239).
Diffstat (limited to 'src/input/input_stdin_fifo.c')
-rw-r--r--src/input/input_stdin_fifo.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/input/input_stdin_fifo.c b/src/input/input_stdin_fifo.c
index 4acd825a5..64b8d748c 100644
--- a/src/input/input_stdin_fifo.c
+++ b/src/input/input_stdin_fifo.c
@@ -123,7 +123,9 @@ static buf_element_t *stdin_plugin_read_block (input_plugin_t *this_gen, fifo_bu
/* stdin_input_plugin_t *this = (stdin_input_plugin_t *) this_gen; */
buf_element_t *buf = fifo->buffer_pool_alloc (fifo);
- if (todo < 0 || todo > buf->size) {
+ if (todo > buf->max_size)
+ todo = buf->max_size;
+ if (todo < 0) {
buf->free_buffer (buf);
return NULL;
}