Skip to content

Commit dd05ad9

Browse files
committed
fix: unchecked *_set_* calls
Fixes #1038
1 parent 8a7c9b8 commit dd05ad9

4 files changed

Lines changed: 25 additions & 8 deletions

File tree

ext/openssl/ossl_ssl_session.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,9 @@ static VALUE ossl_ssl_session_set_time(VALUE self, VALUE time_v)
183183
time_v = rb_funcall(time_v, rb_intern("to_i"), 0);
184184
}
185185
t = NUM2LONG(time_v);
186-
SSL_SESSION_set_time(ctx, t);
186+
if (SSL_SESSION_set_time(ctx, t) != t) {
187+
ossl_raise(eSSLSession, "SSL_SESSION_set_time");
188+
}
187189
return ossl_ssl_session_get_time(self);
188190
}
189191

@@ -200,7 +202,9 @@ static VALUE ossl_ssl_session_set_timeout(VALUE self, VALUE time_v)
200202

201203
GetSSLSession(self, ctx);
202204
t = NUM2LONG(time_v);
203-
SSL_SESSION_set_timeout(ctx, t);
205+
if (SSL_SESSION_set_timeout(ctx, t) != 1) {
206+
ossl_raise(eSSLSession, "SSL_SESSION_set_timeout");
207+
}
204208
return ossl_ssl_session_get_timeout(self);
205209
}
206210

ext/openssl/ossl_ts.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,9 @@ ossl_ts_req_set_cert_requested(VALUE self, VALUE requested)
441441
TS_REQ *req;
442442

443443
GetTSRequest(self, req);
444-
TS_REQ_set_cert_req(req, RTEST(requested));
444+
if (!TS_REQ_set_cert_req(req, RTEST(requested))) {
445+
ossl_raise(eTimestampError, "TS_REQ_set_cert_req");
446+
}
445447

446448
return requested;
447449
}
@@ -1233,7 +1235,10 @@ ossl_tsfac_create_ts(VALUE self, VALUE key, VALUE certificate, VALUE request)
12331235
sk_X509_pop_free(inter_certs, X509_free);
12341236
}
12351237

1236-
TS_RESP_CTX_set_signer_key(ctx, sign_key);
1238+
if (!TS_RESP_CTX_set_signer_key(ctx, sign_key)) {
1239+
err_msg = "Signer key could not be set";
1240+
goto end;
1241+
}
12371242
if (!NIL_P(def_policy_id) && !TS_REQ_get_policy_id(req))
12381243
TS_RESP_CTX_set_def_policy(ctx, def_policy_id_obj);
12391244
if (TS_REQ_get_policy_id(req))

ext/openssl/ossl_x509ext.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,9 @@ ossl_x509ext_set_critical(VALUE self, VALUE flag)
363363
X509_EXTENSION *ext;
364364

365365
GetX509Ext(self, ext);
366-
X509_EXTENSION_set_critical(ext, RTEST(flag) ? 1 : 0);
366+
if (!X509_EXTENSION_set_critical(ext, RTEST(flag) ? 1 : 0)) {
367+
ossl_raise(eX509ExtError, "X509_EXTENSION_set_critical");
368+
}
367369

368370
return flag;
369371
}

ext/openssl/ossl_x509store.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,9 @@ ossl_x509store_set_flags(VALUE self, VALUE flags)
246246
long f = NUM2LONG(flags);
247247

248248
GetX509Store(self, store);
249-
X509_STORE_set_flags(store, f);
249+
if (!X509_STORE_set_flags(store, f)) {
250+
ossl_raise(eX509StoreError, "X509_STORE_set_flags");
251+
}
250252

251253
return flags;
252254
}
@@ -281,7 +283,9 @@ ossl_x509store_set_purpose(VALUE self, VALUE purpose)
281283
int p = NUM2INT(purpose);
282284

283285
GetX509Store(self, store);
284-
X509_STORE_set_purpose(store, p);
286+
if (!X509_STORE_set_purpose(store, p)) {
287+
ossl_raise(eX509StoreError, "X509_STORE_set_purpose");
288+
}
285289

286290
return purpose;
287291
}
@@ -305,7 +309,9 @@ ossl_x509store_set_trust(VALUE self, VALUE trust)
305309
int t = NUM2INT(trust);
306310

307311
GetX509Store(self, store);
308-
X509_STORE_set_trust(store, t);
312+
if (!X509_STORE_set_trust(store, t)) {
313+
ossl_raise(eX509StoreError, "X509_STORE_set_trust");
314+
}
309315

310316
return trust;
311317
}

0 commit comments

Comments
 (0)