summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2017-01-24 15:29:56 +0900
committerKazuki Yamaguchi <k@rhe.jp>2017-01-28 03:32:12 +0900
commit4ccaf256a1c178eedaa6840613a54a00d8eba20c (patch)
treebd947500b0083d944479e1dfa8edf5764293012a
parent24a6774f623a681d6fd3b741b8b177e83c2f7160 (diff)
downloadruby-openssl-4ccaf256a1c178eedaa6840613a54a00d8eba20c.tar.gz
x509: fix OpenSSL::X509::Name#eql?
Commit 34e7fe34ee32 ("Use rb_obj_class() instead of CLASS_OF()", 2016-09-08) incorrectly inverted the result. Fix it, and add a test case for this. Fixes: 34e7fe34ee32 ("Use rb_obj_class() instead of CLASS_OF()")
-rw-r--r--ext/openssl/ossl_x509name.c2
-rw-r--r--test/test_x509name.rb10
2 files changed, 11 insertions, 1 deletions
diff --git a/ext/openssl/ossl_x509name.c b/ext/openssl/ossl_x509name.c
index 4523e0d7..ac98c1b9 100644
--- a/ext/openssl/ossl_x509name.c
+++ b/ext/openssl/ossl_x509name.c
@@ -375,7 +375,7 @@ ossl_x509name_eql(VALUE self, VALUE other)
if (!rb_obj_is_kind_of(other, cX509Name))
return Qfalse;
- return ossl_x509name_cmp0(self, other) ? Qtrue : Qfalse;
+ return ossl_x509name_cmp0(self, other) == 0 ? Qtrue : Qfalse;
}
/*
diff --git a/test/test_x509name.rb b/test/test_x509name.rb
index b30a02e6..60e8ddb8 100644
--- a/test/test_x509name.rb
+++ b/test/test_x509name.rb
@@ -357,6 +357,16 @@ class OpenSSL::TestX509Name < OpenSSL::TestCase
assert_equal(expected, name_hash(name))
end
+ def test_equality
+ name0 = OpenSSL::X509::Name.new([["DC", "org"], ["DC", "ruby-lang"], ["CN", "bar.ruby-lang.org"]])
+ name1 = OpenSSL::X509::Name.new([["DC", "org"], ["DC", "ruby-lang"], ["CN", "bar.ruby-lang.org"]])
+ name2 = OpenSSL::X509::Name.new([["DC", "org"], ["DC", "ruby-lang"], ["CN", "baz.ruby-lang.org"]])
+ assert_equal true, name0 == name1
+ assert_equal true, name0.eql?(name1)
+ assert_equal false, name0 == name2
+ assert_equal false, name0.eql?(name2)
+ end
+
def test_dup
name = OpenSSL::X509::Name.parse("/CN=ruby-lang.org")
assert_equal(name.to_der, name.dup.to_der)