Skip to content

Commit f2be431

Browse files
committed
Remove almost all OpenSSL patches.
1 parent ab4f2f8 commit f2be431

17 files changed

+92
-196
lines changed

src/main/c/openssl/ossl.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,7 @@ ossl_pem_passwd_cb(char *buf, int max_len, int flag, void *pwd_)
169169
{
170170
long len;
171171
int status;
172-
#ifdef TRUFFLERUBY
173-
VALUE rflag, pass = (VALUE)rb_tr_managed_from_handle_release(pwd_);
174-
#else
175172
VALUE rflag, pass = (VALUE)pwd_;
176-
#endif
177173

178174
if (RTEST(pass)) {
179175
/* PEM_def_callback(buf, max_len, flag, StringValueCStr(pass)) does not
@@ -580,9 +576,7 @@ static void Init_ossl_locks(void)
580576
int i;
581577
int num_locks = CRYPTO_num_locks();
582578

583-
// Modified for TruffleRuby
584-
//ossl_locks = ALLOC_N(struct CRYPTO_dynlock_value, num_locks);
585-
ossl_locks = (struct CRYPTO_dynlock_value *) truffle_managed_malloc(num_locks * (int)sizeof(struct CRYPTO_dynlock_value));
579+
ossl_locks = ALLOC_N(struct CRYPTO_dynlock_value, num_locks);
586580
for (i = 0; i < num_locks; i++)
587581
ossl_lock_init(&ossl_locks[i]);
588582

src/main/c/openssl/ossl.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,19 +49,17 @@ extern VALUE eOSSLError;
4949
/*
5050
* CheckTypes
5151
*/
52-
// TruffleRuby: avoid passing managed to var-args
5352
#define OSSL_Check_Kind(obj, klass) do {\
5453
if (!rb_obj_is_kind_of((obj), (klass))) {\
55-
ossl_raise(rb_eTypeError, "wrong argument (%s)! (Expected kind of %s)",\
56-
RSTRING_PTR(rb_class_name(rb_obj_class(obj))), RSTRING_PTR(rb_class_name(klass)));\
54+
ossl_raise(rb_eTypeError, "wrong argument (%"PRIsVALUE")! (Expected kind of %"PRIsVALUE")",\
55+
rb_obj_class(obj), (klass));\
5756
}\
5857
} while (0)
5958

60-
// TruffleRuby: avoid passing managed to var-args
6159
#define OSSL_Check_Instance(obj, klass) do {\
6260
if (!rb_obj_is_instance_of((obj), (klass))) {\
63-
ossl_raise(rb_eTypeError, "wrong argument (%s)! (Expected instance of %s)",\
64-
RSTRING_PTR(rb_class_name(rb_obj_class(obj))), RSTRING_PTR(rb_class_name(klass)));\
61+
ossl_raise(rb_eTypeError, "wrong argument (%"PRIsVALUE")! (Expected instance of %"PRIsVALUE")",\
62+
rb_obj_class(obj), (klass));\
6563
}\
6664
} while (0)
6765

src/main/c/openssl/ossl_asn1.c

Lines changed: 35 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -470,43 +470,40 @@ typedef struct {
470470
VALUE *klass;
471471
} ossl_asn1_info_t;
472472

