safe_regexp 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/safe_regexp.rb +4 -4
- data/lib/safe_regexp/version.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d41a513f71c9af110f801100927df7c2f99abb869b131bd5ebdd9694eec9f740
|
4
|
+
data.tar.gz: ae1565f7ef31858ecb5c64e0568dd8850f4192f594ce42d54564f616b8810306
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be06fe147c0df803974e4c4bbf23b652aa475d45048e757095ba4dd5b0f25d632f5e2aa71d69627cce6e0b9e48d3ff7e3cc8c9ad7a22b7f1cdcd1e138c57c12b
|
7
|
+
data.tar.gz: 500711ebe4a39248c8f7d8c7b16fea6bf7aaaa71696b5b95e00c58b62a520ce0f116a215bedfabd55278a79fd0ea0afa03b3ce5ed03e11337b5dd4836482b863
|
data/lib/safe_regexp.rb
CHANGED
@@ -8,7 +8,7 @@ module SafeRegexp
|
|
8
8
|
end
|
9
9
|
|
10
10
|
class << self
|
11
|
-
def execute(regex, method,
|
11
|
+
def execute(regex, method, *args, timeout: 1, keepalive: 10)
|
12
12
|
retried = false
|
13
13
|
|
14
14
|
begin
|
@@ -16,7 +16,7 @@ module SafeRegexp
|
|
16
16
|
|
17
17
|
begin
|
18
18
|
read, write, pid = executor
|
19
|
-
Marshal.dump([regex, method,
|
19
|
+
Marshal.dump([regex, method, args, keepalive], write)
|
20
20
|
rescue Errno::EPIPE
|
21
21
|
# keepalive already killed the process, but we don't check before sending
|
22
22
|
# since that would be a race condition and cause overhead for the 99.9% case
|
@@ -87,12 +87,12 @@ module SafeRegexp
|
|
87
87
|
loop do
|
88
88
|
break unless IO.select([in_read], nil, nil, keepalive)
|
89
89
|
begin
|
90
|
-
regexp, method,
|
90
|
+
regexp, method, args, keepalive = Marshal.load(in_read)
|
91
91
|
rescue EOFError # someone killed this fork
|
92
92
|
break
|
93
93
|
end
|
94
94
|
begin
|
95
|
-
result = regexp.public_send(method,
|
95
|
+
result = regexp.public_send(method, *args)
|
96
96
|
result = result.to_a if result.is_a?(MatchData) # cannot be dumped
|
97
97
|
rescue RESCUED_EXCEPTION
|
98
98
|
result = $!
|
data/lib/safe_regexp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: safe_regexp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: michael@grosser.it
|
@@ -38,8 +38,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: '0'
|
40
40
|
requirements: []
|
41
|
-
|
42
|
-
rubygems_version: 2.7.6
|
41
|
+
rubygems_version: 3.0.3
|
43
42
|
signing_key:
|
44
43
|
specification_version: 4
|
45
44
|
summary: Backtracking bomb safety / timeouts for regular expressions
|