@@ -55,7 +55,7 @@ static const rb_data_type_t ossl_x509ext_type = {
5555 {
5656 0 , ossl_x509ext_free ,
5757 },
58- 0 , 0 , RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED ,
58+ 0 , 0 , RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE ,
5959};
6060
6161/*
@@ -108,7 +108,7 @@ static const rb_data_type_t ossl_x509extfactory_type = {
108108 {
109109 0 , ossl_x509extfactory_free ,
110110 },
111- 0 , 0 , RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED ,
111+ 0 , 0 , RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE ,
112112};
113113
114114static VALUE
@@ -128,6 +128,7 @@ ossl_x509extfactory_set_issuer_cert(VALUE self, VALUE cert)
128128{
129129 X509V3_CTX * ctx ;
130130
131+ rb_check_frozen (self );
131132 GetX509ExtFactory (self , ctx );
132133 rb_iv_set (self , "@issuer_certificate" , cert );
133134 ctx -> issuer_cert = GetX509CertPtr (cert ); /* NO DUP NEEDED */
@@ -140,6 +141,7 @@ ossl_x509extfactory_set_subject_cert(VALUE self, VALUE cert)
140141{
141142 X509V3_CTX * ctx ;
142143
144+ rb_check_frozen (self );
143145 GetX509ExtFactory (self , ctx );
144146 rb_iv_set (self , "@subject_certificate" , cert );
145147 ctx -> subject_cert = GetX509CertPtr (cert ); /* NO DUP NEEDED */
@@ -152,6 +154,7 @@ ossl_x509extfactory_set_subject_req(VALUE self, VALUE req)
152154{
153155 X509V3_CTX * ctx ;
154156
157+ rb_check_frozen (self );
155158 GetX509ExtFactory (self , ctx );
156159 rb_iv_set (self , "@subject_request" , req );
157160 ctx -> subject_req = GetX509ReqPtr (req ); /* NO DUP NEEDED */
@@ -164,6 +167,7 @@ ossl_x509extfactory_set_crl(VALUE self, VALUE crl)
164167{
165168 X509V3_CTX * ctx ;
166169
170+ rb_check_frozen (self );
167171 GetX509ExtFactory (self , ctx );
168172 rb_iv_set (self , "@crl" , crl );
169173 ctx -> crl = GetX509CRLPtr (crl ); /* NO DUP NEEDED */
@@ -181,6 +185,7 @@ ossl_x509extfactory_initialize(int argc, VALUE *argv, VALUE self)
181185
182186 rb_scan_args (argc , argv , "04" ,
183187 & issuer_cert , & subject_cert , & subject_req , & crl );
188+ rb_check_frozen (self );
184189 if (!NIL_P (issuer_cert ))
185190 ossl_x509extfactory_set_issuer_cert (self , issuer_cert );
186191 if (!NIL_P (subject_cert ))
@@ -281,6 +286,7 @@ ossl_x509ext_initialize(int argc, VALUE *argv, VALUE self)
281286 const unsigned char * p ;
282287 X509_EXTENSION * ext , * x ;
283288
289+ rb_check_frozen (self );
284290 GetX509Ext (self , ext );
285291 if (rb_scan_args (argc , argv , "12" , & oid , & value , & critical ) == 1 ){
286292 oid = ossl_to_der_if_possible (oid );
@@ -324,6 +330,7 @@ ossl_x509ext_set_oid(VALUE self, VALUE oid)
324330 X509_EXTENSION * ext ;
325331 ASN1_OBJECT * obj ;
326332
333+ rb_check_frozen (self );
327334 GetX509Ext (self , ext );
328335 obj = OBJ_txt2obj (StringValueCStr (oid ), 0 );
329336 if (!obj )
@@ -343,6 +350,7 @@ ossl_x509ext_set_value(VALUE self, VALUE data)
343350 X509_EXTENSION * ext ;
344351 ASN1_OCTET_STRING * asn1s ;
345352
353+ rb_check_frozen (self );
346354 GetX509Ext (self , ext );
347355 data = ossl_to_der_if_possible (data );
348356 StringValue (data );
@@ -361,6 +369,7 @@ ossl_x509ext_set_critical(VALUE self, VALUE flag)
361369{
362370 X509_EXTENSION * ext ;
363371
372+ rb_check_frozen (self );
364373 GetX509Ext (self , ext );
365374 X509_EXTENSION_set_critical (ext , RTEST (flag ) ? 1 : 0 );
366375
0 commit comments