473-
// TruffleRuby
474473
static const ossl_asn1_info_t ossl_asn1_info[] = {
475-
{ "EOC", /*&cASN1EndOfContent*/ NULL, }, /* 0 */
476-
{ "BOOLEAN", /*&cASN1Boolean*/ NULL, }, /* 1 */
477-
{ "INTEGER", /*&cASN1Integer*/ NULL, }, /* 2 */
478-
{ "BIT_STRING", /*&cASN1BitString*/ NULL, }, /* 3 */
479-
{ "OCTET_STRING", /*&cASN1OctetString*/ NULL, }, /* 4 */
480-
{ "NULL", /*&cASN1Null*/ NULL, }, /* 5 */
481-
{ "OBJECT", /*&cASN1ObjectId*/ NULL, }, /* 6 */
482-
{ "OBJECT_DESCRIPTOR", NULL, }, /* 7 */
483-
{ "EXTERNAL", NULL, }, /* 8 */
484-
{ "REAL", NULL, }, /* 9 */
485-
{ "ENUMERATED", /*&cASN1Enumerated*/ NULL, }, /* 10 */
486-
{ "EMBEDDED_PDV", NULL, }, /* 11 */
487-
{ "UTF8STRING", /*&cASN1UTF8String*/ NULL, }, /* 12 */
488-
{ "RELATIVE_OID", NULL, }, /* 13 */
489-
{ "[UNIVERSAL 14]", NULL, }, /* 14 */
490-
{ "[UNIVERSAL 15]", NULL, }, /* 15 */
491-
{ "SEQUENCE", /*&cASN1Sequence*/ NULL, }, /* 16 */
492-
{ "SET", /*&cASN1Set*/ NULL, }, /* 17 */
493-
{ "NUMERICSTRING", /*&cASN1NumericString*/ NULL, }, /* 18 */
494-
{ "PRINTABLESTRING", /*&cASN1PrintableString*/ NULL, }, /* 19 */
495-
{ "T61STRING", /*&cASN1T61String*/ NULL, }, /* 20 */
496-
{ "VIDEOTEXSTRING", /*&cASN1VideotexString*/ NULL, }, /* 21 */
497-
{ "IA5STRING", /*&cASN1IA5String*/ NULL, }, /* 22 */
498-
{ "UTCTIME", /*&cASN1UTCTime*/ NULL, }, /* 23 */
499-
{ "GENERALIZEDTIME", /*&cASN1GeneralizedTime*/ NULL, }, /* 24 */
500-
{ "GRAPHICSTRING", /*&cASN1GraphicString*/ NULL, }, /* 25 */
501-
{ "ISO64STRING", /*&cASN1ISO64String*/ NULL, }, /* 26 */
502-
{ "GENERALSTRING", /*&cASN1GeneralString*/ NULL, }, /* 27 */
503-
{ "UNIVERSALSTRING", /*&cASN1UniversalString*/ NULL, }, /* 28 */
504-
{ "CHARACTER_STRING", NULL, }, /* 29 */
505-
{ "BMPSTRING", /*&cASN1BMPString*/ NULL, }, /* 30 */
474+
{ "EOC", &cASN1EndOfContent, }, /* 0 */
475+
{ "BOOLEAN", &cASN1Boolean, }, /* 1 */
476+
{ "INTEGER", &cASN1Integer, }, /* 2 */
477+
{ "BIT_STRING", &cASN1BitString, }, /* 3 */
478+
{ "OCTET_STRING", &cASN1OctetString, }, /* 4 */
479+
{ "NULL", &cASN1Null, }, /* 5 */
480+
{ "OBJECT", &cASN1ObjectId, }, /* 6 */
481+
{ "OBJECT_DESCRIPTOR", NULL, }, /* 7 */
482+
{ "EXTERNAL", NULL, }, /* 8 */
483+
{ "REAL", NULL, }, /* 9 */
484+
{ "ENUMERATED", &cASN1Enumerated, }, /* 10 */
485+
{ "EMBEDDED_PDV", NULL, }, /* 11 */
486+
{ "UTF8STRING", &cASN1UTF8String, }, /* 12 */
487+
{ "RELATIVE_OID", NULL, }, /* 13 */
488+
{ "[UNIVERSAL 14]", NULL, }, /* 14 */
489+
{ "[UNIVERSAL 15]", NULL, }, /* 15 */
490+
{ "SEQUENCE", &cASN1Sequence, }, /* 16 */
491+
{ "SET", &cASN1Set, }, /* 17 */
492+
{ "NUMERICSTRING", &cASN1NumericString, }, /* 18 */
493+
{ "PRINTABLESTRING", &cASN1PrintableString, }, /* 19 */
494+
{ "T61STRING", &cASN1T61String, }, /* 20 */
495+
{ "VIDEOTEXSTRING", &cASN1VideotexString, }, /* 21 */
496+
{ "IA5STRING", &cASN1IA5String, }, /* 22 */
497+
{ "UTCTIME", &cASN1UTCTime, }, /* 23 */
498+
{ "GENERALIZEDTIME", &cASN1GeneralizedTime, }, /* 24 */
499+
{ "GRAPHICSTRING", &cASN1GraphicString, }, /* 25 */
500+
{ "ISO64STRING", &cASN1ISO64String, }, /* 26 */
501+
{ "GENERALSTRING", &cASN1GeneralString, }, /* 27 */
502+
{ "UNIVERSALSTRING", &cASN1UniversalString, }, /* 28 */
503+
{ "CHARACTER_STRING", NULL, }, /* 29 */
504+
{ "BMPSTRING", &cASN1BMPString, }, /* 30 */
506505
};
507506

