bf9fa2d
--- src/AES.c
bf9fa2d
+++ src/AES.c
bf9fa2d
@@ -26,6 +26,7 @@
bf9fa2d
 
bf9fa2d
 #include <assert.h>
bf9fa2d
 #include <stdlib.h>
bf9fa2d
+#define PY_SSIZE_T_CLEAN
bf9fa2d
 #include "Python.h"
bf9fa2d
 
bf9fa2d
 #define MODULE_NAME _AES
bf9fa2d
--- src/ARC2.c
bf9fa2d
+++ src/ARC2.c
bf9fa2d
@@ -42,6 +42,7 @@
bf9fa2d
  */
bf9fa2d
 
bf9fa2d
 #include <string.h>  
bf9fa2d
+#define PY_SSIZE_T_CLEAN
bf9fa2d
 #include "Python.h"
bf9fa2d
 
bf9fa2d
 #define MODULE_NAME _ARC2
d58575d
--- src/block_template.c
d58575d
+++ src/block_template.c
d58575d
@@ -33,6 +33,7 @@
d58575d
 #include <string.h>
d58575d
 #endif
d58575d
 
d58575d
+#define PY_SSIZE_T_CLEAN
d58575d
 #include "Python.h"
d58575d
 #include "pycrypto_compat.h"
d58575d
 #include "modsupport.h" 
