Fixed nasty buffer overflow bug in event_queue_t

This commit is contained in:
Elias Naur 2003-10-29 16:21:42 +00:00
parent 2852cdaa47
commit 23aa3751ae
2 changed files with 7 additions and 2 deletions

View File

@ -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++;
}
}

View File

@ -42,7 +42,8 @@
#include <jni.h>
#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];