diff --git a/lib/modules/SSL.pmod/state.pike b/lib/modules/SSL.pmod/state.pike
index edc28c43f193d3a91c7613cd3e61194352fa46d9..fde22c737e5fee3129abb70ddd23c65a2c70bcb9 100644
--- a/lib/modules/SSL.pmod/state.pike
+++ b/lib/modules/SSL.pmod/state.pike
@@ -9,10 +9,9 @@
 
 import .Constants;
 
-void create(object/*(.session)*/ s)
+protected void create(object/*(.session)*/ s)
 {
   session = s;
-  seq_num = Gmp.mpz(0);
 }
 
 //! Information about the used algorithms.
@@ -27,7 +26,7 @@ object/*(.session)*/ session;
 object compress;
 
 //! 64-bit sequence number.
-Gmp.mpz seq_num;    /* Bignum, values 0, .. 2^64-1 are valid */
+Gmp.mpz seq_num = Gmp.mpz(0);    /* Bignum, values 0, .. 2^64-1 are valid */
 
 //!
 constant Alert = .alert;
@@ -41,14 +40,14 @@ string salt;
 
 string tls_pad(string data, int blocksize) {
   int plen=(blocksize-(sizeof(data)+1)%blocksize)%blocksize;
-  return data + sprintf("%c",plen)*plen+sprintf("%c",plen);
+  return data + sprintf("%1c",plen)*(plen+1);
 }
 
 string tls_unpad(string data)
 {
   int(0..255) plen=[int(0..255)]data[-1];
 
-  string padding=reverse(data)[..plen];
+  string padding=data[<plen..];
 
   string ret = data[..<plen+1];