1
0
Fork 0
mirror of https://github.com/puma/puma.git synced 2022-11-09 13:48:40 -05:00

made MiniSSL validate key/cert file existence

Previously, MiniSSL accepted invalid paths for the key/cert file
and timed out on the first request. Now, MiniSSL raises an ArgumentError
if one of these files does not exist.

Fix for puma/puma#168
This commit is contained in:
rubiii 2012-11-30 13:47:47 +01:00
parent 23257c8fde
commit 30ea3d0506
2 changed files with 36 additions and 1 deletions

View file

@ -79,7 +79,20 @@ module Puma::MiniSSL
end
class Context
attr_accessor :key, :cert, :verify_mode
attr_accessor :verify_mode
attr_reader :key
attr_reader :cert
def key=(key)
raise ArgumentError, "No such key file '#{key}'" unless File.exist? key
@key = key
end
def cert=(cert)
raise ArgumentError, "No such cert file '#{cert}'" unless File.exist? cert
@cert = cert
end
end
VERIFY_NONE = 0

22
test/test_minissl.rb Normal file
View file

@ -0,0 +1,22 @@
require 'test/unit'
require 'puma'
require 'puma/minissl'
class TestMiniSSL < Test::Unit::TestCase
def test_raises_with_invalid_key_file
ctx = Puma::MiniSSL::Context.new
exception = assert_raise(ArgumentError) { ctx.key = "/no/such/key" }
assert_equal("No such key file '/no/such/key'", exception.message)
end unless defined? JRUBY_VERSION
def test_raises_with_invalid_cert_file
ctx = Puma::MiniSSL::Context.new
exception = assert_raise(ArgumentError) { ctx.cert = "/no/such/cert" }
assert_equal("No such cert file '/no/such/cert'", exception.message)
end unless defined? JRUBY_VERSION
end