diff options
author | Dwayne C. Litzenberger <dlitz@dlitz.net> | 2009-08-02 13:48:09 -0400 |
---|---|---|
committer | Dwayne C. Litzenberger <dlitz@dlitz.net> | 2009-08-02 14:05:53 -0400 |
commit | 1a84a552475584e776b0bd86f67699e31659cd26 (patch) | |
tree | 844c89faeb90fc869dca79d540301e2046925917 /src/XOR.c | |
parent | 670005e15c088f30973050c3933adabbc8a3005c (diff) | |
download | pycrypto-1a84a552475584e776b0bd86f67699e31659cd26.tar.gz |
src/XOR.c: Fix bug where keys longer than 32 bytes are silently truncated
Diffstat (limited to 'src/XOR.c')
-rw-r--r-- | src/XOR.c | 16 |
1 files changed, 13 insertions, 3 deletions
@@ -10,13 +10,17 @@ * */ +#include "Python.h" + #define MODULE_NAME XOR #define BLOCK_SIZE 1 #define KEY_SIZE 0 +#define MAX_KEY_SIZE 32 + typedef struct { - unsigned char key[32]; + unsigned char key[MAX_KEY_SIZE]; int keylen, last_pos; } stream_state; @@ -24,8 +28,14 @@ static void stream_init(stream_state *self, unsigned char *key, int len) { int i; - - if (32 <= len) len=32; + + if (len > MAX_KEY_SIZE) + { + PyErr_Format(PyExc_ValueError, + "XOR key must be no longer than %d bytes", + MAX_KEY_SIZE); + return; + } self->keylen = len; self->last_pos = 0; |