m2crypto beta release
Matt Rodriguez <[email protected]>
| Newsgroups | gmane.comp.python.cryptography |
|---|---|
| Message-ID | <[email protected]> |
I did some quick QA on the beta release of m2crypto, I found a few problems but overall I think the quality of the project has improved significantly over the last few months. 1. test_ssl.py is not working for me. The problem is the unittests for the SSLClientTestCase. All of these tests fail with a Connection refused error. I haven't looked into this any deeper than this, because I'm just doing some preliminary checks right now. The rest of the unittests work flawlessly for me. 2. There still are a bunch of compiler warnings. These just need to go away before the final release. I've noticed that SWIG-1.3.24 generates code that produces compiler warnings, these warnings go away in SWIG 1.3.25. I know I suggested that we should make 1.3.24 a requirement, but I would say that we should probably just require 1.3.25. We should have a simple check in the setup.py script to ensure that we are using an appropriate version of SWIG. Below you'll find the compiler warnings that we need to get rid of. 3. I ran valgrind on all of the unittest files except, test_ssl, test_ssl_win, and alltests, I found some leaks in test_x509, but I suspect that it is the issue is how the tests are written, and not any underlying problem in the toolkit. Below you'll find the valgrind output This is just a cursory ananlysis of the beta release. Cheers, Matt Rodriguez Here is the valgrind output. OK ==8740== ==8740== Syscall param write(buf) points to uninitialised byte(s) ==8740== at 0x1BAFE543: __write_nocancel (in /lib/tls/libc-2.3.5.so) ==8740== by 0x1BAAF1BE: _IO_file_write@@GLIBC_2.1 (in /lib/tls/libc-2.3.5.so) ==8740== by 0x1BAADBC4: new_do_write (in /lib/tls/libc-2.3.5.so) ==8740== by 0x1BAADCDE: _IO_do_write@@GLIBC_2.1 (in /lib/tls/libc-2.3.5.so) ==8740== by 0x1BAAD3E9: _IO_file_close_it@@GLIBC_2.1 (in /lib/tls/libc-2.3.5.so) ==8740== by 0x1BAA394A: fclose@@GLIBC_2.1 (in /lib/tls/libc-2.3.5.so) ==8740== by 0x1BFA4437: RAND_write_file (in /usr/lib/libcrypto.so.0.9.7) ==8740== by 0xDACCBB17: ??? ==8740== Address 0x1C172000 is not stack'd, malloc'd or (recently) free'd ==8740== ==8740== Invalid read of size 4 ==8740== at 0x1B96377F: PyObject_Free (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B95F911: PyDict_Clear (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9AD005: PyImport_Cleanup (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9B7F30: Py_Finalize (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9BE12D: Py_Main (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x80485F9: main (in /usr/bin/python2.4) ==8740== Address 0x1BCC3010 is 0 bytes after a block of size 72 free'd ==8740== at 0x1B9003C3: free (in /usr/lib/valgrind/vgpreload_memcheck.so) ==8740== by 0x1BF51CEC: CRYPTO_free (in /usr/lib/libcrypto.so.0.9.7) ==8740== ==8740== Invalid read of size 4 ==8740== at 0x1B96377F: PyObject_Free (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9AC821: _PyImport_Fini (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9B7F35: Py_Finalize (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9BE12D: Py_Main (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x80485F9: main (in /usr/bin/python2.4) ==8740== Address 0x1BBBA010 is 1392 bytes inside a block of size 1536 free'd ==8740== at 0x1B9003C3: free (in /usr/lib/valgrind/vgpreload_memcheck.so) ==8740== by 0x1B9637A0: PyObject_Free (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B95CF67: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B95CF3E: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9AC83A: _PyImport_Fini (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9B7F35: Py_Finalize (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9BE12D: Py_Main (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x80485F9: main (in /usr/bin/python2.4) ==8740== ==8740== Invalid read of size 4 ==8740== at 0x1B96377F: PyObject_Free (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9517B6: PyInt_Fini (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9B7F84: Py_Finalize (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9BE12D: Py_Main (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x80485F9: main (in /usr/bin/python2.4) ==8740== Address 0x1BBE8010 is not stack'd, malloc'd or (recently) free'd ==8740== ==8740== Invalid read of size 4 ==8740== at 0x1B96377F: PyObject_Free (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B982EE4: _PyUnicodeUCS4_Fini (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9B7F8E: Py_Finalize (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9BE12D: Py_Main (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x80485F9: main (in /usr/bin/python2.4) ==8740== Address 0x1BCCA010 is 944 bytes inside a block of size 965 free'd ==8740== at 0x1B9003C3: free (in /usr/lib/valgrind/vgpreload_memcheck.so) ==8740== by 0x1B9637A0: PyObject_Free (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B966EE6: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B95CF3E: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B93BD9E: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B96F683: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B93BDAC: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B96F683: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B93BDAC: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B96F683: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B95CF3E: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9B51ED: PyInterpreterState_Clear (in /usr/lib/libpython2.4.so.1.0) ==8740== ==8740== Invalid read of size 4 ==8740== at 0x1B96377F: PyObject_Free (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B93097E: PyGrammar_RemoveAccelerators (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9B7F9C: Py_Finalize (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9BE12D: Py_Main (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x80485F9: main (in /usr/bin/python2.4) ==8740== Address 0x1BBEB010 is 904 bytes inside a block of size 1536 free'd ==8740== at 0x1B9003C3: free (in /usr/lib/valgrind/vgpreload_memcheck.so) ==8740== by 0x1B9637A0: PyObject_Free (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B95CF67: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B93BD9E: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B96F683: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B93BDAC: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B95C8C8: (within /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B95CC0A: PyDict_SetItem (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9607B9: _PyModule_Clear (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9ACEDC: PyImport_Cleanup (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9B7F30: Py_Finalize (in /usr/lib/libpython2.4.so.1.0) ==8740== by 0x1B9BE12D: Py_Main (in /usr/lib/libpython2.4.so.1.0) ==8740== ==8740== ERROR SUMMARY: 2951762 errors from 321 contexts (suppressed: 117 from 5) ==8740== malloc/free: in use at exit: 1873288 bytes in 2319 blocks. ==8740== malloc/free: 17970 allocs, 15651 frees, 5371657 bytes allocated. ==8740== For counts of detected errors, rerun with: -v ==8740== searching for pointers to 2319 not-freed blocks. ==8740== checked 2413164 bytes. ==8740== ==8740== ==8740== 559 (44 direct, 515 indirect) bytes in 3 blocks are definitely lost in loss record 17 of 31 ==8740== at 0x1B8FF8A6: malloc (in /usr/lib/valgrind/vgpreload_memcheck.so) ==8740== by 0x1BF514AB: (within /usr/lib/libcrypto.so.0.9.7) ==8740== ==8740== LEAK SUMMARY: ==8740== definitely lost: 44 bytes in 3 blocks. ==8740== indirectly lost: 515 bytes in 10 blocks. ==8740== possibly lost: 0 bytes in 0 blocks. ==8740== still reachable: 1872729 bytes in 2306 blocks. ==8740== suppressed: 0 bytes in 0 blocks. ==8740== Reachable blocks (those to which a pointer was found) are not shown. ==8740== To see them, rerun with: --show-reachable=yes Compiler Warnings: SWIG/_m2crypto_wrap.c: In function ‘rand_pseudo_bytes’: SWIG/_m2crypto_wrap.c:3444: warning: pointer targets in passing argument 1 of ‘PyString_FromStringAndSize’ differ in signedness SWIG/_m2crypto_wrap.c: In function ‘hmac’: SWIG/_m2crypto_wrap.c:3606: warning: pointer targets in passing argument 7 of ‘HMAC’ differ in signedness SWIG/_m2crypto_wrap.c: In function ‘bytes_to_key’: SWIG/_m2crypto_wrap.c:3646: warning: pointer targets in passing argument 1 of ‘PyString_FromStringAndSize’ differ in signedness SWIG/_m2crypto_wrap.c: In function ‘sign_final’: SWIG/_m2crypto_wrap.c:3718: warning: pointer targets in passing argument 1 of ‘PyString_FromStringAndSize’ differ in signedness SWIG/_m2crypto_wrap.c: In function ‘pkey_as_der’: SWIG/_m2crypto_wrap.c:3784: warning: pointer targets in passing argument 1 of ‘PyString_FromStringAndSize’ differ in signedness SWIG/_m2crypto_wrap.c: In function ‘AES_crypt’: SWIG/_m2crypto_wrap.c:3860: warning: pointer targets in passing argument 1 of ‘PyString_FromStringAndSize’ differ in signedness SWIG/_m2crypto_wrap.c: In function ‘dsa_sign_asn1’: SWIG/_m2crypto_wrap.c:4673: warning: pointer targets in passing argument 5 of ‘DSA_sign’ differ in signedness SWIG/_m2crypto_wrap.c: In function ‘x509_name_set_by_nid’: SWIG/_m2crypto_wrap.c:5316: warning: pointer targets in passing argument 4 of ‘X509_NAME_add_entry_by_NID’ differ in signedness SWIG/_m2crypto_wrap.c: In function ‘x509_name_add_entry_by_txt’: SWIG/_m2crypto_wrap.c:5321: warning: pointer targets in passing argument 2 of ‘X509_NAME_add_entry_by_txt’ differ in signedness SWIG/_m2crypto_wrap.c:5321: warning: pointer targets in passing argument 4 of ‘X509_NAME_add_entry_by_txt’ differ in signedness SWIG/_m2crypto_wrap.c: In function ‘util_string_to_hex’: SWIG/_m2crypto_wrap.c:5715: warning: pointer targets in passing argument 1 of ‘PyString_FromStringAndSize’ differ in signedness