508-
VALUE** ossl_asn1_info_klass;
509-
510507
enum {ossl_asn1_info_size = (sizeof(ossl_asn1_info)/sizeof(ossl_asn1_info[0]))};
511508

512509
static VALUE class_tag_map;
@@ -597,8 +594,7 @@ ossl_asn1_default_tag(VALUE obj)
597594
tmp_class = CLASS_OF(obj);
598595
while (!NIL_P(tmp_class)) {
599596
tag = rb_hash_lookup(class_tag_map, tmp_class);
600-
// TODO BJF Apr-15-2017 - `if (tag != Qnil) {` - Investigate why 0L == DynamicObject<NilClass>
601-
if (!NIL_P(tag))
597+
if (tag != Qnil)
602598
return NUM2INT(tag);
603599
tmp_class = rb_class_superclass(tmp_class);
604600
}
@@ -806,8 +802,8 @@ int_ossl_asn1_decode0_prim(unsigned char **pp, long length, long hlen, int tag,
806802
*num_read = hlen + length;
807803

808804
if (tc == sym_UNIVERSAL &&
809-
tag < ossl_asn1_info_size && ossl_asn1_info_klass[tag]) { // TruffleRuby instead of ossl_asn1_info[tag].klass
810-
VALUE klass = *ossl_asn1_info_klass[tag]; // TruffleRuby instead of *ossl_asn1_info[tag].klass
805+
tag < ossl_asn1_info_size && ossl_asn1_info[tag].klass) {
806+
VALUE klass = *ossl_asn1_info[tag].klass;
811807
VALUE args[4];
812808
args[0] = value;
813809
args[1] = INT2NUM(tag);
@@ -870,7 +866,7 @@ int_ossl_asn1_decode0_cons(unsigned char **pp, long max_len, long length,
870866
}
871867
}
872868
else {
873-
VALUE klass = *ossl_asn1_info_klass[tag]; // TruffleRuby instead of *ossl_asn1_info[tag].klass
869+
VALUE klass = *ossl_asn1_info[tag].klass;
874870
asn1data = rb_obj_alloc(klass);
875871
}
876872
args[0] = ary;
@@ -1416,40 +1412,6 @@ OSSL_ASN1_IMPL_FACTORY_METHOD(EndOfContent)
14161412
void
14171413
Init_ossl_asn1(void)
14181414
{
1419-
// TruffleRuby
1420-
ossl_asn1_info_klass = truffle_managed_malloc(sizeof(VALUE *) * 31);
1421-
ossl_asn1_info_klass[ 0] = &cASN1EndOfContent;
1422-
ossl_asn1_info_klass[ 1] = &cASN1Boolean;
1423-
ossl_asn1_info_klass[ 2] = &cASN1Integer;
1424-
ossl_asn1_info_klass[ 3] = &cASN1BitString;
1425-
ossl_asn1_info_klass[ 4] = &cASN1OctetString;
1426-
ossl_asn1_info_klass[ 5] = &cASN1Null;
1427-
ossl_asn1_info_klass[ 6] = &cASN1ObjectId;
1428-
ossl_asn1_info_klass[ 7] = NULL;
1429-
ossl_asn1_info_klass[ 8] = NULL;
1430-
ossl_asn1_info_klass[ 9] = NULL;
1431-
ossl_asn1_info_klass[10] = &cASN1Enumerated;
1432-
ossl_asn1_info_klass[11] = NULL;
1433-
ossl_asn1_info_klass[12] = &cASN1UTF8String;
1434-
ossl_asn1_info_klass[13] = NULL;
1435-
ossl_asn1_info_klass[14] = NULL;
1436-
ossl_asn1_info_klass[15] = NULL;
1437-
ossl_asn1_info_klass[16] = &cASN1Sequence;
1438-
ossl_asn1_info_klass[17] = &cASN1Set;
1439-
ossl_asn1_info_klass[18] = &cASN1NumericString;
1440-
ossl_asn1_info_klass[19] = &cASN1PrintableString;
1441-
ossl_asn1_info_klass[20] = &cASN1T61String;
1442-
ossl_asn1_info_klass[21] = &cASN1VideotexString;
1443-
ossl_asn1_info_klass[22] = &cASN1IA5String;
1444-
ossl_asn1_info_klass[23] = &cASN1UTCTime;
1445-
ossl_asn1_info_klass[24] = &cASN1GeneralizedTime;
1446-
ossl_asn1_info_klass[25] = &cASN1GraphicString;
1447-
ossl_asn1_info_klass[26] = &cASN1ISO64String;
1448-
ossl_asn1_info_klass[27] = &cASN1GeneralString;
1449-
ossl_asn1_info_klass[28] = &cASN1UniversalString;
1450-
ossl_asn1_info_klass[29] = NULL;
1451-
ossl_asn1_info_klass[30] = &cASN1BMPString;
1452-
14531415
VALUE ary;
14541416
int i;
14551417

src/main/c/openssl/ossl_bio.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
*/
1010
#include "ossl.h"
1111

12-
#ifndef TRUFFLERUBY
13-
1412
BIO *
1513
ossl_obj2bio(volatile VALUE *pobj)
1614
{
@@ -27,8 +25,6 @@ ossl_obj2bio(volatile VALUE *pobj)
2725
return bio;
2826
}
2927

30-
#endif
31-
3228
VALUE
3329
ossl_membio2str0(BIO *bio)
3430
{

src/main/c/openssl/ossl_bio.h

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -10,39 +10,7 @@
1010
#if !defined(_OSSL_BIO_H_)
1111
#define _OSSL_BIO_H_
1212

13-
#ifdef TRUFFLERUBY
14-
15-
/*
16-
* This is ossl_obj2bio copied from ossl_bio.c with the only modification being
17-
* the addition of MUST_INLINE, so that the local variable referenced by pobj
18-
* can be put into a register, and the removal of the volatile, which would
19-
* prevent that. I think MRI uses the volatile and the address just in order
20-
* to support conservative GC. We don't need this as our GC is precise.
21-
*/
22-
23-
MUST_INLINE
24-
BIO *
25-
ossl_obj2bio(VALUE *pobj)
26-
{
27-
VALUE obj = *pobj;
28-
BIO *bio;
29-
30-
if (RB_TYPE_P(obj, T_FILE))
31-
obj = rb_funcallv(obj, rb_intern("read"), 0, NULL);
32-
StringValue(obj);
33-
bio = BIO_new_mem_buf(RSTRING_PTR(obj), RSTRING_LENINT(obj));
34-
if (!bio)
35-
ossl_raise(eOSSLError, "BIO_new_mem_buf");
36-
*pobj = obj;
37-
return bio;
38-
}
39-
40-
#else
41-
4213
BIO *ossl_obj2bio(volatile VALUE *);
43-
44-
#endif
45-
4614
VALUE ossl_membio2str0(BIO*);
4715
VALUE ossl_membio2str(BIO*);
4816
VALUE ossl_protect_membio2str(BIO*,int*);

src/main/c/openssl/ossl_bn.c

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -152,22 +152,6 @@ ossl_bn_value_ptr(volatile VALUE *ptr)
152152
return bn;
153153
}
154154

155-
// TruffleRuby: _x version added that doesn't take a pointer to a local
156-
// variable - the variable is apparently only to protect against conservative GC
157-
BIGNUM *
158-
ossl_bn_value_ptr_x(VALUE obj)
159-
{
160-
VALUE tmp;
161-
BIGNUM *bn;
162-
163-
tmp = try_convert_to_bn(obj);
164-
if (NIL_P(tmp))
165-
ossl_raise(rb_eTypeError, "Cannot convert into OpenSSL::BN");
166-
GetBN(tmp, bn);
167-
168-
return bn;
169-
}
170-
171155
/*
172156
* Private
173157
*/

src/main/c/openssl/ossl_bn.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,10 @@ extern VALUE eBNError;
1515

1616
extern BN_CTX *ossl_bn_ctx;
1717

18-
// TruffleRuby: avoid taking address of local variables
19-
#define GetBNPtr(obj) ossl_bn_value_ptr_x(obj)
18+
#define GetBNPtr(obj) ossl_bn_value_ptr(&(obj))
2019

2120
VALUE ossl_bn_new(const BIGNUM *);
2221
BIGNUM *ossl_bn_value_ptr(volatile VALUE *);
23-
BIGNUM *ossl_bn_value_ptr_x(VALUE);
2422
void Init_ossl_bn(void);
2523

2624

src/main/c/openssl/ossl_cipher.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,8 @@ ossl_cipher_copy(VALUE self, VALUE other)
154154
}
155155

156156
static void*
157-
add_cipher_name_to_ary(const OBJ_NAME *name, void* ary_handle) // TruffleRuby void* instead of VALUE
157+
add_cipher_name_to_ary(const OBJ_NAME *name, VALUE ary)
158158
{
159-
VALUE ary = rb_tr_managed_from_handle(ary_handle);
160159
rb_ary_push(ary, rb_str_new2(name->name));
161160
return NULL;
162161
}
@@ -175,7 +174,7 @@ ossl_s_ciphers(VALUE self)
175174
ary = rb_ary_new();
176175
OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_CIPHER_METH,
177176
(void(*)(const OBJ_NAME*,void*))add_cipher_name_to_ary,
178-
rb_tr_handle_for_managed_leaking(ary));
177+
(void*)ary);
179178

