Index: luaxyssl-0.2+svn65/lxyssl.c
===================================================================
--- luaxyssl-0.2+svn65.orig/lxyssl.c	2008-07-01 17:28:52.000000000 +0200
+++ luaxyssl-0.2+svn65/lxyssl.c	2008-07-01 17:32:00.000000000 +0200
@@ -5,6 +5,7 @@
 * This code can be distributed under the LGPL license
 */
 
+#include <stdlib.h>
 #include <stdio.h>
 #include <memory.h>
 #include <fcntl.h>
@@ -12,6 +13,7 @@
 #include <sys/socket.h>
 #include <sys/wait.h>
 #include <sys/time.h>
+#include <unistd.h>
 #else
 #include <time.h>
 #include <winsock.h>
@@ -326,7 +328,7 @@
         return 1;
     }
     if (lua_isstring(L, -1)) {
-        int len;
+        size_t len;
         const char *master = luaL_checklstring(L, -1, &len);
         memcpy(ssl->session->master, master, len < sizeof(ssl->session->master) ? len : sizeof(ssl->session->master));
         lua_pop(L, 1);
@@ -479,7 +481,7 @@
 
 static int Laes(lua_State *L)
 {
- int klen;
+ size_t klen;
  const unsigned char *key = luaL_checklstring(L, 1, &klen);
  int bits = luaL_optinteger(L, 2, 128);
  dual_aes_context *aes = lua_newuserdata(L,sizeof(dual_aes_context));
@@ -503,7 +505,7 @@
 
 static int Lrc4(lua_State *L)
 {
- int klen;
+ size_t klen;
  const unsigned char *key = luaL_checklstring(L, 1, &klen);
  arc4_context *rc4 = lua_newuserdata(L,sizeof(arc4_context));
  arc4_setup(rc4, (unsigned char *)key, klen);
@@ -750,7 +752,7 @@
 static int Lhash(lua_State *L)
 {
  const char *type = luaL_checkstring(L,1);
- int klen=0;
+ size_t klen=0;
  const unsigned char *key = luaL_optlstring(L, 2, NULL, &klen);
  hash_context *obj = lua_newuserdata(L,sizeof(hash_context));
  
@@ -869,7 +871,7 @@
 static int Laes_encrypt(lua_State *L)
 {
  dual_aes_context *obj=Pget_aes(L,1);
- int len;
+ size_t len;
  const char *data = luaL_checklstring(L, 2, &len);
  int i;
  luaL_Buffer B;
@@ -890,7 +892,7 @@
 static int Laes_decrypt(lua_State *L)
 {
  dual_aes_context *obj=Pget_aes(L,1);
- int len;
+ size_t len;
  const char *data = luaL_checklstring(L, 2, &len);
  int i;
  luaL_Buffer B;
@@ -911,7 +913,7 @@
 static int Lrc4_crypt(lua_State *L)
 {
  arc4_context *obj=Pget_rc4(L,1);
- int len;
+ size_t len;
  const char *data = luaL_checklstring(L, 2, &len);
  luaL_Buffer B;
  unsigned char temp[256];
@@ -938,9 +940,9 @@
 static int Laes_cbc_encrypt(lua_State *L)
 {
  dual_aes_context *obj=Pget_aes(L,1);
- int len;
+ size_t len;
  const char *data = luaL_checklstring(L, 2, &len);
- int iv_len;
+ size_t iv_len;
  const char *IV = luaL_checklstring(L, 3, &iv_len);
  int i=0;
  luaL_Buffer B;
@@ -970,9 +972,9 @@
 static int Laes_cbc_decrypt(lua_State *L)
 {
  dual_aes_context *obj=Pget_aes(L,1);
- int len;
+ size_t len;
  const char *data = luaL_checklstring(L, 2, &len);
- int iv_len;
+ size_t iv_len;
  const char *IV = luaL_checklstring(L, 3, &iv_len);
  int i;
  luaL_Buffer B;
@@ -1002,9 +1004,9 @@
 static int Laes_cfb_encrypt(lua_State *L)
 {
  dual_aes_context *obj=Pget_aes(L,1);
- int len;
+ size_t len;
  const char *data = luaL_checklstring(L, 2, &len);
- int iv_len;
+ size_t iv_len;
  const char *IV = luaL_checklstring(L, 3, &iv_len);
  int start = luaL_optinteger(L,4,0);
  int i;
@@ -1039,9 +1041,9 @@
 static int Laes_cfb_decrypt(lua_State *L)
 {
  dual_aes_context *obj=Pget_aes(L,1);
- int len;
+ size_t len;
  const char *data = luaL_checklstring(L, 2, &len);
- int iv_len;
+ size_t iv_len;
  const char *IV = luaL_checklstring(L, 3, &iv_len);
  int start = luaL_optinteger(L,4,0);
  int i;
@@ -1079,7 +1081,7 @@
 static int Lhash_update(lua_State *L)
 {
  hash_context *obj=Pget_hash(L,1);
- int len;
+ size_t len;
  const char *data = luaL_checklstring(L, 2, &len);
  obj->update(&obj->eng, (unsigned char *)data, len);
  lua_pushvalue(L, 1);
@@ -1091,7 +1093,7 @@
 {
  hash_context *obj=Pget_hash(L,1);
  unsigned char out[64];
- int len;
+ size_t len;
  const char *data = luaL_optlstring(L, 2, "", &len);
  obj->update(&obj->eng, (unsigned char *)data, len);
  obj->finish(&obj->eng, out);
@@ -1166,7 +1168,7 @@
 static int LaddTrustedCA(lua_State *L)
 {
  int ret; 
- int ca_len;
+ size_t ca_len;
  const char *ca = luaL_checklstring(L, 1, &ca_len);
  
  ret = x509_add_certs( &trustedCA, (unsigned char *) ca, ca_len);
@@ -1311,9 +1313,9 @@
 static int Lsessinfo(lua_State *L)			/** sessinfo(c) */
 {
  xyssl_context *xyssl=Pget(L,1);
- int id_len;
+ size_t id_len;
  char *sessid = (char *)luaL_optlstring(L, 2, NULL, &id_len);
- int master_len;
+ size_t master_len;
  char *master = (char *)luaL_optlstring(L, 3, NULL, &master_len);
  int cipher = (int) luaL_optnumber(L,4,0);
  time_t start = (time_t) luaL_optnumber(L,5,time(NULL));
@@ -1597,7 +1599,7 @@
 static int LsessionCA(lua_State *L) /** setca(ca) **/
 {
  int top = lua_gettop(L);
- int ca_len;
+ size_t ca_len;
  int ret;
  xyssl_context *xyssl=Pget(L,1);
  x509_cert *cacert = &xyssl->cacert;
@@ -1624,9 +1626,9 @@
  ssl_context *ssl=&xyssl->ssl;
  x509_cert *mycert= &xyssl->mycert;
  rsa_context *rsa = &xyssl->mykey;
- int cert_len;
- int key_len;
- int pwd_len;
+ size_t cert_len;
+ size_t key_len;
+ size_t pwd_len;
  int ret;
  const char *cert = luaL_optlstring(L, 2, ssl->endpoint ? test_srv_crt: NULL, &cert_len);
  const char *key = luaL_optlstring(L, 3, ssl->endpoint ? test_srv_key: NULL, &key_len);
@@ -1694,7 +1696,7 @@
  ssl_context *ssl=&xyssl->ssl;
  x509_cert *cacert = &xyssl->cacert;
  int verification = luaL_optinteger(L,2,0);
- int peer_len;
+ size_t peer_len;
  const char *expected_peer= luaL_optlstring(L, 3, NULL, &peer_len);
  ssl_set_authmode( ssl, verification );
  if (xyssl->peer_cn) free(xyssl->peer_cn);
@@ -1748,8 +1750,8 @@
 static int Lx509verify(lua_State *L)		/** x509verify(ca, crt) */
 {
  int top = lua_gettop(L);
- int crt_size;
- int ca_size;
+ size_t crt_size;
+ size_t ca_size;
  int ret;
  int flag;
  x509_cert ca;
@@ -1797,9 +1799,9 @@
 static int Lrsaverify(lua_State *L)		/** rsaverify(data, sig, [crt]) */
 {
  int top = lua_gettop(L);
- int crt_size;
- int data_size;
- int sig_size;
+ size_t crt_size;
+ size_t data_size;
+ size_t sig_size;
  int ret;
  x509_cert cert;
  const char *data = luaL_checklstring(L, 1, &data_size);
@@ -1833,8 +1835,8 @@
 static int Lrsaencrypt(lua_State *L)		/** rsaencrypt(data, [crt]) */
 {
  int top = lua_gettop(L);
- int crt_size;
- int data_size;
+ size_t crt_size;
+ size_t data_size;
  unsigned char m[512];
  int ret;
  x509_cert cert;
@@ -1868,9 +1870,9 @@
 static int Lrsasign(lua_State *L)		/** rsasign(data, [key, [pw]]) */
 {
  int top = lua_gettop(L);
- int key_size;
- int data_size;
- int pwd_len;
+ size_t key_size;
+ size_t data_size;
+ size_t pwd_len;
  int ret;
  unsigned char sig[512];
  rsa_context rsa;
@@ -1905,9 +1907,9 @@
 static int Lrsadecrypt(lua_State *L)		/** rsadecrypt(data, [key, [pw]]) */
 {
  int top = lua_gettop(L);
- int key_size;
- int data_size;
- int pwd_len;
+ size_t key_size;
+ size_t data_size;
+ size_t pwd_len;
  int out_len;
  int ret;
  unsigned char m[512];
@@ -2076,8 +2078,8 @@
 static int Ldhmsecret(lua_State *L) /** dhsecret(public, private, [P, [G]]) */
 {
  int top = lua_gettop(L);
- int public_size;
- int private_size;
+ size_t public_size;
+ size_t private_size;
  int ret;
  dhm_context dhm;
  unsigned char buf[512];