d58575d
@@ -123,7 +124,8 @@ ALGnew(PyObject *self, PyObject *args, P
d58575d
 {
d58575d
 	unsigned char *key, *IV;
d58575d
 	ALGobject * new=NULL;
d58575d
-	int keylen, IVlen=0, mode=MODE_ECB, segment_size=0;
d58575d
+	Py_ssize_t keylen, IVlen=0;
d58575d
+	int mode=MODE_ECB, segment_size=0;
d58575d
 	PyObject *counter = NULL;
d58575d
 	int counter_shortcut = 0;
d58575d
 #ifdef PCT_ARC2_MODULE
d58575d
@@ -161,7 +163,7 @@ ALGnew(PyObject *self, PyObject *args, P
d58575d
 	{
d58575d
 		PyErr_Format(PyExc_ValueError,
d58575d
 			     "Key must be %i bytes long, not %i",
d58575d
-			     KEY_SIZE, keylen);
d58575d
+			     KEY_SIZE, (int)keylen);
d58575d
 		return NULL;
d58575d
 	}
d58575d
 	if (KEY_SIZE==0 && keylen==0)
d58575d
@@ -242,7 +244,7 @@ ALGnew(PyObject *self, PyObject *args, P
d58575d
         new->st.effective_keylen = effective_keylen;
d58575d
 #endif
d58575d
 
d58575d
-	block_init(&(new->st), key, keylen);
d58575d
+	block_init(&(new->st), key, (int)keylen);
d58575d
 	if (PyErr_Occurred())
d58575d
 	{
d58575d
 		Py_DECREF(new);
d58575d
@@ -250,7 +252,7 @@ ALGnew(PyObject *self, PyObject *args, P
d58575d
 	}
d58575d
 	memset(new->IV, 0, BLOCK_SIZE);
d58575d
 	memset(new->oldCipher, 0, BLOCK_SIZE);
d58575d
-	memcpy(new->IV, IV, IVlen);
d58575d
+	memcpy(new->IV, IV, (size_t)IVlen);
d58575d
 	new->mode = mode;
d58575d
 	new->count=BLOCK_SIZE;   /* stores how many bytes in new->oldCipher have been used */
d58575d
 	return new;
bf9fa2d
@@ -264,7 +266,8 @@ ALG_Encrypt(ALGobject *self, PyObject *a
bf9fa2d
 {
d58575d
 	unsigned char *buffer, *str;
d58575d
 	unsigned char temp[BLOCK_SIZE];
bf9fa2d
-	int i, j, len;
bf9fa2d
+	int i, j;
bf9fa2d
+	Py_ssize_t len;
d58575d
 	PyObject *result;
d58575d
   
bf9fa2d
 	if (!PyArg_Parse(args, "s#", &str, &len))
bf9fa2d
@@ -292,7 +295,7 @@ ALG_Encrypt(ALGobject *self, PyObject *a
d58575d
 		return NULL;
bf9fa2d
 	}
bf9fa2d
 
bf9fa2d
-	buffer=malloc(len);
bf9fa2d
+	buffer=malloc((size_t)len);
bf9fa2d
 	if (buffer==NULL) 
d58575d
 	{
bf9fa2d
 		PyErr_SetString(PyExc_MemoryError, 
bf9fa2d
@@ -496,7 +499,8 @@ ALG_Decrypt(ALGobject *self, PyObject *a
bf9fa2d
 {
d58575d
 	unsigned char *buffer, *str;
d58575d
 	unsigned char temp[BLOCK_SIZE];
bf9fa2d
-	int i, j, len;
bf9fa2d
+	int i, j;
bf9fa2d
+	Py_ssize_t len;
d58575d
 	PyObject *result;
d58575d
 
d58575d
 	/* CTR mode decryption is identical to encryption */
bf9fa2d
@@ -525,7 +529,7 @@ ALG_Decrypt(ALGobject *self, PyObject *a
bf9fa2d
 			     self->segment_size/8);
d58575d
 		return NULL;
bf9fa2d
 	}
bf9fa2d
-	buffer=malloc(len);
bf9fa2d
+	buffer=malloc((size_t)len);
bf9fa2d
 	if (buffer==NULL) 
d58575d
 	{
bf9fa2d
 		PyErr_SetString(PyExc_MemoryError, 
bf9fa2d
--- src/Blowfish.c
bf9fa2d
+++ src/Blowfish.c
bf9fa2d
@@ -36,6 +36,7 @@
bf9fa2d
 #endif
bf9fa2d
 #include <assert.h>
bf9fa2d
 #include <string.h>
bf9fa2d
+#define PY_SSIZE_T_CLEAN
bf9fa2d
 #include "Python.h"
bf9fa2d
 
bf9fa2d
 #include "Blowfish-tables.h"
bf9fa2d
--- src/CAST.c
bf9fa2d
+++ src/CAST.c
bf9fa2d
@@ -42,6 +42,7 @@
bf9fa2d
 
bf9fa2d
 */
bf9fa2d
 
bf9fa2d
+#define PY_SSIZE_T_CLEAN
bf9fa2d
 #include "Python.h"
bf9fa2d
 
bf9fa2d
 #define MODULE_NAME _CAST
bf9fa2d
--- src/DES.c
bf9fa2d
+++ src/DES.c
bf9fa2d
@@ -34,6 +34,7 @@
bf9fa2d
 #undef DES  /* this is needed because tomcrypt_custom.h defines DES to an empty string */
bf9fa2d
 
bf9fa2d
 #include <assert.h>
bf9fa2d
+#define PY_SSIZE_T_CLEAN
bf9fa2d
 #include "Python.h"
bf9fa2d
 
bf9fa2d
 typedef struct {
d58575d
--- src/hash_template.c
d58575d
+++ src/hash_template.c
d58575d
@@ -30,6 +30,7 @@
d58575d
 #ifdef _HAVE_STDC_HEADERS
d58575d
 #include <string.h>
d58575d
 #endif
d58575d
+#define PY_SSIZE_T_CLEAN
d58575d
 #include "Python.h"
d58575d
 #include "pycrypto_compat.h"
d58575d
 
d58575d
@@ -163,7 +164,7 @@ static PyObject *
d58575d
 ALG_update(ALGobject *self, PyObject *args)
d58575d
 {
d58575d
 	unsigned char *cp;
d58575d
-	int len;
d58575d
+	Py_ssize_t len;
d58575d
 
d58575d
 	if (!PyArg_ParseTuple(args, "s#", &cp, &len))
d58575d
 		return NULL;
d58575d
@@ -273,7 +274,7 @@ ALG_new(PyObject *self, PyObject *args)
d58575d
 {
d58575d
         ALGobject *new;
d58575d
 	unsigned char *cp = NULL;
d58575d
-	int len;
d58575d
+	Py_ssize_t len;
d58575d
 	
d58575d
 	if ((new = newALGobject()) == NULL)
d58575d
 		return NULL;
bf9fa2d
--- src/MD2.c
bf9fa2d
+++ src/MD2.c
bf9fa2d
@@ -28,6 +28,7 @@
bf9fa2d
   
bf9fa2d
 
bf9fa2d
 #include <string.h>
bf9fa2d
+#define PY_SSIZE_T_CLEAN
bf9fa2d
 #include "Python.h"
bf9fa2d
 #include "pycrypto_compat.h"
bf9fa2d
 
bf9fa2d
--- src/MD4.c
bf9fa2d
+++ src/MD4.c
bf9fa2d
@@ -28,6 +28,7 @@
bf9fa2d
   
bf9fa2d
 
bf9fa2d
 #include <string.h>
bf9fa2d
+#define PY_SSIZE_T_CLEAN
bf9fa2d
 #include "Python.h"
bf9fa2d
 #include "pycrypto_compat.h"
bf9fa2d
 
bf9fa2d
--- src/RIPEMD160.c
bf9fa2d
+++ src/RIPEMD160.c
bf9fa2d
@@ -54,6 +54,7 @@
bf9fa2d
 
bf9fa2d
 #include <assert.h>
bf9fa2d
 #include <string.h>
bf9fa2d
+#define PY_SSIZE_T_CLEAN
bf9fa2d
 #include "Python.h"
bf9fa2d
 #include "pycrypto_compat.h"
bf9fa2d
 
d58575d
--- src/stream_template.c
d58575d
+++ src/stream_template.c
d58575d
@@ -33,6 +33,7 @@
d58575d
 #include <string.h>
d58575d
 #endif
d58575d
 
d58575d
+#define PY_SSIZE_T_CLEAN
d58575d
 #include "Python.h"
d58575d
 #include "pycrypto_compat.h"
d58575d
 #include "modsupport.h"
d58575d
@@ -100,7 +101,7 @@ ALGnew(PyObject *self, PyObject *args, P
d58575d
 {
d58575d
 	unsigned char *key;
d58575d
 	ALGobject * new;
d58575d
-	int keylen;
d58575d
+	Py_ssize_t keylen;
d58575d
 
d58575d
 	new = newALGobject();
d58575d
 	if (!PyArg_ParseTupleAndKeywords(args, kwdict, "s#", kwlist, 
d58575d
@@ -124,7 +125,7 @@ ALGnew(PyObject *self, PyObject *args, P
d58575d
 				"the null string (0 bytes long)");
d58575d
 		return NULL;
d58575d
 	}
d58575d
-	stream_init(&(new->st), key, keylen);
d58575d
+	stream_init(&(new->st), key, (int)keylen);
d58575d
 	if (PyErr_Occurred())
d58575d
 	{
d58575d
 		Py_DECREF(new);
bf9fa2d
@@ -140,7 +141,7 @@ static PyObject *
bf9fa2d
 ALG_Encrypt(ALGobject *self, PyObject *args)
d58575d
 {
d58575d
 	unsigned char *buffer, *str;
bf9fa2d
-	int len;
bf9fa2d
+	Py_ssize_t len;
d58575d
 	PyObject *result;
d58575d
 
bf9fa2d
 	if (!PyArg_Parse(args, "s#", &str, &len))
bf9fa2d
@@ -149,7 +150,7 @@ ALG_Encrypt(ALGobject *self, PyObject *a
d58575d
 	{
d58575d
 		return PyBytes_FromStringAndSize(NULL, 0);
bf9fa2d
 	}
bf9fa2d
-	buffer = malloc(len);
bf9fa2d
+	buffer = malloc((size_t)len);
bf9fa2d
 	if (buffer == NULL)
bf9fa2d
 	{
bf9fa2d
 		PyErr_SetString(PyExc_MemoryError, "No memory available in "
bf9fa2d
@@ -157,8 +158,8 @@ ALG_Encrypt(ALGobject *self, PyObject *a
bf9fa2d
 		return NULL;
bf9fa2d
 	}
bf9fa2d
 	Py_BEGIN_ALLOW_THREADS;
bf9fa2d
-	memcpy(buffer, str, len);
bf9fa2d
-	stream_encrypt(&(self->st), buffer, len);
bf9fa2d
+	memcpy(buffer, str, (size_t)len);
bf9fa2d
+	stream_encrypt(&(self->st), buffer, (int)len);
bf9fa2d
 	Py_END_ALLOW_THREADS;
bf9fa2d
 	result = PyBytes_FromStringAndSize((char *)buffer, len);
bf9fa2d
 	free(buffer);
bf9fa2d
@@ -172,7 +173,7 @@ static PyObject *
bf9fa2d
 ALG_Decrypt(ALGobject *self, PyObject *args)
d58575d
 {
d58575d
 	unsigned char *buffer, *str;
bf9fa2d
-	int len;
bf9fa2d
+	Py_ssize_t len;
d58575d
 	PyObject *result;
d58575d
 
bf9fa2d
 	if (!PyArg_Parse(args, "s#", &str, &len))
bf9fa2d
@@ -181,7 +182,7 @@ ALG_Decrypt(ALGobject *self, PyObject *a
d58575d
 	{
d58575d
 		return PyBytes_FromStringAndSize(NULL, 0);
bf9fa2d
 	}
bf9fa2d
-	buffer = malloc(len);
bf9fa2d
+	buffer = malloc((size_t)len);
bf9fa2d
 	if (buffer == NULL)
bf9fa2d
 	{
bf9fa2d
 		PyErr_SetString(PyExc_MemoryError, "No memory available in "
bf9fa2d
@@ -189,8 +190,8 @@ ALG_Decrypt(ALGobject *self, PyObject *a
bf9fa2d
 		return NULL;
bf9fa2d
 	}
bf9fa2d
 	Py_BEGIN_ALLOW_THREADS;
bf9fa2d
-	memcpy(buffer, str, len);
bf9fa2d
-	stream_decrypt(&(self->st), buffer, len);
bf9fa2d
+	memcpy(buffer, str, (size_t)len);
bf9fa2d
+	stream_decrypt(&(self->st), buffer, (int)len);
bf9fa2d
 	Py_END_ALLOW_THREADS;
bf9fa2d
 	result = PyBytes_FromStringAndSize((char *)buffer, len);
bf9fa2d
 	free(buffer);
bf9fa2d
--- src/XOR.c
bf9fa2d
+++ src/XOR.c
bf9fa2d
@@ -24,6 +24,7 @@
bf9fa2d
  * =======================================================================
bf9fa2d
  */
bf9fa2d
 
bf9fa2d
+#define PY_SSIZE_T_CLEAN
bf9fa2d
 #include "Python.h"
bf9fa2d
 
bf9fa2d
 #define MODULE_NAME _XOR