@@ -5787,51 +5787,58 @@ 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 );
5790+ if (PyModule_AddStringConstant (m , "_DEFAULT_CIPHERS" ,
5791+ PY_SSL_DEFAULT_CIPHER_STRING ) < 0 ) {
5792+ return -1 ;
5793+ }
5794+
5795+ #define _PyModule_ADD_INT_CONST (module , name , value ) \
5796+ if (PyModule_AddIntConstant(module, name, value) < 0) { \
5797+ return -1; \
5798+ }
57925799
5793- PyModule_AddIntConstant (m , "SSL_ERROR_ZERO_RETURN" ,
5800+ _PyModule_ADD_INT_CONST (m , "SSL_ERROR_ZERO_RETURN" ,
57945801 PY_SSL_ERROR_ZERO_RETURN );
5795- PyModule_AddIntConstant (m , "SSL_ERROR_WANT_READ" ,
5802+ _PyModule_ADD_INT_CONST (m , "SSL_ERROR_WANT_READ" ,
57965803 PY_SSL_ERROR_WANT_READ );
5797- PyModule_AddIntConstant (m , "SSL_ERROR_WANT_WRITE" ,
5804+ _PyModule_ADD_INT_CONST (m , "SSL_ERROR_WANT_WRITE" ,
57985805 PY_SSL_ERROR_WANT_WRITE );
5799- PyModule_AddIntConstant (m , "SSL_ERROR_WANT_X509_LOOKUP" ,
5806+ _PyModule_ADD_INT_CONST (m , "SSL_ERROR_WANT_X509_LOOKUP" ,
58005807 PY_SSL_ERROR_WANT_X509_LOOKUP );
5801- PyModule_AddIntConstant (m , "SSL_ERROR_SYSCALL" ,
5808+ _PyModule_ADD_INT_CONST (m , "SSL_ERROR_SYSCALL" ,
58025809 PY_SSL_ERROR_SYSCALL );
5803- PyModule_AddIntConstant (m , "SSL_ERROR_SSL" ,
5810+ _PyModule_ADD_INT_CONST (m , "SSL_ERROR_SSL" ,
58045811 PY_SSL_ERROR_SSL );
5805- PyModule_AddIntConstant (m , "SSL_ERROR_WANT_CONNECT" ,
5812+ _PyModule_ADD_INT_CONST (m , "SSL_ERROR_WANT_CONNECT" ,
58065813 PY_SSL_ERROR_WANT_CONNECT );
58075814 /* non ssl.h errorcodes */
5808- PyModule_AddIntConstant (m , "SSL_ERROR_EOF" ,
5815+ _PyModule_ADD_INT_CONST (m , "SSL_ERROR_EOF" ,
58095816 PY_SSL_ERROR_EOF );
5810- PyModule_AddIntConstant (m , "SSL_ERROR_INVALID_ERROR_CODE" ,
5817+ _PyModule_ADD_INT_CONST (m , "SSL_ERROR_INVALID_ERROR_CODE" ,
58115818 PY_SSL_ERROR_INVALID_ERROR_CODE );
58125819 /* cert requirements */
5813- PyModule_AddIntConstant (m , "CERT_NONE" ,
5820+ _PyModule_ADD_INT_CONST (m , "CERT_NONE" ,
58145821 PY_SSL_CERT_NONE );
5815- PyModule_AddIntConstant (m , "CERT_OPTIONAL" ,
5822+ _PyModule_ADD_INT_CONST (m , "CERT_OPTIONAL" ,
58165823 PY_SSL_CERT_OPTIONAL );
5817- PyModule_AddIntConstant (m , "CERT_REQUIRED" ,
5824+ _PyModule_ADD_INT_CONST (m , "CERT_REQUIRED" ,
58185825 PY_SSL_CERT_REQUIRED );
58195826 /* CRL verification for verification_flags */
5820- PyModule_AddIntConstant (m , "VERIFY_DEFAULT" ,
5827+ _PyModule_ADD_INT_CONST (m , "VERIFY_DEFAULT" ,
58215828 0 );
5822- PyModule_AddIntConstant (m , "VERIFY_CRL_CHECK_LEAF" ,
5829+ _PyModule_ADD_INT_CONST (m , "VERIFY_CRL_CHECK_LEAF" ,
58235830 X509_V_FLAG_CRL_CHECK );
5824- PyModule_AddIntConstant (m , "VERIFY_CRL_CHECK_CHAIN" ,
5831+ _PyModule_ADD_INT_CONST (m , "VERIFY_CRL_CHECK_CHAIN" ,
58255832 X509_V_FLAG_CRL_CHECK |X509_V_FLAG_CRL_CHECK_ALL );
5826- PyModule_AddIntConstant (m , "VERIFY_X509_STRICT" ,
5833+ _PyModule_ADD_INT_CONST (m , "VERIFY_X509_STRICT" ,
58275834 X509_V_FLAG_X509_STRICT );
5828- PyModule_AddIntConstant (m , "VERIFY_ALLOW_PROXY_CERTS" ,
5835+ _PyModule_ADD_INT_CONST (m , "VERIFY_ALLOW_PROXY_CERTS" ,
58295836 X509_V_FLAG_ALLOW_PROXY_CERTS );
5830- PyModule_AddIntConstant (m , "VERIFY_X509_TRUSTED_FIRST" ,
5837+ _PyModule_ADD_INT_CONST (m , "VERIFY_X509_TRUSTED_FIRST" ,
58315838 X509_V_FLAG_TRUSTED_FIRST );
58325839
58335840#ifdef X509_V_FLAG_PARTIAL_CHAIN
5834- PyModule_AddIntConstant (m , "VERIFY_X509_PARTIAL_CHAIN" ,
5841+ _PyModule_ADD_INT_CONST (m , "VERIFY_X509_PARTIAL_CHAIN" ,
58355842 X509_V_FLAG_PARTIAL_CHAIN );
58365843#endif
58375844
@@ -5840,7 +5847,7 @@ sslmodule_init_constants(PyObject *m)
58405847 /* http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-6 */
58415848
58425849#define ADD_AD_CONSTANT (s ) \
5843- PyModule_AddIntConstant (m, "ALERT_DESCRIPTION_"#s, \
5850+ _PyModule_ADD_INT_CONST (m, "ALERT_DESCRIPTION_"#s, \
58445851 SSL_AD_##s)
58455852
58465853 ADD_AD_CONSTANT (CLOSE_NOTIFY );
@@ -5888,22 +5895,22 @@ sslmodule_init_constants(PyObject *m)
58885895
58895896 /* protocol versions */
58905897#ifndef OPENSSL_NO_SSL3
5891- PyModule_AddIntConstant (m , "PROTOCOL_SSLv3" ,
5898+ _PyModule_ADD_INT_CONST (m , "PROTOCOL_SSLv3" ,
58925899 PY_SSL_VERSION_SSL3 );
58935900#endif
5894- PyModule_AddIntConstant (m , "PROTOCOL_SSLv23" ,
5901+ _PyModule_ADD_INT_CONST (m , "PROTOCOL_SSLv23" ,
58955902 PY_SSL_VERSION_TLS );
5896- PyModule_AddIntConstant (m , "PROTOCOL_TLS" ,
5903+ _PyModule_ADD_INT_CONST (m , "PROTOCOL_TLS" ,
58975904 PY_SSL_VERSION_TLS );
5898- PyModule_AddIntConstant (m , "PROTOCOL_TLS_CLIENT" ,
5905+ _PyModule_ADD_INT_CONST (m , "PROTOCOL_TLS_CLIENT" ,
58995906 PY_SSL_VERSION_TLS_CLIENT );
5900- PyModule_AddIntConstant (m , "PROTOCOL_TLS_SERVER" ,
5907+ _PyModule_ADD_INT_CONST (m , "PROTOCOL_TLS_SERVER" ,
59015908 PY_SSL_VERSION_TLS_SERVER );
5902- PyModule_AddIntConstant (m , "PROTOCOL_TLSv1" ,
5909+ _PyModule_ADD_INT_CONST (m , "PROTOCOL_TLSv1" ,
59035910 PY_SSL_VERSION_TLS1 );
5904- PyModule_AddIntConstant (m , "PROTOCOL_TLSv1_1" ,
5911+ _PyModule_ADD_INT_CONST (m , "PROTOCOL_TLSv1_1" ,
59055912 PY_SSL_VERSION_TLS1_1 );
5906- PyModule_AddIntConstant (m , "PROTOCOL_TLSv1_2" ,
5913+ _PyModule_ADD_INT_CONST (m , "PROTOCOL_TLSv1_2" ,
59075914 PY_SSL_VERSION_TLS1_2 );
59085915
59095916#define ADD_OPTION (NAME , VALUE ) if (sslmodule_add_option(m, NAME, (VALUE)) < 0) return -1
@@ -5949,50 +5956,54 @@ sslmodule_init_constants(PyObject *m)
59495956 ADD_OPTION ("OP_ENABLE_KTLS" , SSL_OP_ENABLE_KTLS );
59505957#endif
59515958
5959+ #undef ADD_OPTION
5960+
59525961#ifdef X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT
5953- PyModule_AddIntConstant (m , "HOSTFLAG_ALWAYS_CHECK_SUBJECT" ,
5962+ _PyModule_ADD_INT_CONST (m , "HOSTFLAG_ALWAYS_CHECK_SUBJECT" ,
59545963 X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT );
59555964#endif
59565965#ifdef X509_CHECK_FLAG_NEVER_CHECK_SUBJECT
5957- PyModule_AddIntConstant (m , "HOSTFLAG_NEVER_CHECK_SUBJECT" ,
5966+ _PyModule_ADD_INT_CONST (m , "HOSTFLAG_NEVER_CHECK_SUBJECT" ,
59585967 X509_CHECK_FLAG_NEVER_CHECK_SUBJECT );
59595968#endif
59605969#ifdef X509_CHECK_FLAG_NO_WILDCARDS
5961- PyModule_AddIntConstant (m , "HOSTFLAG_NO_WILDCARDS" ,
5970+ _PyModule_ADD_INT_CONST (m , "HOSTFLAG_NO_WILDCARDS" ,
59625971 X509_CHECK_FLAG_NO_WILDCARDS );
59635972#endif
59645973#ifdef X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS
5965- PyModule_AddIntConstant (m , "HOSTFLAG_NO_PARTIAL_WILDCARDS" ,
5974+ _PyModule_ADD_INT_CONST (m , "HOSTFLAG_NO_PARTIAL_WILDCARDS" ,
59665975 X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS );
59675976#endif
59685977#ifdef X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS
5969- PyModule_AddIntConstant (m , "HOSTFLAG_MULTI_LABEL_WILDCARDS" ,
5978+ _PyModule_ADD_INT_CONST (m , "HOSTFLAG_MULTI_LABEL_WILDCARDS" ,
59705979 X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS );
59715980#endif
59725981#ifdef X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS
5973- PyModule_AddIntConstant (m , "HOSTFLAG_SINGLE_LABEL_SUBDOMAINS" ,
5982+ _PyModule_ADD_INT_CONST (m , "HOSTFLAG_SINGLE_LABEL_SUBDOMAINS" ,
59745983 X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS );
59755984#endif
59765985
59775986 /* file types */
5978- PyModule_AddIntConstant (m , "ENCODING_PEM" , PY_SSL_ENCODING_PEM );
5979- PyModule_AddIntConstant (m , "ENCODING_DER" , PY_SSL_ENCODING_DER );
5987+ _PyModule_ADD_INT_CONST (m , "ENCODING_PEM" , PY_SSL_ENCODING_PEM );
5988+ _PyModule_ADD_INT_CONST (m , "ENCODING_DER" , PY_SSL_ENCODING_DER );
59805989
59815990 /* protocol versions */
5982- PyModule_AddIntConstant (m , "PROTO_MINIMUM_SUPPORTED" ,
5991+ _PyModule_ADD_INT_CONST (m , "PROTO_MINIMUM_SUPPORTED" ,
59835992 PY_PROTO_MINIMUM_SUPPORTED );
5984- PyModule_AddIntConstant (m , "PROTO_MAXIMUM_SUPPORTED" ,
5993+ _PyModule_ADD_INT_CONST (m , "PROTO_MAXIMUM_SUPPORTED" ,
59855994 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 );
5995+ _PyModule_ADD_INT_CONST (m , "PROTO_SSLv3" , PY_PROTO_SSLv3 );
5996+ _PyModule_ADD_INT_CONST (m , "PROTO_TLSv1" , PY_PROTO_TLSv1 );
5997+ _PyModule_ADD_INT_CONST (m , "PROTO_TLSv1_1" , PY_PROTO_TLSv1_1 );
5998+ _PyModule_ADD_INT_CONST (m , "PROTO_TLSv1_2" , PY_PROTO_TLSv1_2 );
5999+ _PyModule_ADD_INT_CONST (m , "PROTO_TLSv1_3" , PY_PROTO_TLSv1_3 );
59916000
59926001#define addbool (m , key , value ) \
59936002 do { \
59946003 PyObject *bool_obj = (value) ? Py_True : Py_False; \
5995- PyModule_AddObjectRef((m), (key), bool_obj); \
6004+ if (PyModule_AddObjectRef((m), (key), bool_obj) < 0) { \
6005+ return -1; \
6006+ } \
59966007 } while (0)
59976008
59986009 addbool (m , "HAS_SNI" , 1 );
@@ -6033,6 +6044,9 @@ sslmodule_init_constants(PyObject *m)
60336044 addbool (m , "HAS_TLSv1_3" , 0 );
60346045#endif
60356046
6047+ #undef addbool
6048+ #undef _PyModule_ADD_INT_CONST
6049+
60366050 return 0 ;
60376051}
60386052
0 commit comments