180179
return ary;
181180
}

src/main/c/openssl/ossl_engine.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,9 +212,7 @@ ossl_engine_s_by_id(VALUE klass, VALUE id)
212212
VALUE obj;
213213

214214
StringValueCStr(id);
215-
VALUE argv[1]; // TruffleRuby to allow the preprocessor to turn into a managed malloc
216-
argv[0] = id; // TruffleRuby
217-
ossl_engine_s_load(1, argv, klass); // TruffleRuby
215+
ossl_engine_s_load(1, &id, klass);
218216
obj = NewEngine(klass);
219217
if(!(e = ENGINE_by_id(RSTRING_PTR(id))))
220218
ossl_raise(eEngineError, NULL);

src/main/c/openssl/ossl_pkcs12.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,11 @@ ossl_pkcs12_s_create(int argc, VALUE *argv, VALUE self)
126126
/* TODO: make a VALUE to nid function */
127127
if (!NIL_P(key_nid)) {
128128
if ((nkey = OBJ_txt2nid(StringValueCStr(key_nid))) == NID_undef)
129-
ossl_raise(rb_eArgError, "Unknown PBE algorithm %s", StringValueCStr(key_nid)); // TruffleRuby: avoid passing managed to var-args
129+
ossl_raise(rb_eArgError, "Unknown PBE algorithm %"PRIsVALUE, key_nid);
130130
}
131131
if (!NIL_P(cert_nid)) {
132132
if ((ncert = OBJ_txt2nid(StringValueCStr(cert_nid))) == NID_undef)
133-
ossl_raise(rb_eArgError, "Unknown PBE algorithm %s", StringValueCStr(cert_nid)); // TruffleRuby: avoid passing managed to var-args
133+
ossl_raise(rb_eArgError, "Unknown PBE algorithm %"PRIsVALUE, cert_nid);
134134
}
135135
if (!NIL_P(key_iter))
136136
kiter = NUM2INT(key_iter);

0 commit comments

Comments
 (0)