chiark / gitweb /
*.c: Declare `PY_SSIZE_T_CLEAN'.
authorMark Wooding <mdw@distorted.org.uk>
Thu, 26 May 2016 08:26:09 +0000 (09:26 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Wed, 12 Apr 2017 21:01:56 +0000 (22:01 +0100)
Now we can process large strings on 64-bit targets.  Err, win?

algorithms.c
buffer.c
bytestring.c
catacomb-python.h
ec.c
group.c
key.c
mp.c
pubkey.c
rand.c
share.c

index 2f9889decd6e33a6f52b90aed19a464a937bd808..3f9d4b77edb97072288e0b10be5bc841cbeb0ae8 100644 (file)
@@ -462,7 +462,7 @@ static PyObject *gcipher_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
 {
   char *kwlist[] = { "k", 0 };
   char *k;
-  int sz;
+  Py_ssize_t sz;
 
   if (!PyArg_ParseTupleAndKeywords(arg, kw, "s#:new", kwlist, &k, &sz))
     goto end;
@@ -511,7 +511,7 @@ static PyObject *gccget_blksz(PyObject *me, void *hunoz)
 static PyObject *gcmeth_encrypt(PyObject *me, PyObject *arg)
 {
   char *p;
-  int sz;
+  Py_ssize_t sz;
   PyObject *rc = 0;
 
   if (!PyArg_ParseTuple(arg, "s#:encrypt", &p, &sz)) return (0);
@@ -537,7 +537,7 @@ static PyObject *gcmeth_enczero(PyObject *me, PyObject *arg)
 static PyObject *gcmeth_decrypt(PyObject *me, PyObject *arg)
 {
   char *p;
-  int sz;
+  Py_ssize_t sz;
   PyObject *rc = 0;
 
   if (!PyArg_ParseTuple(arg, "s#:decrypt", &p, &sz)) return (0);
@@ -563,7 +563,7 @@ static PyObject *gcmeth_deczero(PyObject *me, PyObject *arg)
 static PyObject *gcmeth_setiv(PyObject *me, PyObject *arg)
 {
   char *p;
-  int sz;
+  Py_ssize_t sz;
 
   if (!PyArg_ParseTuple(arg, "s#:setiv", &p, &sz)) goto end;
   if (!GC_CLASS(GCIPHER_C(me))->blksz) VALERR("not a block cipher mode");
@@ -766,7 +766,7 @@ static PyObject *gchget_bufsz(PyObject *me, void *hunoz)
 static PyObject *ghmeth_hash(PyObject *me, PyObject *arg)
 {
   char *p;
-  int sz;
+  Py_ssize_t sz;
   if (!PyArg_ParseTuple(arg, "s#:hash", &p, &sz)) return (0);
   GH_HASH(GHASH_H(me), p, sz);
   RETURN_ME;
@@ -788,7 +788,7 @@ DOUINTCONV(GHMETH_HASHU_)
   static PyObject *ghmeth_hashbuf##w(PyObject *me, PyObject *arg)      \
   {                                                                    \
     char *p;                                                           \
-    int sz;                                                            \
+    Py_ssize_t sz;                                                     \
     if (!PyArg_ParseTuple(arg, "s#:hashbuf" #w, &p, &sz)) goto end;    \
     if (sz > MASK##n) TYERR("string too long");                                \
     GH_HASHBUF##W(GHASH_H(me), p, sz);                                 \
@@ -950,7 +950,7 @@ static PyObject *gmac_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
 {
   char *kwlist[] = { "k", 0 };
   char *k;
-  int sz;
+  Py_ssize_t sz;
 
   if (!PyArg_ParseTupleAndKeywords(arg, kw, "s#:new", kwlist, &k, &sz))
     goto end;
@@ -1212,7 +1212,7 @@ static PyObject *poly1305hash_pynew(PyTypeObject *ty,
   poly1305key_pyobj *pk = (poly1305key_pyobj *)ty;
   poly1305hash_pyobj *ph;
   char *m = 0;
-  int sz;
+  Py_ssize_t sz;
 
   if (!PyArg_ParseTupleAndKeywords(arg, kw, "|s#:new", kwlist, &m, &sz))
     return (0);
@@ -1233,7 +1233,7 @@ static PyObject *poly1305key_pynew(PyTypeObject *ty,
   char *kwlist[] = { "k", 0 };
   poly1305key_pyobj *pk;
   char *k;
-  int sz;
+  Py_ssize_t sz;
 
   if (!PyArg_ParseTupleAndKeywords(arg, kw, "s#:new", kwlist, &k, &sz))
     goto end;
@@ -1285,7 +1285,7 @@ static PyObject *polymeth_copy(PyObject *me, PyObject *arg)
 static PyObject *polymeth_hash(PyObject *me, PyObject *arg)
 {
   char *p;
-  int sz;
+  Py_ssize_t sz;
   if (!PyArg_ParseTuple(arg, "s#:hash", &p, &sz)) return (0);
   poly1305_hash(P1305_CTX(me), p, sz);
   RETURN_ME;
@@ -1308,7 +1308,7 @@ DOUINTCONV(POLYMETH_HASHU_)
   static PyObject *polymeth_hashbuf##w(PyObject *me, PyObject *arg)    \
   {                                                                    \
     char *p;                                                           \
-    int sz;                                                            \
+    Py_ssize_t sz;                                                     \
     octet b[SZ_##W];                                                   \
     if (!PyArg_ParseTuple(arg, "s#:hashbuf" #w, &p, &sz)) goto end;    \
     if (sz > MASK##n) TYERR("string too long");                                \
@@ -1542,7 +1542,7 @@ static PyTypeObject poly1305hash_pytype_skel = {
   {                                                                    \
     dance##_ctx dance;                                                 \
     char *k, *n;                                                       \
-    int ksz, nsz;                                                      \
+    Py_ssize_t ksz, nsz;                                               \
     PyObject *rc;                                                      \
     if (!PyArg_ParseTuple(arg, "s#s#:" #hdance "_prf",                 \
                          &k, &ksz, &n, &nsz))                          \
@@ -1626,7 +1626,7 @@ static PyObject *gprp_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
 {
   char *kwlist[] = { "key", 0 };
   char *k;
-  int sz;
+  Py_ssize_t sz;
   const prpinfo *prp = GCPRP_PRP(ty);
   PyObject *me;
 
@@ -1672,7 +1672,7 @@ static PyObject *gcpget_blksz(PyObject *me, void *hunoz)
 static PyObject *gpmeth_encrypt(PyObject *me, PyObject *arg)
 {
   char *p;
-  int n;
+  Py_ssize_t n;
   PyObject *rc = 0;
 
   if (!PyArg_ParseTuple(arg, "s#:encrypt", &p, &n)) goto end;
@@ -1686,7 +1686,7 @@ end:
 static PyObject *gpmeth_decrypt(PyObject *me, PyObject *arg)
 {
   char *p;
-  int n;
+  Py_ssize_t n;
   PyObject *rc = 0;
 
   if (!PyArg_ParseTuple(arg, "s#:decrypt", &p, &n)) goto end;
index 65695162e814f3b13cc31e129f1a9853945b0521..43bf02de7647989b3d91b5fd48d47dc2d3b8ab5a 100644 (file)
--- a/buffer.c
+++ b/buffer.c
@@ -53,7 +53,7 @@ static PyObject *buferr;
 static PyObject *rbuf_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
 {
   char *p, *q;
-  int n;
+  Py_ssize_t n;
   buf_pyobj *me = 0;
   static char *kwlist[] = { "data", 0 };
 
@@ -387,7 +387,7 @@ static PyObject *wbmeth_zero(PyObject *me, PyObject *arg)
 static PyObject *wbmeth_put(PyObject *me, PyObject *arg)
 {
   void *p;
-  int n;
+  Py_ssize_t n;
   if (!PyArg_ParseTuple(arg, "s#:put", &p, &n)) return (0);
   ensure(me, n);
   buf_put(BUF_B(me), p, n); assert(BOK(BUF_B(m)));
@@ -410,7 +410,7 @@ DOUINTCONV(WBMETH_PUTU_)
   static PyObject *wbmeth_putblk##w(PyObject *me, PyObject *arg)       \
   {                                                                    \
     char *p;                                                           \
-    int sz;                                                            \
+    Py_ssize_t sz;                                                     \
     if (!PyArg_ParseTuple(arg, "s#:putblk" #w, &p, &sz)) return (0);   \
     ensure(me, sz + SZ_##n);                                           \
     buf_putmem##w(BUF_B(me), p, sz); assert(BOK(BUF_B(me)));           \
index b3b32de52bd6159416412277b838b758b520f8f0..b78ec1451510ffb35febc757771db4d309cde63e 100644 (file)
@@ -54,7 +54,7 @@ static PyObject *bytestring_pynew(PyTypeObject *ty,
                                  PyObject *arg, PyObject *kw)
 {
   const char *p;
-  int n;
+  Py_ssize_t n;
   static char *kwlist[] = { "data", 0 };
   if (!PyArg_ParseTupleAndKeywords(arg, kw, "s#:new", kwlist, &p, &n))
     return (0);
index 0949562de460e319ec89a0ff319e26095e13c693..77c7eae4ab878c689ff309e75fc181bf7e52d2b2 100644 (file)
@@ -33,6 +33,8 @@
 
 /*----- Header files ------------------------------------------------------*/
 
+#define PY_SSIZE_T_CLEAN
+
 #include <Python.h>
 #include <longintrepr.h>
 #include <structmember.h>
diff --git a/ec.c b/ec.c
index 9d4d6e75faeb742858d9e75b63b1a661178f79fb..6dcf1cb17fa5c85bd99512b9d0fbe0db0721973d 100644 (file)
--- a/ec.c
+++ b/ec.c
@@ -835,7 +835,7 @@ static PyObject *ecmeth_mmul(PyObject *me, PyObject *arg)
 static PyObject *meth__ECPtCurve_fromraw(PyObject *me, PyObject *arg)
 {
   char *p;
-  int len;
+  Py_ssize_t len;
   buf b;
   PyObject *rc = 0;
   ec_curve *cc;
@@ -857,7 +857,7 @@ static PyObject *meth__ECPtCurve_os2ecp(PyObject *me,
                                        PyObject *arg, PyObject *kw)
 {
   char *p;
-  int len;
+  Py_ssize_t len;
   buf b;
   PyObject *rc = 0;
   ec_curve *cc;
@@ -881,7 +881,7 @@ static PyObject *meth__ECPt_frombuf(PyObject *me, PyObject *arg)
 {
   buf b;
   char *p;
-  int sz;
+  Py_ssize_t sz;
   PyObject *rc = 0;
   ec pp = EC_INIT;
 
diff --git a/group.c b/group.c
index 5cc40e54a364cecb0028ca35329e9afc5fb0c792..e591301f7929912765fd02b0fa74733e3fcc0967 100644 (file)
--- a/group.c
+++ b/group.c
@@ -184,7 +184,7 @@ static PyObject *meth__DHInfo_gendsa(PyObject *me,
   unsigned steps = 0;
   dsa_seed ds;
   char *k;
-  int ksz;
+  Py_ssize_t ksz;
   pgev evt = { 0 };
   char *kwlist[] =
     { "class", "pbits", "qbits", "seed", "event", "nsteps", 0 };
@@ -815,7 +815,7 @@ static PyObject *meth__GE_frombuf(PyObject *me, PyObject *arg)
 {
   buf b;
   char *p;
-  int n;
+  Py_ssize_t n;
   group *g;
   ge *x = 0;
 
@@ -836,7 +836,7 @@ static PyObject *meth__GE_fromraw(PyObject *me, PyObject *arg)
 {
   buf b;
   char *p;
-  int n;
+  Py_ssize_t n;
   group *g;
   ge *x = 0;
 
@@ -857,7 +857,7 @@ static PyObject *meth__GE_fromstring(PyObject *me, PyObject *arg)
 {
   mptext_stringctx sc;
   char *p;
-  int n;
+  Py_ssize_t n;
   group *g;
   ge *x = 0;
 
@@ -870,7 +870,7 @@ static PyObject *meth__GE_fromstring(PyObject *me, PyObject *arg)
   if (G_READ(g, x, &mptext_stringops, &sc))
     VALERR("bad group element string");
   return (Py_BuildValue("(Ns#)", ge_pywrap(me, x),
-                       sc.buf, (int)(sc.lim - sc.buf)));
+                       sc.buf, (Py_ssize_t)(sc.lim - sc.buf)));
 end:
   if (x) G_DESTROY(g, x);
   return (0);
diff --git a/key.c b/key.c
index a3cd200b1189a4f9f05aec1e98b702468c898b67..8dec99cfa09e22415dfdbc47c0516a676eda24fd 100644 (file)
--- a/key.c
+++ b/key.c
@@ -414,7 +414,7 @@ end:
 static PyObject *kdmeth_lock(PyObject *me, PyObject *arg)
 {
   char *p;
-  int n;
+  Py_ssize_t n;
   PyObject *rc = 0;
   key_data *kd;
 
@@ -445,7 +445,7 @@ end:
 static PyObject *meth__KeyData_decode(PyObject *me, PyObject *arg)
 {
   const char *p;
-  int n;
+  Py_ssize_t n;
   key_data *kd;
   PyObject *rc = 0;
 
@@ -533,7 +533,7 @@ static PyObject *keydatabin_pynew(PyTypeObject *ty,
                                  PyObject *arg, PyObject *kw)
 {
   char *p;
-  int n;
+  Py_ssize_t n;
   unsigned f = 0;
   keydata_pyobj *me = 0;
   static char *kwlist[] = { "key", "flags", 0 };
@@ -610,7 +610,7 @@ static PyObject *keydataenc_pynew(PyTypeObject *ty,
                                  PyObject *arg, PyObject *kw)
 {
   char *p;
-  int n;
+  Py_ssize_t n;
   unsigned f = 0;
   keydata_pyobj *me = 0;
   static char *kwlist[] = { "key", "flags", 0 };
@@ -636,7 +636,7 @@ end:
 static PyObject *kdemeth_lock(PyObject *me, PyObject *arg)
 {
   char *hunoz;
-  int hukairz;
+  Py_ssize_t hukairz;
   if (!PyArg_ParseTuple(arg, "s#:lock", &hunoz, &hukairz)) goto end;
   KEYERR(KERR_WRONGTYPE);
 end:
@@ -662,7 +662,7 @@ end:
 static PyObject *kdemeth_unlock(PyObject *me, PyObject *arg)
 {
   char *p;
-  int n;
+  Py_ssize_t n;
   int err;
   PyObject *rc = 0;
   key_data *kd;
@@ -1969,7 +1969,7 @@ static PyObject *kfmeth_qtag(PyObject *me, PyObject *arg, PyObject *kw)
   }
   key_incref(*kd);
   rc = Py_BuildValue("(s#NN)",
-                    d.buf, d.len,
+                    d.buf, (Py_ssize_t)d.len,
                     key_pywrap(me, k),
                     keydata_pywrap(okd));
 end:
diff --git a/mp.c b/mp.c
index 8f57ad12ec251dc8e56b848077d354687bfe6e6f..eb6a496b377ba668b061c3125b44580bd523d1cd 100644 (file)
--- a/mp.c
+++ b/mp.c
@@ -711,7 +711,7 @@ STOREOP(storeb2c, 2c)
   {                                                                    \
     buf b;                                                             \
     char *p;                                                           \
-    int sz;                                                            \
+    Py_ssize_t sz;                                                     \
     PyObject *rc = 0;                                                  \
     mp *x;                                                             \
                                                                        \
@@ -909,7 +909,7 @@ static PyObject *meth__MP_fromstring(PyObject *me,
 {
   int r = 0;
   char *p;
-  int len;
+  Py_ssize_t len;
   PyObject *z = 0;
   mp *zz;
   mptext_stringctx sc;
@@ -922,7 +922,8 @@ static PyObject *meth__MP_fromstring(PyObject *me,
   sc.buf = p; sc.lim = p + len;
   if ((zz = mp_read(MP_NEW, r, &mptext_stringops, &sc)) == 0)
     VALERR("bad integer");
-  z = Py_BuildValue("(Ns#)", mp_pywrap(zz), sc.buf, (int)(sc.lim - sc.buf));
+  z = Py_BuildValue("(Ns#)", mp_pywrap(zz),
+                   sc.buf, (Py_ssize_t)(sc.lim - sc.buf));
 end:
   return (z);
 }
@@ -950,7 +951,7 @@ static PyObject *meth__MP_fibonacci(PyObject *me, PyObject *arg)
   static PyObject *meth__##py##_##name(PyObject *me, PyObject *arg)    \
   {                                                                    \
     char *p;                                                           \
-    int len;                                                           \
+    Py_ssize_t len;                                                    \
     if (!PyArg_ParseTuple(arg, "Os#:" #name, &me, &p, &len)) return (0); \
     return (pre##_pywrap(mp_##name(MP_NEW, p, len)));                  \
   }
@@ -2109,7 +2110,7 @@ static PyObject *meth__GF_fromstring(PyObject *me,
 {
   int r = 0;
   char *p;
-  int len;
+  Py_ssize_t len;
   PyObject *z = 0;
   mp *zz;
   mptext_stringctx sc;
@@ -2125,7 +2126,8 @@ static PyObject *meth__GF_fromstring(PyObject *me,
     if (zz) MP_DROP(zz);
     VALERR("bad binary polynomial");
   }
-  z = Py_BuildValue("(Ns#)", gf_pywrap(zz), sc.buf, (int)(sc.lim - sc.buf));
+  z = Py_BuildValue("(Ns#)", gf_pywrap(zz),
+                   sc.buf, (Py_ssize_t)(sc.lim - sc.buf));
 end:
   return (z);
 }
index 4c4eb1dfbc40743ea7c342eea9dafde4a22c0a52..311152ac4bf69fd9f0bf687a18731dab65de6773 100644 (file)
--- a/pubkey.c
+++ b/pubkey.c
@@ -120,7 +120,7 @@ static PyObject *dsameth_sign(PyObject *me, PyObject *arg, PyObject *kw)
 {
   gdsa_sig s = GDSA_SIG_INIT;
   char *p;
-  int n;
+  Py_ssize_t n;
   mp *k = 0;
   PyObject *rc = 0;
   char *kwlist[] = { "msg", "k", 0 };
@@ -140,7 +140,7 @@ end:
 static PyObject *dsameth_verify(PyObject *me, PyObject *arg)
 {
   char *p;
-  int n;
+  Py_ssize_t n;
   gdsa_sig s = GDSA_SIG_INIT;
   PyObject *rc = 0;
 
@@ -365,7 +365,7 @@ static PyObject *kcdsameth_sign(PyObject *me, PyObject *arg, PyObject *kw)
 {
   gkcdsa_sig s = GKCDSA_SIG_INIT;
   char *p;
-  int n;
+  Py_ssize_t n;
   mp *k = 0;
   PyObject *r = 0, *rc = 0;
   char *kwlist[] = { "msg", "k", 0 };
@@ -388,7 +388,7 @@ end:
 static PyObject *kcdsameth_verify(PyObject *me, PyObject *arg)
 {
   char *p;
-  int n, rn;
+  Py_ssize_t n, rn;
   gkcdsa_sig s = GKCDSA_SIG_INIT;
   PyObject *rc = 0;
 
@@ -865,7 +865,7 @@ static PyObject *meth__p1crypt_encode(PyObject *me,
 {
   pkcs1 p1;
   char *m, *ep;
-  int msz, epsz;
+  Py_ssize_t msz, epsz;
   unsigned long nbits;
   PyObject *rc = 0;
   octet *b = 0;
@@ -894,7 +894,7 @@ static PyObject *meth__p1crypt_decode(PyObject *me,
 {
   pkcs1 p1;
   char *ep;
-  int epsz;
+  Py_ssize_t epsz;
   unsigned long nbits;
   int n;
   PyObject *rc = 0;
@@ -926,7 +926,7 @@ static PyObject *meth__p1sig_encode(PyObject *me,
 {
   pkcs1 p1;
   char *m, *ep;
-  int msz, epsz;
+  Py_ssize_t msz, epsz;
   unsigned long nbits;
   PyObject *rc = 0;
   octet *b = 0;
@@ -955,7 +955,7 @@ static PyObject *meth__p1sig_decode(PyObject *me,
 {
   pkcs1 p1;
   char *ep;
-  int epsz;
+  Py_ssize_t epsz;
   unsigned long nbits;
   int n;
   PyObject *hukairz;
@@ -988,7 +988,7 @@ static PyObject *meth__oaep_encode(PyObject *me,
 {
   oaep o;
   char *m, *ep;
-  int msz, epsz;
+  Py_ssize_t msz, epsz;
   unsigned long nbits;
   PyObject *rc = 0;
   octet *b = 0;
@@ -1020,7 +1020,7 @@ static PyObject *meth__oaep_decode(PyObject *me,
 {
   oaep o;
   char *ep;
-  int epsz;
+  Py_ssize_t epsz;
   unsigned long nbits;
   int n;
   PyObject *rc = 0;
@@ -1055,7 +1055,7 @@ static PyObject *meth__pss_encode(PyObject *me,
 {
   pss p;
   char *m;
-  int msz;
+  Py_ssize_t msz;
   unsigned long nbits;
   PyObject *rc = 0;
   octet *b = 0;
@@ -1087,7 +1087,7 @@ static PyObject *meth__pss_decode(PyObject *me,
 {
   pss p;
   char *m;
-  int msz;
+  Py_ssize_t msz;
   unsigned long nbits;
   PyObject *rc = 0;
   octet *b = 0;
diff --git a/rand.c b/rand.c
index 784fd9312aa9c8311dc201c9014017d1f655d114..f163efa0533014c28c034738e47206c8af476e88 100644 (file)
--- a/rand.c
+++ b/rand.c
@@ -173,7 +173,7 @@ end:
 static PyObject *grmeth_seedblock(PyObject *me, PyObject *arg)
 {
   char *p;
-  int n;
+  Py_ssize_t n;
   grand *r = GRAND_R(me);
   if (!PyArg_ParseTuple(arg, "s#:seedblock", &p, &n) ||
       checkop(r, GRAND_SEEDBLOCK, "seedblock"))
@@ -219,7 +219,7 @@ static PyObject *grmeth_mask(PyObject *me, PyObject *arg)
 {
   grand *r = GRAND_R(me);
   char *p, *q;
-  int sz;
+  Py_ssize_t sz;
   PyObject *rc;
 
   if (!PyArg_ParseTuple(arg, "s#:mask", &p, &sz)) return (0);
@@ -452,7 +452,7 @@ static PyObject *trmeth_stretch(PyObject *me, PyObject *arg)
 static PyObject *trmeth_add(PyObject *me, PyObject *arg)
 {
   grand *r = GRAND_R(me);
-  char *p; int n; unsigned goodbits;
+  char *p; Py_ssize_t n; unsigned goodbits;
   if (!PyArg_ParseTuple(arg, "s#O&:add", &p, &n, convuint, &goodbits))
     return (0);
   r->ops->misc(r, RAND_ADD, p, (size_t)n, goodbits);
@@ -462,7 +462,7 @@ static PyObject *trmeth_add(PyObject *me, PyObject *arg)
 static PyObject *trmeth_key(PyObject *me, PyObject *arg)
 {
   grand *r = GRAND_R(me);
-  char *p; int n;
+  char *p; Py_ssize_t n;
   if (!PyArg_ParseTuple(arg, "s#:key", &p, &n)) return (0);
   r->ops->misc(r, RAND_KEY, p, (size_t)n);
   RETURN_ME;
@@ -617,7 +617,7 @@ static PyObject *gcrand_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
   const gccrand_info *info = GCCRAND_INFO(ty);
   static char *kwlist[] = { "key", 0 };
   char *k;
-  int n;
+  Py_ssize_t n;
 
   if (!PyArg_ParseTupleAndKeywords(arg, kw, "s#:new", kwlist, &k, &n))
     goto end;
@@ -633,7 +633,7 @@ static PyObject *gcirand_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
   uint32 i = 0;
   static char *kwlist[] = { "key", "i", 0 };
   char *k;
-  int n;
+  Py_ssize_t n;
 
   if (!PyArg_ParseTupleAndKeywords(arg, kw, "s#O&:new", kwlist,
                                   &k, &n, convu32, &i))
@@ -651,7 +651,7 @@ static PyObject *gcnrand_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
   const gccrand_info *info = GCCRAND_INFO(ty);
   static char *kwlist[] = { "key", "nonce", 0 };
   char *k, *n;
-  int ksz, nsz;
+  Py_ssize_t ksz, nsz;
 
   if (!PyArg_ParseTupleAndKeywords(arg, kw, "s#s#:new", kwlist,
                                   &k, &ksz, &n, &nsz))
diff --git a/share.c b/share.c
index ad56d31f20a75817d372a728e481be00a4af0c9b..2caa718bb23290ec613a0f378ada8052964ffabe 100644 (file)
--- a/share.c
+++ b/share.c
@@ -113,7 +113,7 @@ static PyObject *gfsharesplit_pynew(PyTypeObject *ty,
                                    PyObject *arg, PyObject *kw)
 {
   char *p;
-  int n;
+  Py_ssize_t n;
   unsigned t;
   grand *r = &rand_global;
   gfshare_pyobj *s;
@@ -228,7 +228,7 @@ static PyObject *gfsmeth_add(PyObject *me, PyObject *arg)
 {
   unsigned i;
   char *p;
-  int n;
+  Py_ssize_t n;
   if (!PyArg_ParseTuple(arg, "O&s#:add", convuint, &i, &p, &n)) goto end;
   if (i > 254) VALERR("index must be < 255");
   if (n != GFSHARE_S(me)->sz) VALERR("bad share size");