@@ -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