From a80b5a9f1a9be1e700b69f9a04e0519708518841 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 17 Apr 2011 18:35:54 -0600 Subject: [PATCH] Improve palmdoc C decompression routine to accept arbitrary sized input data blocks --- src/calibre/ebooks/compression/palmdoc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/calibre/ebooks/compression/palmdoc.c b/src/calibre/ebooks/compression/palmdoc.c index 4d913dfd2b..6b07bb9cd5 100644 --- a/src/calibre/ebooks/compression/palmdoc.c +++ b/src/calibre/ebooks/compression/palmdoc.c @@ -17,6 +17,7 @@ #define BUFFER 6000 #define MIN(x, y) ( ((x) < (y)) ? (x) : (y) ) +#define MAX(x, y) ( ((x) > (y)) ? (x) : (y) ) typedef unsigned short int Byte; typedef struct { @@ -53,7 +54,7 @@ cpalmdoc_decompress(PyObject *self, PyObject *args) { // Map chars to bytes for (j = 0; j < input_len; j++) input[j] = (_input[j] < 0) ? _input[j]+256 : _input[j]; - output = (char *)PyMem_Malloc(sizeof(char)*BUFFER); + output = (char *)PyMem_Malloc(sizeof(char)*(MAX(BUFFER, 5*input_len))); if (output == NULL) return PyErr_NoMemory(); while (i < input_len) {