diff --git a/ChangeLog b/ChangeLog
index f783f71..098bd72 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,9 @@
 	* src/ssl/context.c: Expose SSL_CTX_add_extra_chain_cert.
 	* src/crypto/x509name.c: Fix memory leaks in __getattr__ and
 	  __setattr_ implementations.
+	* src/crypto/x509.c: Fix memory leak in X509.get_pubkey().
+	* leakcheck/: An attempt at a systematic approach to leak
+	  elimination.
 
 2004-08-13  Martin Sjögren  <msjogren@gmail.com>
 
diff --git a/leakcheck/crypto.py b/leakcheck/crypto.py
new file mode 100644
index 0000000..eb00182
--- /dev/null
+++ b/leakcheck/crypto.py
@@ -0,0 +1,59 @@
+import sys
+
+from OpenSSL.crypto import TYPE_DSA, Error, PKey, X509
+
+class Checker_X509_get_pubkey(object):
+    """
+    Leak checks for L{X509.get_pubkey}.
+    """
+    def __init__(self, iterations):
+        self.iterations = iterations
+
+
+    def check_exception(self):
+        """
+        Call the method repeatedly such that it will raise an exception.
+        """
+        for i in xrange(self.iterations):
+            cert = X509()
+            try:
+                cert.get_pubkey()
+            except Error:
+                pass
+
+
+    def check_success(self):
+        """
+        Call the method repeatedly such that it will return a PKey object.
+        """
+        small = xrange(3)
+        for i in xrange(self.iterations):
+            key = PKey()
+            key.generate_key(TYPE_DSA, 256)
+            for i in small:
+                cert = X509()
+                cert.set_pubkey(key)
+                for i in small:
+                    cert.get_pubkey()
+
+
+def vmsize():
+    return [x for x in file('/proc/self/status').readlines() if 'VmSize' in x]
+
+
+def main(iterations='1000'):
+    iterations = int(iterations)
+    for klass in globals():
+        if klass.startswith('Checker_'):
+            klass = globals()[klass]
+            print klass
+            checker = klass(iterations)
+            for meth in dir(checker):
+                if meth.startswith('check_'):
+                    print '\t', meth, vmsize(), '...',
+                    getattr(checker, meth)()
+                    print vmsize()
+
+
+if __name__ == '__main__':
+    main(*sys.argv[1:])
diff --git a/src/crypto/x509.c b/src/crypto/x509.c
index bcae5f6..13a4c71 100644
--- a/src/crypto/x509.c
+++ b/src/crypto/x509.c
@@ -235,7 +235,7 @@
         return NULL;
     }
 
-    return (PyObject *)crypto_PKey_New(pkey, 0);
+    return (PyObject *)crypto_PKey_New(pkey, 1);
 }
 
 static char crypto_X509_set_pubkey_doc[] = "\n\
