bleak_house 4.2.1 → 4.3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +2 -0
- data/Manifest +1 -0
- data/bleak_house.gemspec +5 -9
- data/ext/build_ruby.rb +27 -10
- data/lib/bleak_house/hook.rb +2 -2
- data/ruby/ruby-1.8.6-openssl.patch +157 -0
- data.tar.gz.sig +0 -0
- metadata +9 -15
- metadata.gz.sig +0 -0
data/CHANGELOG
CHANGED
data/Manifest
CHANGED
data/bleak_house.gemspec
CHANGED
@@ -2,39 +2,35 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{bleak_house}
|
5
|
-
s.version = "4.
|
5
|
+
s.version = "4.3"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Evan Weaver"]
|
9
9
|
s.cert_chain = ["/Users/eweaver/p/configuration/gem_certificates/evan_weaver-original-public_cert.pem"]
|
10
|
-
s.date = %q{2009-
|
10
|
+
s.date = %q{2009-08-15}
|
11
11
|
s.default_executable = %q{bleak}
|
12
12
|
s.description = %q{A library for finding memory leaks.}
|
13
13
|
s.email = %q{}
|
14
14
|
s.executables = ["bleak"]
|
15
15
|
s.extensions = ["ext/extconf.rb"]
|
16
16
|
s.extra_rdoc_files = ["CHANGELOG", "ext/snapshot.c", "lib/bleak_house/analyzer.rb", "lib/bleak_house/hook.rb", "lib/bleak_house.rb", "LICENSE", "LICENSE_BSD", "README", "TODO"]
|
17
|
-
s.files = ["bin/bleak", "CHANGELOG", "ext/build_ruby.rb", "ext/build_snapshot.rb", "ext/extconf.rb", "ext/snapshot.c", "ext/snapshot.h", "lib/bleak_house/analyzer.rb", "lib/bleak_house/hook.rb", "lib/bleak_house.rb", "LICENSE", "LICENSE_BSD", "Manifest", "Rakefile", "README", "ruby/ruby-1.8.6-p286.tar.bz2", "ruby/ruby.patch", "ruby/valgrind.patch", "test/benchmark/bench.rb", "test/test_helper.rb", "test/unit/test_bleak_house.rb", "TODO", "bleak_house.gemspec"]
|
18
|
-
s.has_rdoc = true
|
17
|
+
s.files = ["bin/bleak", "CHANGELOG", "ext/build_ruby.rb", "ext/build_snapshot.rb", "ext/extconf.rb", "ext/snapshot.c", "ext/snapshot.h", "lib/bleak_house/analyzer.rb", "lib/bleak_house/hook.rb", "lib/bleak_house.rb", "LICENSE", "LICENSE_BSD", "Manifest", "Rakefile", "README", "ruby/ruby-1.8.6-openssl.patch", "ruby/ruby-1.8.6-p286.tar.bz2", "ruby/ruby.patch", "ruby/valgrind.patch", "test/benchmark/bench.rb", "test/test_helper.rb", "test/unit/test_bleak_house.rb", "TODO", "bleak_house.gemspec"]
|
19
18
|
s.homepage = %q{http://blog.evanweaver.com/files/doc/fauna/bleak_house/}
|
20
19
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Bleak_house", "--main", "README"]
|
21
20
|
s.require_paths = ["lib", "ext"]
|
22
21
|
s.rubyforge_project = %q{fauna}
|
23
|
-
s.rubygems_version = %q{1.3.
|
22
|
+
s.rubygems_version = %q{1.3.4}
|
24
23
|
s.signing_key = %q{/Users/eweaver/p/configuration/gem_certificates/evan_weaver-original-private_key.pem}
|
25
24
|
s.summary = %q{A library for finding memory leaks.}
|
26
25
|
s.test_files = ["test/test_helper.rb", "test/unit/test_bleak_house.rb"]
|
27
26
|
|
28
27
|
if s.respond_to? :specification_version then
|
29
28
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
30
|
-
s.specification_version =
|
29
|
+
s.specification_version = 3
|
31
30
|
|
32
31
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
33
|
-
s.add_development_dependency(%q<echoe>, [">= 0"])
|
34
32
|
else
|
35
|
-
s.add_dependency(%q<echoe>, [">= 0"])
|
36
33
|
end
|
37
34
|
else
|
38
|
-
s.add_dependency(%q<echoe>, [">= 0"])
|
39
35
|
end
|
40
36
|
end
|
data/ext/build_ruby.rb
CHANGED
@@ -62,8 +62,29 @@ else
|
|
62
62
|
puts "** Patch Ruby"
|
63
63
|
execute("patch -p0 < '#{source_dir}/ruby.patch'")
|
64
64
|
|
65
|
+
puts "** Determining OpenSSL version"
|
66
|
+
cmd = open("|openssl version")
|
67
|
+
openssl_version_string = cmd.gets
|
68
|
+
cmd.close
|
69
|
+
|
70
|
+
if openssl_version_string.nil?
|
71
|
+
puts "** Could not determine openssl version, skipping patches"
|
72
|
+
else
|
73
|
+
openssl_version = openssl_version_string.split(/\s/)[1]
|
74
|
+
if openssl_version >= "0.9.8j"
|
75
|
+
puts "** Applying openssl patches to build against #{openssl_version_string}"
|
76
|
+
execute( "patch -p3 < '#{source_dir}/ruby-1.8.6-openssl.patch'")
|
77
|
+
else
|
78
|
+
puts "** No patching need for #{openssl_version_string}"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
env = Config::CONFIG.map do |key, value|
|
83
|
+
"#{key}=#{value.inspect}" if key.upcase == key and value
|
84
|
+
end.compact.join(" ")
|
85
|
+
|
65
86
|
puts "** Configure"
|
66
|
-
execute("./configure #{Config::CONFIG['configure_args']}".sub("'--enable-shared'", ""))
|
87
|
+
execute("env #{env} ./configure #{Config::CONFIG['configure_args']}".sub("'--enable-shared'", ""))
|
67
88
|
|
68
89
|
puts "Patch Makefile"
|
69
90
|
# FIXME Why is this necessary?
|
@@ -86,25 +107,21 @@ else
|
|
86
107
|
constants.each do | const, key |
|
87
108
|
config_h.gsub!(/#define #{const} .*/, "#define #{const} \"#{Config::CONFIG[key]}\"")
|
88
109
|
end
|
89
|
-
|
90
110
|
File.open('config.h', 'w') do |f|
|
91
111
|
f.puts(config_h)
|
92
112
|
end
|
93
113
|
|
94
|
-
env = Config::CONFIG.map do |key, value|
|
95
|
-
"#{key}=#{value.inspect}" if key.upcase == key and value
|
96
|
-
end.compact.join(" ")
|
97
|
-
|
98
114
|
puts "** Make"
|
99
115
|
execute("env #{env} make")
|
100
116
|
|
101
|
-
|
117
|
+
bleak_binary = "#{Config::CONFIG['bindir']}/ruby-bleak-house"
|
118
|
+
ruby_binary = Config::CONFIG["RUBY_INSTALL_NAME"] || "ruby"
|
102
119
|
|
103
120
|
puts "** Install binary"
|
104
|
-
if File.exist?
|
121
|
+
if File.exist? ruby_binary
|
105
122
|
# Avoid "Text file busy" error
|
106
|
-
File.delete
|
107
|
-
exec("cp
|
123
|
+
File.delete bleak_binary if File.exist? bleak_binary
|
124
|
+
exec("cp ./#{ruby_binary} #{bleak_binary}; chmod 755 #{bleak_binary}")
|
108
125
|
else
|
109
126
|
raise
|
110
127
|
end
|
data/lib/bleak_house/hook.rb
CHANGED
@@ -3,7 +3,7 @@ module BleakHouse
|
|
3
3
|
# The body of the exit handler and <tt>SIGUSR2</tt> trap. It writes a snapshot to a dumpfile named after the current Process.pid.
|
4
4
|
def self.hook
|
5
5
|
@count ||= 0
|
6
|
-
filename = "/tmp/bleak
|
6
|
+
filename = "/tmp/bleak.%s.%03i.dump" % [Process.pid,@count]
|
7
7
|
STDERR.puts "** BleakHouse: working..."
|
8
8
|
BleakHouse.snapshot(filename)
|
9
9
|
STDERR.puts "** BleakHouse: complete\n** Bleakhouse: Run 'bleak #{filename}' to analyze."
|
@@ -20,4 +20,4 @@ end
|
|
20
20
|
|
21
21
|
Kernel.trap("USR2") do
|
22
22
|
BleakHouse.hook
|
23
|
-
end
|
23
|
+
end
|
@@ -0,0 +1,157 @@
|
|
1
|
+
This patch backports changes from ruby 1.8.7 which only includes the
|
2
|
+
openssl prototypes for functions that are not in the system openssl
|
3
|
+
library. This fixes #254307 and protects against similar issues with
|
4
|
+
future openssl versions.
|
5
|
+
|
6
|
+
diff -u ruby-1.8.6_p287-r10/work/ruby-1.8.6-p287/ext/openssl/extconf.rb ruby-1.8.7_p72-r1/work/ruby-1.8.7-p72/ext/openssl/extconf.rb
|
7
|
+
--- ruby-1.8.6_p287-r10/work/ruby-1.8.6-p287/ext/openssl/openssl_missing.c 2007-02-13 00:01:19.000000000 +0100
|
8
|
+
+++ ruby-1.8.7_p72-r1/work/ruby-1.8.7-p72/ext/openssl/openssl_missing.c 2008-05-19 05:00:52.000000000 +0200
|
9
|
+
@@ -22,17 +22,15 @@
|
10
|
+
#include "openssl_missing.h"
|
11
|
+
|
12
|
+
#if !defined(HAVE_HMAC_CTX_COPY)
|
13
|
+
-int
|
14
|
+
+void
|
15
|
+
HMAC_CTX_copy(HMAC_CTX *out, HMAC_CTX *in)
|
16
|
+
{
|
17
|
+
- if (!out || !in) return 0;
|
18
|
+
+ if (!out || !in) return;
|
19
|
+
memcpy(out, in, sizeof(HMAC_CTX));
|
20
|
+
|
21
|
+
- if (!EVP_MD_CTX_copy(&out->md_ctx, &in->md_ctx)
|
22
|
+
- || !EVP_MD_CTX_copy(&out->i_ctx, &in->i_ctx)
|
23
|
+
- || !EVP_MD_CTX_copy(&out->o_ctx, &in->o_ctx))
|
24
|
+
- return 0;
|
25
|
+
- return 1;
|
26
|
+
+ EVP_MD_CTX_copy(&out->md_ctx, &in->md_ctx);
|
27
|
+
+ EVP_MD_CTX_copy(&out->i_ctx, &in->i_ctx);
|
28
|
+
+ EVP_MD_CTX_copy(&out->o_ctx, &in->o_ctx);
|
29
|
+
}
|
30
|
+
#endif /* HAVE_HMAC_CTX_COPY */
|
31
|
+
#endif /* NO_HMAC */
|
32
|
+
diff -u ruby-1.8.6_p287-r10/work/ruby-1.8.6-p287/ext/openssl/openssl_missing.h ruby-1.8.7_p72-r1/work/ruby-1.8.7-p72/ext/openssl/openssl_missing.h
|
33
|
+
--- ruby-1.8.6_p287-r10/work/ruby-1.8.6-p287/ext/openssl/openssl_missing.h 2008-08-04 06:43:34.000000000 +0200
|
34
|
+
+++ ruby-1.8.7_p72-r1/work/ruby-1.8.7-p72/ext/openssl/openssl_missing.h 2008-08-04 06:44:17.000000000 +0200
|
35
|
+
@@ -60,14 +60,33 @@
|
36
|
+
(char *(*)())d2i_PKCS7_RECIP_INFO, (char *)ri)
|
37
|
+
#endif
|
38
|
+
|
39
|
+
+#if !defined(HAVE_EVP_MD_CTX_INIT)
|
40
|
+
void HMAC_CTX_init(HMAC_CTX *ctx);
|
41
|
+
-int HMAC_CTX_copy(HMAC_CTX *out, HMAC_CTX *in);
|
42
|
+
+#endif
|
43
|
+
+
|
44
|
+
+#if !defined(HAVE_HMAC_CTX_COPY)
|
45
|
+
+void HMAC_CTX_copy(HMAC_CTX *out, HMAC_CTX *in);
|
46
|
+
+#endif
|
47
|
+
+
|
48
|
+
+#if !defined(HAVE_HMAC_CTX_CLEANUP)
|
49
|
+
void HMAC_CTX_cleanup(HMAC_CTX *ctx);
|
50
|
+
+#endif
|
51
|
+
|
52
|
+
+#if !defined(HAVE_EVP_MD_CTX_CREATE)
|
53
|
+
EVP_MD_CTX *EVP_MD_CTX_create(void);
|
54
|
+
+#endif
|
55
|
+
+
|
56
|
+
+#if !defined(HAVE_EVP_MD_CTX_INIT)
|
57
|
+
void EVP_MD_CTX_init(EVP_MD_CTX *ctx);
|
58
|
+
+#endif
|
59
|
+
+
|
60
|
+
+#if !defined(HAVE_EVP_MD_CTX_CLEANUP)
|
61
|
+
int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx);
|
62
|
+
+#endif
|
63
|
+
+
|
64
|
+
+#if !defined(HAVE_EVP_MD_CTX_DESTROY)
|
65
|
+
void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);
|
66
|
+
+#endif
|
67
|
+
|
68
|
+
#if !defined(HAVE_EVP_CIPHER_CTX_COPY)
|
69
|
+
int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, EVP_CIPHER_CTX *in);
|
70
|
+
@@ -111,19 +130,54 @@
|
71
|
+
#define OPENSSL_cleanse(p, l) memset(p, 0, l)
|
72
|
+
#endif
|
73
|
+
|
74
|
+
+#if !defined(HAVE_X509_STORE_SET_EX_DATA)
|
75
|
+
void *X509_STORE_get_ex_data(X509_STORE *str, int idx);
|
76
|
+
int X509_STORE_set_ex_data(X509_STORE *str, int idx, void *data);
|
77
|
+
+#endif
|
78
|
+
+
|
79
|
+
+#if !defined(HAVE_X509_CRL_SET_VERSION)
|
80
|
+
int X509_CRL_set_version(X509_CRL *x, long version);
|
81
|
+
+#endif
|
82
|
+
+
|
83
|
+
+#if !defined(HAVE_X509_CRL_SET_ISSUER_NAME)
|
84
|
+
int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name);
|
85
|
+
+#endif
|
86
|
+
+
|
87
|
+
+#if !defined(HAVE_X509_CRL_SORT)
|
88
|
+
int X509_CRL_sort(X509_CRL *c);
|
89
|
+
+#endif
|
90
|
+
+
|
91
|
+
+#if !defined(HAVE_X509_CRL_ADD0_REVOKED)
|
92
|
+
int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev);
|
93
|
+
+#endif
|
94
|
+
+
|
95
|
+
+#if !defined(HAVE_BN_MOD_SQR)
|
96
|
+
int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
|
97
|
+
+#endif
|
98
|
+
+
|
99
|
+
+#if !defined(HAVE_BN_MOD_ADD)
|
100
|
+
int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, BN_CTX *ctx);
|
101
|
+
+#endif
|
102
|
+
+
|
103
|
+
+#if !defined(HAVE_BN_MOD_SUB)
|
104
|
+
int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, BN_CTX *ctx);
|
105
|
+
+#endif
|
106
|
+
+
|
107
|
+
+#if !defined(HAVE_BN_RAND_RANGE)
|
108
|
+
int BN_rand_range(BIGNUM *r, BIGNUM *range);
|
109
|
+
+#endif
|
110
|
+
+
|
111
|
+
+#if !defined(HAVE_BN_PSEUDO_RAND_RANGE)
|
112
|
+
int BN_pseudo_rand_range(BIGNUM *r, BIGNUM *range);
|
113
|
+
+#endif
|
114
|
+
+
|
115
|
+
+#if !defined(HAVE_CONF_GET1_DEFAULT_CONFIG_FILE)
|
116
|
+
char *CONF_get1_default_config_file(void);
|
117
|
+
+#endif
|
118
|
+
+
|
119
|
+
+#if !defined(HAVE_PEM_DEF_CALLBACK)
|
120
|
+
int PEM_def_callback(char *buf, int num, int w, void *key);
|
121
|
+
+#endif
|
122
|
+
|
123
|
+
#if defined(__cplusplus)
|
124
|
+
}
|
125
|
+
diff -u ruby-1.8.6_p287-r10/work/ruby-1.8.6-p287/ext/openssl/ossl_hmac.c ruby-1.8.7_p72-r1/work/ruby-1.8.7-p72/ext/openssl/ossl_hmac.c
|
126
|
+
--- ruby-1.8.6_p287-r10/work/ruby-1.8.6-p287/ext/openssl/ossl_hmac.c 2007-03-12 05:12:32.000000000 +0100
|
127
|
+
+++ ruby-1.8.7_p72-r1/work/ruby-1.8.7-p72/ext/openssl/ossl_hmac.c 2008-05-19 05:00:52.000000000 +0200
|
128
|
+
@@ -81,12 +87,15 @@
|
129
|
+
GetHMAC(self, ctx1);
|
130
|
+
SafeGetHMAC(other, ctx2);
|
131
|
+
|
132
|
+
- if (!HMAC_CTX_copy(ctx1, ctx2)) {
|
133
|
+
- ossl_raise(eHMACError, NULL);
|
134
|
+
- }
|
135
|
+
+ HMAC_CTX_copy(ctx1, ctx2);
|
136
|
+
return self;
|
137
|
+
}
|
138
|
+
|
139
|
+
+/*
|
140
|
+
+ * call-seq:
|
141
|
+
+ * hmac.update(string) -> self
|
142
|
+
+ *
|
143
|
+
+ */
|
144
|
+
static VALUE
|
145
|
+
ossl_hmac_update(VALUE self, VALUE data)
|
146
|
+
{
|
147
|
+
@@ -104,9 +113,7 @@
|
148
|
+
{
|
149
|
+
HMAC_CTX final;
|
150
|
+
|
151
|
+
- if (!HMAC_CTX_copy(&final, ctx)) {
|
152
|
+
- ossl_raise(eHMACError, NULL);
|
153
|
+
- }
|
154
|
+
+ HMAC_CTX_copy(&final, ctx);
|
155
|
+
if (!(*buf = OPENSSL_malloc(HMAC_size(&final)))) {
|
156
|
+
HMAC_CTX_cleanup(&final);
|
157
|
+
OSSL_Debug("Allocating %d mem", HMAC_size(&final));
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bleak_house
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: "4.3"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Weaver
|
@@ -30,19 +30,10 @@ cert_chain:
|
|
30
30
|
yZ0=
|
31
31
|
-----END CERTIFICATE-----
|
32
32
|
|
33
|
-
date: 2009-
|
33
|
+
date: 2009-08-15 00:00:00 -04:00
|
34
34
|
default_executable:
|
35
|
-
dependencies:
|
36
|
-
|
37
|
-
name: echoe
|
38
|
-
type: :development
|
39
|
-
version_requirement:
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
requirements:
|
42
|
-
- - ">="
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version: "0"
|
45
|
-
version:
|
35
|
+
dependencies: []
|
36
|
+
|
46
37
|
description: A library for finding memory leaks.
|
47
38
|
email: ""
|
48
39
|
executables:
|
@@ -75,6 +66,7 @@ files:
|
|
75
66
|
- Manifest
|
76
67
|
- Rakefile
|
77
68
|
- README
|
69
|
+
- ruby/ruby-1.8.6-openssl.patch
|
78
70
|
- ruby/ruby-1.8.6-p286.tar.bz2
|
79
71
|
- ruby/ruby.patch
|
80
72
|
- ruby/valgrind.patch
|
@@ -85,6 +77,8 @@ files:
|
|
85
77
|
- bleak_house.gemspec
|
86
78
|
has_rdoc: true
|
87
79
|
homepage: http://blog.evanweaver.com/files/doc/fauna/bleak_house/
|
80
|
+
licenses: []
|
81
|
+
|
88
82
|
post_install_message:
|
89
83
|
rdoc_options:
|
90
84
|
- --line-numbers
|
@@ -111,9 +105,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
105
|
requirements: []
|
112
106
|
|
113
107
|
rubyforge_project: fauna
|
114
|
-
rubygems_version: 1.3.
|
108
|
+
rubygems_version: 1.3.4
|
115
109
|
signing_key:
|
116
|
-
specification_version:
|
110
|
+
specification_version: 3
|
117
111
|
summary: A library for finding memory leaks.
|
118
112
|
test_files:
|
119
113
|
- test/test_helper.rb
|
metadata.gz.sig
CHANGED
Binary file
|