@@ -5787,60 +5787,52 @@ sslmodule_add_option(PyObject *m, const char *name, uint64_t value)
5787
5787
static int
5788
5788
sslmodule_init_constants (PyObject * m )
5789
5789
{
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 );
5807
5809
/* 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 );
5812
5813
/* 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 );
5819
5817
/* 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 );
5832
5825
5833
5826
#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 );
5836
5828
#endif
5837
5829
5838
5830
/* Alert Descriptions from ssl.h */
5839
5831
/* note RESERVED constants no longer intended for use have been removed */
5840
5832
/* http://www.iana.org/assignments/tls-parameters/tls-parameters.xml#tls-parameters-6 */
5841
5833
5842
5834
#define ADD_AD_CONSTANT (s ) \
5843
- PyModule_AddIntConstant(m, "ALERT_DESCRIPTION_"#s, \
5835
+ ADD_INT_CONST( "ALERT_DESCRIPTION_"#s, \
5844
5836
SSL_AD_##s)
5845
5837
5846
5838
ADD_AD_CONSTANT (CLOSE_NOTIFY );
@@ -5888,23 +5880,15 @@ sslmodule_init_constants(PyObject *m)
5888
5880
5889
5881
/* protocol versions */
5890
5882
#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 );
5893
5884
#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 );
5908
5892
5909
5893
#define ADD_OPTION (NAME , VALUE ) if (sslmodule_add_option(m, NAME, (VALUE)) < 0) return -1
5910
5894
@@ -5949,50 +5933,52 @@ sslmodule_init_constants(PyObject *m)
5949
5933
ADD_OPTION ("OP_ENABLE_KTLS" , SSL_OP_ENABLE_KTLS );
5950
5934
#endif
5951
5935
5936
+ #undef ADD_OPTION
5937
+
5952
5938
#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 );
5955
5941
#endif
5956
5942
#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 );
5959
5945
#endif
5960
5946
#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 );
5963
5949
#endif
5964
5950
#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 );
5967
5953
#endif
5968
5954
#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 );
5971
5957
#endif
5972
5958
#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 );
5975
5961
#endif
5976
5962
5977
5963
/* 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 );
5980
5966
5981
5967
/* 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 );
5991
5975
5992
5976
#define addbool (m , key , value ) \
5993
5977
do { \
5994
5978
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
+ } \
5996
5982
} while (0)
5997
5983
5998
5984
addbool (m , "HAS_SNI" , 1 );
@@ -6033,6 +6019,9 @@ sslmodule_init_constants(PyObject *m)
6033
6019
addbool (m , "HAS_TLSv1_3" , 0 );
6034
6020
#endif
6035
6021
6022
+ #undef addbool
6023
+ #undef ADD_INT_CONST
6024
+
6036
6025
return 0 ;
6037
6026
}
6038
6027
0 commit comments