Project

General

Profile

Actions

Bug #6830

closed

test failure test_constants(OpenSSL::TestConfig) [/ruby/test/openssl/test_config.rb:27] on Mac + homebrew

Added by kosaki (Motohiro KOSAKI) over 11 years ago. Updated over 11 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 2.0.0dev (2012-08-04 trunk 36617) [x86_64-darwin12.0.0]
Backport:
[ruby-core:46974]

Description

When using homebrew openssl, following test failure was happen.

  1. Failure:
    test_constants(OpenSSL::TestConfig) [/Users/kosaki/ruby/git/test/openssl/test_config.rb:27]:
    Exception raised:
    <#<Errno::ENOENT: No such file or directory - /usr/local/openssl-1.0.1c/openssl.cnf>>.

rough analysis.

homebrew installed openssl library to "/usr/local/Cellar/openssl/1.0.1c".

and following program output "/usr/local/openssl-1.0.1c".


int main()
{
printf("%s\n", X509_get_default_cert_area());
return 0;
}

I'm using following configure options.

configure
    --disable-install-doc
    --with-baseruby=/usr/bin/ruby
    --prefix=${HOME}/local/ruby-${suffix}
    --program-suffix=-${suffix}
--with-openssl-dir=/usr/local/Cellar/openssl/1.0.1c

So, I have several questions.

  1. Is X509_get_default_cert_area() a right way to obtain configuration file?
  2. If yes, is this homebrew bug?
  3. if yes, should we skip this test when using Mac OS X?
Actions #1

Updated by shyouhei (Shyouhei Urabe) over 11 years ago

  • Status changed from Assigned to Feedback

Click the update button, then click "(More)". You can continue editing the description.

Updated by kosaki (Motohiro KOSAKI) over 11 years ago

  • Description updated (diff)
  • Status changed from Feedback to Assigned

Updated by luislavena (Luis Lavena) over 11 years ago

=begin
Hello guys,

If I can chime in, something similar happens on Windows:

https://github.com/oneclick/rubyinstaller/pull/120#issuecomment-6641054

And we workaround the issue by setting (({OPENSSL_CONF})) environment variable.

Now, I believe the root issue is not OpenSSL extension but OpenSSL itself that is using hardcoded paths.

At least Ruby tests should check if the default configuration file exists prior attempting to load it, as suggested in the RubyInstaller comment.

This issue is very common on Windows, where packages/libraries can be relocated to different drives or paths altogether, turning hardcoded paths into a problem.
=end

Updated by MartinBosslet (Martin Bosslet) over 11 years ago

Thanks for the detailed description! Luis has pointed out the issue on Windows to me already, and we agreed that this is probably a problem with OpenSSL itself. For quick relief, I will implement the check for the existence of the file about to be loaded and I'd also skip the test whenever it causes problems. Once done, I'll look into ways to avoid the issue with hardcoded paths altogether.

  1. Is X509_get_default_cert_area() a right way to obtain configuration file?

Hmm, I'll investigate if there are better ways or alternatives.

Actions #5

Updated by kosaki (Motohiro KOSAKI) over 11 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r36666.
Motohiro, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • test/openssl/test_config.rb (OpenSSL#test_constants): skip this
    test if platform is Mac OS X or Windows. [Bug #6830]
Actions #6

Updated by usa (Usaku NAKAMURA) over 11 years ago

On my Windows box, OpenSSL::Config::DEFAULT_CONFIG_FILE returns the right path.
So, this problem is not platform dependent but user's environment dependent.
Therefore, I can't agree r36666.

Updated by kosaki (Motohiro KOSAKI) over 11 years ago

  • Status changed from Closed to Feedback
  • Assignee changed from MartinBosslet (Martin Bosslet) to usa (Usaku NAKAMURA)

On my Windows box, OpenSSL::Config::DEFAULT_CONFIG_FILE returns the right path.

Which path do your OpenSSL return? I'm ok that only Mac and MinGW skip this test.

Updated by luislavena (Luis Lavena) over 11 years ago

usa (Usaku NAKAMURA) wrote:

On my Windows box, OpenSSL::Config::DEFAULT_CONFIG_FILE returns the right path.
So, this problem is not platform dependent but user's environment dependent.
Therefore, I can't agree r36666.

Test is incorrect, it should check if default file exist and skip if doesn't.

On windows if you change location openssl dlls it will cause an error, as explained in the github links I've included before.

So is not a problem of platform but a hardcoded path on openssl.

Usa, can you tell us if you moved OpenSSL dlls to different directories and verified OpenSSL::Config::DEFAULT_CONFIG_FILE?

Updated by usa (Usaku NAKAMURA) over 11 years ago

  • Status changed from Feedback to Assigned
  • Assignee changed from usa (Usaku NAKAMURA) to kosaki (Motohiro KOSAKI)

(1) "is not a problem of platform but a hardcoded path on openssl."
Yes, I think so, too.

(2) "if you moved OpenSSL dlls to different directories and verified OpenSSL::Config::DEFAULT_CONFIG_FILE?"
Of course, it fails.

So, should not skip by platform, but should determine whether to skip or not
to skip by another method, such as checking the existance of the config file,
as luis said.

Updated by kosaki (Motohiro KOSAKI) over 11 years ago

(1) "is not a problem of platform but a hardcoded path on openssl."
Yes, I think so, too.

(2) "if you moved OpenSSL dlls to different directories and verified OpenSSL::Config::DEFAULT_CONFIG_FILE?"
Of course, it fails.

So, should not skip by platform, but should determine whether to skip or not
to skip by another method, such as checking the existance of the config file,
as luis said.

This test confirm OpenSSL::Config::DEFAULT_CONFIG_FILE correctness. Therefore,
when we skip the test if OpenSSL::Config::DEFAULT_CONFIG_FILE is
incorrect, it doesn't
test any meaningful thing. I just suggest to remove the test instaed
if we can't use platform
check.

Updated by nobu (Nobuyoshi Nakada) over 11 years ago

At least, the condition is not exact.
With MacPorts OpenSSL, the constant has a correct path.

Updated by nobu (Nobuyoshi Nakada) over 11 years ago

  • % Done changed from 100 to 50

Updated by kosaki (Motohiro KOSAKI) over 11 years ago

On Fri, Aug 17, 2012 at 8:42 AM, nobu (Nobuyoshi Nakada)
wrote:

Issue #6830 has been updated by nobu (Nobuyoshi Nakada).

At least, the condition is not exact.
With MacPorts OpenSSL, the constant has a correct path.

Is there any way to detect MacPorts? I have no idea.

Updated by kosaki (Motohiro KOSAKI) over 11 years ago

  • Status changed from Assigned to Feedback
  • Assignee changed from kosaki (Motohiro KOSAKI) to nobu (Nobuyoshi Nakada)

Updated by nobu (Nobuyoshi Nakada) over 11 years ago

Now tests it if the file exists.

Updated by nobu (Nobuyoshi Nakada) over 11 years ago

  • Status changed from Feedback to Closed
  • % Done changed from 50 to 100
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0