0

Although in pypy compatibility list says the M2Crypto is supported, but I got segmentation fault after run less than 100 times in a loop. my code similar as below:

TIMES = 1000

def main():
    csr_b64 = 'MIICpjCCAY4CAQAwYTELMAkGA1UEBhMCVFcxETAPBgNVBAMMCHRlc3QuY29tMQ0wCwYDVQQHDAREYWFuMRAwDgYDVQQKDAd0ZXN0MTIzMQwwCgYDVQQIDANUUEUxEDAOBgNVBAsMB3Rlc3QxMjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9oICQhxQXBUEoPZZIvtlh5j+D7UeczK7MeVRXAlvw1s+ByhnFZsay8EtsV5DmhSl2w3y/qAIlZGdhqsCsNcK1RrE/eMXrrQ+pdRDZdrktqZUygniRD7kDRZRmqgh8+4eEz8sw1I52V/oW98M3yQBKN1gTCYO1bJiWG7PcM4b0fNqEkZQg6lwNyZo710dpu37kOHm1G0FFKtqTCmyYeuhRJVru/QWpvRaBnPZcxHlSfSv+ye0DKnJ0tQkBjL4PWsVOlPoJNp9gZJ0k9Xtfoj75ypa42LAp4HE61hpZw+TIjHW97tVxhrgL4LvjhPXYntGq0TrIold2/TfJ7reSf13BAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEARNeF8Kkn9pZC6pNuEnYfrtoh2HUJB9VX6nuTWnvJDSh9DG2we++Iaq6OQIVl5MBoamm4xdWYKE8UK9MZ5JvXGcXMrOoI4xAjvsdxMylFQ/bH3Fbv6DA4NOPsQidTEpEPLqslPXlTwV3dbL/+hBzjVtDsg/BeAOO4be2X9DdM+Du0tycROGfBVbObNW/+BpHhnyyr0qs6/wkdIE6ppjrCiv7HM1pZe/l8Po9Ej5z368y6tdL+4PCrVc/AnWiyLtp9QW6krqn/0vgReO7dbzrMB79FUBV1K9XxlWOZDpI2UcW8biOsrUJC3AQZwR0KIyi+YsVmoMHSxY2pfaRMjPT6kQ=='
#     csr_b64 = 'abc'

    for i in xrange(TIMES):
        csr = convert_csr_b64_to_csr(csr_b64)
        domain_name = csr.get_subject().CN
        print("%s: domain_name: %s" % (i, domain_name))

    import time
    time.sleep(10)

def convert_csr_b64_to_csr(csr_b64):
    from M2Crypto import X509
    import textwrap
    csr_pem = textwrap.fill(csr_b64, 64)
    csr_pem = ('-----BEGIN CERTIFICATE REQUEST-----\n' +
               csr_pem +
               '\n-----END CERTIFICATE REQUEST-----')
    csr = X509.load_request_string(csr_pem, X509.FORMAT_PEM)
    return csr

if __name__ == "__main__":
    main()

environment tried:

  • Mac OS X, pypy:2.4.0, SWIG:3.0.2
  • Centos 6, pypy:2.4.0, SWIG:1.3.40
  • M2Crypto==0.22.3

Thanks for any advise :)

Jim Horng
  • 1,587
  • 1
  • 13
  • 23

0 Answers0