[#33640] [Ruby 1.9-Bug#4136][Open] Enumerable#reject should not inherit the receiver's instance variables — Hiro Asari <redmine@...>

Bug #4136: Enumerable#reject should not inherit the receiver's instance variables

10 messages 2010/12/08

[#33667] [Ruby 1.9-Bug#4149][Open] Documentation submission: syslog standard library — mathew murphy <redmine@...>

Bug #4149: Documentation submission: syslog standard library

11 messages 2010/12/10

[#33683] [feature:trunk] Enumerable#categorize — Tanaka Akira <akr@...>

Hi.

14 messages 2010/12/12
[#33684] Re: [feature:trunk] Enumerable#categorize — "Martin J. Dst" <duerst@...> 2010/12/12

[#33687] Towards a standardized AST for Ruby code — Magnus Holm <judofyr@...>

Hey folks,

23 messages 2010/12/12
[#33688] Re: Towards a standardized AST for Ruby code — Charles Oliver Nutter <headius@...> 2010/12/12

On Sun, Dec 12, 2010 at 9:55 AM, Magnus Holm <judofyr@gmail.com> wrote:

[#33689] Re: Towards a standardized AST for Ruby code — "Haase, Konstantin" <Konstantin.Haase@...> 2010/12/12

On Dec 12, 2010, at 17:46 , Charles Oliver Nutter wrote:

[#33763] [Ruby 1.9-Bug#4168][Open] WeakRef is unsafe to use in Ruby 1.9 — Brian Durand <redmine@...>

Bug #4168: WeakRef is unsafe to use in Ruby 1.9

43 messages 2010/12/17

[#33815] trunk warnflags build issue with curb 0.7.9? — Jon <jon.forums@...>

As this may turn out to be a 3rd party issue rather than a bug, I'd like some feedback.

11 messages 2010/12/22

[#33833] Ruby 1.9.2 is going to be released — "Yuki Sonoda (Yugui)" <yugui@...>

-----BEGIN PGP SIGNED MESSAGE-----

15 messages 2010/12/23

[#33846] [Ruby 1.9-Feature#4197][Open] Improvement of the benchmark library — Benoit Daloze <redmine@...>

Feature #4197: Improvement of the benchmark library

15 messages 2010/12/23

[#33910] [Ruby 1.9-Feature#4211][Open] Converting the Ruby and C API documentation to YARD syntax — Loren Segal <redmine@...>

Feature #4211: Converting the Ruby and C API documentation to YARD syntax

10 messages 2010/12/26

[#33923] [Ruby 1.9-Bug#4214][Open] Fiddle::WINDOWS == false on Windows — Jon Forums <redmine@...>

Bug #4214: Fiddle::WINDOWS == false on Windows

15 messages 2010/12/27

[ruby-core:33862] Re: [Ruby 1.9-Feature#4183][Open] [ext/openssl] Timestamp support

From: Nobuyoshi Nakada <nobu@...>
Date: 2010-12-25 01:44:27 UTC
List: ruby-core #33862
Hi,

At Sat, 25 Dec 2010 06:32:14 +0900,
Aaron Patterson wrote in [ruby-core:33858]:
> The patch seems good.  I noticed some code that is not necessary though.

Just curious for my eyes,
In ossl_ts_verify():
1068     if (!(ctx->store = X509_STORE_new())) {
1069         ossl_raise(eTimestampError, NULL);
1070         goto end;
1071     }

Jump to clean-up after raise?

1109 end:
1110     TS_VERIFY_CTX_free(ctx);
1111     return ret;

In ossl_tsfac_create_ts():
1231         if (!(inter_certs = sk_X509_new_null())) goto end;

When inter_certs can't get created, all the rest are just skipped?

1232         if (tsa_cert)
1233         if (rb_obj_is_kind_of(additional_certs, rb_cArray)) {
1234             for (i = 0; i < RARRAY_LEN(additional_certs); i++) {
1235                 cert = rb_ary_entry(additional_certs, i);
1236                 sk_X509_push(inter_certs, GetX509CertPtr(cert));
1237             }
1238         }
1239         else {
1240             sk_X509_push(inter_certs, GetX509CertPtr(additional_certs));
1241         }

Just indentation of 1233..1241 is wrong, or 1232 is misplaced?

A patch to suppress some warnings.


diff --git i/ext/.document w/ext/.document
index 6f4f668..3c5ff49 100644
--- i/ext/.document
+++ w/ext/.document
@@ -37,6 +37,7 @@ openssl/ossl_pkey_rsa.c
 openssl/ossl_rand.c
 openssl/ossl_ssl.c
 openssl/ossl_ssl_session.c
+openssl/ossl_ts.c
 openssl/ossl_x509.c
 openssl/ossl_x509attr.c
 openssl/ossl_x509cert.c
diff --git i/ext/openssl/extconf.rb w/ext/openssl/extconf.rb
index b1f2d88..14e2745 100644
--- i/ext/openssl/extconf.rb
+++ w/ext/openssl/extconf.rb
@@ -127,6 +127,7 @@ end
 have_struct_member("EVP_CIPHER_CTX", "flags", "openssl/evp.h")
 have_struct_member("EVP_CIPHER_CTX", "engine", "openssl/evp.h")
 have_struct_member("X509_ATTRIBUTE", "single", "openssl/x509.h")
+have_header("openssl/ts.h")
 
 message "=== Checking done. ===\n"
 
diff --git i/ext/openssl/ossl.c w/ext/openssl/ossl.c
index 1e4f935..9a8d02e 100644
--- i/ext/openssl/ossl.c
+++ w/ext/openssl/ossl.c
@@ -865,6 +865,9 @@ Init_openssl()
     Init_ossl_pkey();
     Init_ossl_rand();
     Init_ossl_ssl();
+#if HAVE_OPENSSL_TS_H
+    Init_ossl_ts();
+#endif
     Init_ossl_x509();
     Init_ossl_ocsp();
     Init_ossl_engine();
diff --git i/ext/openssl/ossl.h w/ext/openssl/ossl.h
index 4bb18d5..6b2ddae 100644
--- i/ext/openssl/ossl.h
+++ w/ext/openssl/ossl.h
@@ -59,6 +59,9 @@ extern "C" {
 #include <openssl/rand.h>
 #include <openssl/conf.h>
 #include <openssl/conf_api.h>
+#if HAVE_OPENSSL_TS_H
+#  include <openssl/ts.h>
+#endif
 #undef X509_NAME
 #undef PKCS7_SIGNER_INFO
 #if defined(HAVE_OPENSSL_ENGINE_H) && defined(HAVE_ST_ENGINE)
@@ -215,6 +218,9 @@ void ossl_debug(const char *, ...);
 #include "ossl_pkey.h"
 #include "ossl_rand.h"
 #include "ossl_ssl.h"
+#if HAVE_OPENSSL_TS_H
+#  include "ossl_ts.h"
+#endif
 #include "ossl_version.h"
 #include "ossl_x509.h"
 #include "ossl_engine.h"
diff --git i/ext/openssl/ossl_ts.c w/ext/openssl/ossl_ts.c
old mode 100755
new mode 100644
index a0b8ca2..6adc8d9
--- i/ext/openssl/ossl_ts.c
+++ w/ext/openssl/ossl_ts.c
@@ -110,19 +110,6 @@ obj_to_asn1obj(VALUE obj)
     return a1obj;
 }
 
-static ASN1_STRING*
-obj_to_asn1str(VALUE obj)
-{
-    ASN1_STRING *str;
-
-    StringValue(obj);
-    if(!(str = ASN1_STRING_new()))
-	ossl_raise(eASN1Error, NULL);
-    ASN1_STRING_set(str, RSTRING_PTR(obj), RSTRING_LEN(obj));
-
-    return str;
-}
-
 static VALUE
 get_asn1obj(ASN1_OBJECT *obj)
 {
@@ -319,7 +306,7 @@ ossl_tsreq_set_msg_imprint(VALUE self, VALUE hash)
         ossl_raise(eTimestampError, NULL);
         return self;
     }
-    TS_MSG_IMPRINT_set_msg(mi, RSTRING_PTR(hash), RSTRING_LEN(hash));
+    TS_MSG_IMPRINT_set_msg(mi, (unsigned char *)RSTRING_PTR(hash), RSTRING_LEN(hash));
 
     return hash;
 }
@@ -401,6 +388,7 @@ ossl_tsreq_set_policy_id(VALUE self, VALUE oid)
         ASN1_OBJECT_free(req->policy_id);
     obj = obj_to_asn1obj(oid);
     req->policy_id = obj;
+    return oid;
 }
 
 /*
@@ -536,7 +524,8 @@ ossl_tsresp_alloc(VALUE klass)
  *       OpenSSL::Timestamp::Response.new(string)  -> response
  */
 static VALUE
-ossl_ts_initialize(VALUE self, VALUE der) {
+ossl_ts_initialize(VALUE self, VALUE der)
+{
     TS_RESP *ts_resp = DATA_PTR(self);
     BIO *in;
 
@@ -666,8 +655,6 @@ ossl_ts_get_pkcs7(VALUE self)
 {
     TS_RESP *resp;
     PKCS7 *p7;
-    unsigned char *p;
-    int len;
 
     GetTS_RESP(self, resp);
     p7 = resp->token;
@@ -920,7 +907,7 @@ ossl_ts_to_der(VALUE self)
 }
 
 static void
-int_ossl_handle_verify_errors()
+int_ossl_handle_verify_errors(void)
 {
     const char *msg = NULL;
     int is_validation_err = 0;
@@ -1124,7 +1111,8 @@ ossl_tsfac_initialize(VALUE self)
 }
 
 static ASN1_INTEGER *
-ossl_tsfac_serial_cb(struct TS_resp_ctx *ctx, void *data) {
+ossl_tsfac_serial_cb(struct TS_resp_ctx *ctx, void *data)
+{
     VALUE serial = *((VALUE *)data);
     ASN1_INTEGER *num;
     if (!(num = ASN1_INTEGER_new())) {
@@ -1280,7 +1268,7 @@ end:
  * INIT
  */
 void
-Init_ossl_ts()
+Init_ossl_ts(void)
 {
     #if 0
     mOSSL = rb_define_module("OpenSSL"); /* let rdoc know about mOSSL */
@@ -1543,4 +1531,4 @@ Init_ossl_ts()
     rb_define_method(cTimestampFactory, "create_timestamp", ossl_tsfac_create_ts, 3);
 }
 
-#endif
\ No newline at end of file
+#endif
diff --git i/ext/openssl/ossl_ts.h w/ext/openssl/ossl_ts.h
index bbf3a0a..5034443 100755
--- i/ext/openssl/ossl_ts.h
+++ w/ext/openssl/ossl_ts.h
@@ -22,4 +22,4 @@ extern VALUE cTimestampFactory;
 void Init_ossl_ts(void);
 TS_RESP *GetTsRespPtr(VALUE obj);
 
-#endif
\ No newline at end of file
+#endif


-- 
Nobu Nakada

In This Thread