@@ -37,7 +37,7 @@ static const rb_data_type_t ossl_bn_type = {
37
37
{
38
38
0 , ossl_bn_free ,
39
39
},
40
- 0 , 0 , RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED ,
40
+ 0 , 0 , RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE ,
41
41
};
42
42
43
43
/*
@@ -259,6 +259,7 @@ ossl_bn_initialize(int argc, VALUE *argv, VALUE self)
259
259
ossl_raise (rb_eArgError , "invalid argument" );
260
260
}
261
261
262
+ rb_check_frozen (self );
262
263
if (RB_INTEGER_TYPE_P (str )) {
263
264
GetBN (self , bn );
264
265
integer_to_bnptr (str , bn );
@@ -689,6 +690,7 @@ BIGNUM_3c(mod_exp)
689
690
ossl_bn_ ##func (VALUE self, VALUE bit) \
690
691
{ \
691
692
BIGNUM *bn; \
693
+ rb_check_frozen(self); \
692
694
GetBN(self, bn); \
693
695
if (BN_##func(bn, NUM2INT(bit)) <= 0) { \
694
696
ossl_raise(eBNError, NULL); \
@@ -778,6 +780,7 @@ BIGNUM_SHIFT(rshift)
778
780
{ \
779
781
BIGNUM *bn; \
780
782
int b; \
783
+ rb_check_frozen(self); \
781
784
b = NUM2INT(bits); \
782
785
GetBN(self, bn); \
783
786
if (BN_##func(bn, bn, b) <= 0) \
@@ -1187,6 +1190,7 @@ ossl_bn_set_flags(VALUE self, VALUE arg)
1187
1190
BIGNUM * bn ;
1188
1191
GetBN (self , bn );
1189
1192
1193
+ rb_check_frozen (self );
1190
1194
BN_set_flags (bn , NUM2INT (arg ));
1191
1195
return Qnil ;
1192
1196
}
0 commit comments