From 23aa3751aed4499a0ee7d89017a867435433cbff Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Wed, 29 Oct 2003 16:21:42 +0000 Subject: [PATCH] Fixed nasty buffer overflow bug in event_queue_t --- src/native/common/common_tools.cpp | 6 +++++- src/native/common/common_tools.h | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/native/common/common_tools.cpp b/src/native/common/common_tools.cpp index 121fdffb..5b2c36f3 100644 --- a/src/native/common/common_tools.cpp +++ b/src/native/common/common_tools.cpp @@ -39,6 +39,10 @@ #include "common_tools.h" +static void incListStart(event_queue_t *queue) { + queue->list_start = (queue->list_start + 1)%EVENT_BUFFER_SIZE; +} + void initEventQueue(event_queue_t *event_queue) { event_queue->list_start = 0; event_queue->list_end = 0; @@ -64,7 +68,7 @@ static void copyEvent(event_queue_t *queue, int event_size, int event_index) { int output_index = event_index*event_size; for (int i = 0; i < event_size; i++) { queue->output_event_buffer[output_index] = queue->input_event_buffer[queue->list_start]; - queue->list_start = (queue->list_start + 1)%EVENT_BUFFER_SIZE; + incListStart(queue); output_index++; } } diff --git a/src/native/common/common_tools.h b/src/native/common/common_tools.h index 5448b7dc..2298728a 100644 --- a/src/native/common/common_tools.h +++ b/src/native/common/common_tools.h @@ -42,7 +42,8 @@ #include -#define EVENT_BUFFER_SIZE 100 +// Must be x * max_event_size + 1 +#define EVENT_BUFFER_SIZE (25 * 4 + 1) typedef struct { unsigned char input_event_buffer[EVENT_BUFFER_SIZE];