@@ -5787,60 +5787,52 @@ sslmodule_add_option(PyObject *m, const char *name, uint64_t value)
57875787static  int 
57885788sslmodule_init_constants (PyObject  * m )
57895789{
5790-     PyModule_AddStringConstant (m , "_DEFAULT_CIPHERS" ,
5791-                                PY_SSL_DEFAULT_CIPHER_STRING );
5792- 
5793-     PyModule_AddIntConstant (m , "SSL_ERROR_ZERO_RETURN" ,
5794-                             PY_SSL_ERROR_ZERO_RETURN );
5795-     PyModule_AddIntConstant (m , "SSL_ERROR_WANT_READ" ,
5796-                             PY_SSL_ERROR_WANT_READ );
5797-     PyModule_AddIntConstant (m , "SSL_ERROR_WANT_WRITE" ,
5798-                             PY_SSL_ERROR_WANT_WRITE );
5799-     PyModule_AddIntConstant (m , "SSL_ERROR_WANT_X509_LOOKUP" ,
5800-                             PY_SSL_ERROR_WANT_X509_LOOKUP );
5801-     PyModule_AddIntConstant (m , "SSL_ERROR_SYSCALL" ,
5802-                             PY_SSL_ERROR_SYSCALL );
5803-     PyModule_AddIntConstant (m , "SSL_ERROR_SSL" ,
5804-                             PY_SSL_ERROR_SSL );
5805-     PyModule_AddIntConstant (m , "SSL_ERROR_WANT_CONNECT" ,
5806-                             PY_SSL_ERROR_WANT_CONNECT );
5790+     if  (PyModule_AddStringConstant (m , "_DEFAULT_CIPHERS" ,
5791+                                    PY_SSL_DEFAULT_CIPHER_STRING ) <  0 )
5792+     {
5793+         return  -1 ;
5794+     }
5795+ 
5796+ #define  ADD_INT_CONST (NAME , VALUE ) do {                 \
5797+     if (PyModule_AddIntConstant(m, NAME, VALUE) < 0) {  \
5798+         return -1;                                      \
5799+     }                                                   \
5800+ } while (0)
5801+ 
5802+     ADD_INT_CONST ("SSL_ERROR_ZERO_RETURN" , PY_SSL_ERROR_ZERO_RETURN );
5803+     ADD_INT_CONST ("SSL_ERROR_WANT_READ" , PY_SSL_ERROR_WANT_READ );
5804+     ADD_INT_CONST ("SSL_ERROR_WANT_WRITE" , PY_SSL_ERROR_WANT_WRITE );
5805+     ADD_INT_CONST ("SSL_ERROR_WANT_X509_LOOKUP" , PY_SSL_ERROR_WANT_X509_LOOKUP );
5806+     ADD_INT_CONST ("SSL_ERROR_SYSCALL" , PY_SSL_ERROR_SYSCALL );
5807+     ADD_INT_CONST ("SSL_ERROR_SSL" , PY_SSL_ERROR_SSL );
5808+     ADD_INT_CONST ("SSL_ERROR_WANT_CONNECT" , PY_SSL_ERROR_WANT_CONNECT );
58075809    /* non ssl.h errorcodes */ 
5808-     PyModule_AddIntConstant (m , "SSL_ERROR_EOF" ,
5809-                             PY_SSL_ERROR_EOF );
5810-     PyModule_AddIntConstant (m , "SSL_ERROR_INVALID_ERROR_CODE" ,
5811-                             PY_SSL_ERROR_INVALID_ERROR_CODE );
5810+     ADD_INT_CONST ("SSL_ERROR_EOF" , PY_SSL_ERROR_EOF );
5811+     ADD_INT_CONST ("SSL_ERROR_INVALID_ERROR_CODE" ,
5812+                   PY_SSL_ERROR_INVALID_ERROR_CODE );
58125813    /* cert requirements */ 
5813-     PyModule_AddIntConstant (m , "CERT_NONE" ,
5814-                             PY_SSL_CERT_NONE );
5815-     PyModule_AddIntConstant (m , "CERT_OPTIONAL" ,
5816-                             PY_SSL_CERT_OPTIONAL );
5817-     PyModule_AddIntConstant (m , "CERT_REQUIRED" ,
5818-                             PY_SSL_CERT_REQUIRED );
5814+     ADD_INT_CONST ("CERT_NONE" , PY_SSL_CERT_NONE );
5815+     ADD_INT_CONST ("CERT_OPTIONAL" , PY_SSL_CERT_OPTIONAL );
5816+     ADD_INT_CONST ("CERT_REQUIRED" , PY_SSL_CERT_REQUIRED );
58195817    /* CRL verification for verification_flags */ 
5820-     PyModule_AddIntConstant (m , "VERIFY_DEFAULT" ,
5821-                             0 );
5822-     PyModule_AddIntConstant (m , "VERIFY_CRL_CHECK_LEAF" ,
5823-                             X509_V_FLAG_CRL_CHECK );
5824-     PyModule_AddIntConstant (m , "VERIFY_CRL_CHECK_CHAIN" ,
5825-                             X509_V_FLAG_CRL_CHECK |X509_V_FLAG_CRL_CHECK_ALL );
5826-     PyModule_AddIntConstant (m , "VERIFY_X509_STRICT" ,
5827-                             X509_V_FLAG_X509_STRICT );
5828-     PyModule_AddIntConstant (m , "VERIFY_ALLOW_PROXY_CERTS" ,
5829-                             X509_V_FLAG_ALLOW_PROXY_CERTS );
5830-     PyModule_AddIntConstant (m , "VERIFY_X509_TRUSTED_FIRST" ,
5831-                             X509_V_FLAG_TRUSTED_FIRST );
5818+     ADD_INT_CONST ("VERIFY_DEFAULT" , 0 );
5819+     ADD_INT_CONST ("VERIFY_CRL_CHECK_LEAF" , X509_V_FLAG_CRL_CHECK );
5820+     ADD_INT_CONST ("VERIFY_CRL_CHECK_CHAIN" ,
5821+                   X509_V_FLAG_CRL_CHECK |X509_V_FLAG_CRL_CHECK_ALL );
5822+     ADD_INT_CONST ("VERIFY_X509_STRICT" , X509_V_FLAG_X509_STRICT );
5823+     ADD_INT_CONST ("VERIFY_ALLOW_PROXY_CERTS" , X509_V_FLAG_ALLOW_PROXY_CERTS );
5824+     ADD_INT_CONST ("VERIFY_X509_TRUSTED_FIRST" , X509_V_FLAG_TRUSTED_FIRST );
58325825
58335826#ifdef  X509_V_FLAG_PARTIAL_CHAIN 
5834-     PyModule_AddIntConstant (m , "VERIFY_X509_PARTIAL_CHAIN" ,
5835-                             X509_V_FLAG_PARTIAL_CHAIN );
5827+     ADD_INT_CONST ("VERIFY_X509_PARTIAL_CHAIN" , X509_V_FLAG_PARTIAL_CHAIN );
58365828#endif 
58375829
58385830    /* Alert Descriptions from ssl.h */ 
58395831    /* note RESERVED constants no longer intended for use have been removed */ 
58405832    /* http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-6 */ 
58415833
58425834#define  ADD_AD_CONSTANT (s ) \
5843-     PyModule_AddIntConstant(m,  "ALERT_DESCRIPTION_"#s, \
5835+     ADD_INT_CONST( "ALERT_DESCRIPTION_"#s, \
58445836                            SSL_AD_##s)
58455837
58465838    ADD_AD_CONSTANT (CLOSE_NOTIFY );
@@ -5888,23 +5880,15 @@ sslmodule_init_constants(PyObject *m)
58885880
58895881    /* protocol versions */ 
58905882#ifndef  OPENSSL_NO_SSL3 
5891-     PyModule_AddIntConstant (m , "PROTOCOL_SSLv3" ,
5892-                             PY_SSL_VERSION_SSL3 );
5883+     ADD_INT_CONST ("PROTOCOL_SSLv3" , PY_SSL_VERSION_SSL3 );
58935884#endif 
5894-     PyModule_AddIntConstant (m , "PROTOCOL_SSLv23" ,
5895-                             PY_SSL_VERSION_TLS );
5896-     PyModule_AddIntConstant (m , "PROTOCOL_TLS" ,
5897-                             PY_SSL_VERSION_TLS );
5898-     PyModule_AddIntConstant (m , "PROTOCOL_TLS_CLIENT" ,
5899-                             PY_SSL_VERSION_TLS_CLIENT );
5900-     PyModule_AddIntConstant (m , "PROTOCOL_TLS_SERVER" ,
5901-                             PY_SSL_VERSION_TLS_SERVER );
5902-     PyModule_AddIntConstant (m , "PROTOCOL_TLSv1" ,
5903-                             PY_SSL_VERSION_TLS1 );
5904-     PyModule_AddIntConstant (m , "PROTOCOL_TLSv1_1" ,
5905-                             PY_SSL_VERSION_TLS1_1 );
5906-     PyModule_AddIntConstant (m , "PROTOCOL_TLSv1_2" ,
5907-                             PY_SSL_VERSION_TLS1_2 );
5885+     ADD_INT_CONST ("PROTOCOL_SSLv23" , PY_SSL_VERSION_TLS );
5886+     ADD_INT_CONST ("PROTOCOL_TLS" , PY_SSL_VERSION_TLS );
5887+     ADD_INT_CONST ("PROTOCOL_TLS_CLIENT" , PY_SSL_VERSION_TLS_CLIENT );
5888+     ADD_INT_CONST ("PROTOCOL_TLS_SERVER" , PY_SSL_VERSION_TLS_SERVER );
5889+     ADD_INT_CONST ("PROTOCOL_TLSv1" , PY_SSL_VERSION_TLS1 );
5890+     ADD_INT_CONST ("PROTOCOL_TLSv1_1" , PY_SSL_VERSION_TLS1_1 );
5891+     ADD_INT_CONST ("PROTOCOL_TLSv1_2" , PY_SSL_VERSION_TLS1_2 );
59085892
59095893#define  ADD_OPTION (NAME , VALUE ) if (sslmodule_add_option(m, NAME, (VALUE)) < 0) return -1
59105894
@@ -5949,50 +5933,52 @@ sslmodule_init_constants(PyObject *m)
59495933    ADD_OPTION ("OP_ENABLE_KTLS" , SSL_OP_ENABLE_KTLS );
59505934#endif 
59515935
5936+ #undef  ADD_OPTION
5937+ 
59525938#ifdef  X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT 
5953-     PyModule_AddIntConstant ( m ,  "HOSTFLAG_ALWAYS_CHECK_SUBJECT" ,
5954-                              X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT );
5939+     ADD_INT_CONST ( "HOSTFLAG_ALWAYS_CHECK_SUBJECT" ,
5940+                   X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT );
59555941#endif 
59565942#ifdef  X509_CHECK_FLAG_NEVER_CHECK_SUBJECT 
5957-     PyModule_AddIntConstant ( m ,  "HOSTFLAG_NEVER_CHECK_SUBJECT" ,
5958-                              X509_CHECK_FLAG_NEVER_CHECK_SUBJECT );
5943+     ADD_INT_CONST ( "HOSTFLAG_NEVER_CHECK_SUBJECT" ,
5944+                   X509_CHECK_FLAG_NEVER_CHECK_SUBJECT );
59595945#endif 
59605946#ifdef  X509_CHECK_FLAG_NO_WILDCARDS 
5961-     PyModule_AddIntConstant ( m ,  "HOSTFLAG_NO_WILDCARDS" ,
5962-                              X509_CHECK_FLAG_NO_WILDCARDS );
5947+     ADD_INT_CONST ( "HOSTFLAG_NO_WILDCARDS" ,
5948+                   X509_CHECK_FLAG_NO_WILDCARDS );
59635949#endif 
59645950#ifdef  X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 
5965-     PyModule_AddIntConstant ( m ,  "HOSTFLAG_NO_PARTIAL_WILDCARDS" ,
5966-                              X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS );
5951+     ADD_INT_CONST ( "HOSTFLAG_NO_PARTIAL_WILDCARDS" ,
5952+                   X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS );
59675953#endif 
59685954#ifdef  X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 
5969-     PyModule_AddIntConstant ( m ,  "HOSTFLAG_MULTI_LABEL_WILDCARDS" ,
5970-                              X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS );
5955+     ADD_INT_CONST ( "HOSTFLAG_MULTI_LABEL_WILDCARDS" ,
5956+                   X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS );
59715957#endif 
59725958#ifdef  X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 
5973-     PyModule_AddIntConstant ( m ,  "HOSTFLAG_SINGLE_LABEL_SUBDOMAINS" ,
5974-                              X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS );
5959+     ADD_INT_CONST ( "HOSTFLAG_SINGLE_LABEL_SUBDOMAINS" ,
5960+                   X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS );
59755961#endif 
59765962
59775963    /* file types */ 
5978-     PyModule_AddIntConstant ( m ,  "ENCODING_PEM" , PY_SSL_ENCODING_PEM );
5979-     PyModule_AddIntConstant ( m ,  "ENCODING_DER" , PY_SSL_ENCODING_DER );
5964+     ADD_INT_CONST ( "ENCODING_PEM" , PY_SSL_ENCODING_PEM );
5965+     ADD_INT_CONST ( "ENCODING_DER" , PY_SSL_ENCODING_DER );
59805966
59815967    /* protocol versions */ 
5982-     PyModule_AddIntConstant (m , "PROTO_MINIMUM_SUPPORTED" ,
5983-                             PY_PROTO_MINIMUM_SUPPORTED );
5984-     PyModule_AddIntConstant (m , "PROTO_MAXIMUM_SUPPORTED" ,
5985-                             PY_PROTO_MAXIMUM_SUPPORTED );
5986-     PyModule_AddIntConstant (m , "PROTO_SSLv3" , PY_PROTO_SSLv3 );
5987-     PyModule_AddIntConstant (m , "PROTO_TLSv1" , PY_PROTO_TLSv1 );
5988-     PyModule_AddIntConstant (m , "PROTO_TLSv1_1" , PY_PROTO_TLSv1_1 );
5989-     PyModule_AddIntConstant (m , "PROTO_TLSv1_2" , PY_PROTO_TLSv1_2 );
5990-     PyModule_AddIntConstant (m , "PROTO_TLSv1_3" , PY_PROTO_TLSv1_3 );
5968+     ADD_INT_CONST ("PROTO_MINIMUM_SUPPORTED" , PY_PROTO_MINIMUM_SUPPORTED );
5969+     ADD_INT_CONST ("PROTO_MAXIMUM_SUPPORTED" , PY_PROTO_MAXIMUM_SUPPORTED );
5970+     ADD_INT_CONST ("PROTO_SSLv3" , PY_PROTO_SSLv3 );
5971+     ADD_INT_CONST ("PROTO_TLSv1" , PY_PROTO_TLSv1 );
5972+     ADD_INT_CONST ("PROTO_TLSv1_1" , PY_PROTO_TLSv1_1 );
5973+     ADD_INT_CONST ("PROTO_TLSv1_2" , PY_PROTO_TLSv1_2 );
5974+     ADD_INT_CONST ("PROTO_TLSv1_3" , PY_PROTO_TLSv1_3 );
59915975
59925976#define  addbool (m , key , value ) \
59935977    do { \
59945978        PyObject *bool_obj = (value) ? Py_True : Py_False; \
5995-         PyModule_AddObjectRef((m), (key), bool_obj); \
5979+         if (PyModule_AddObjectRef((m), (key), bool_obj) < 0) { \
5980+             return -1; \
5981+         } \
59965982    } while (0)
59975983
59985984    addbool (m , "HAS_SNI" , 1 );
@@ -6033,6 +6019,9 @@ sslmodule_init_constants(PyObject *m)
60336019    addbool (m , "HAS_TLSv1_3" , 0 );
60346020#endif 
60356021
6022+ #undef  addbool
6023+ #undef  ADD_INT_CONST
6024+ 
60366025    return  0 ;
60376026}
60386027
0 commit comments