Skip to content

Commit 4c8f7cd

Browse files
committed
Pullup ticket #6988 - requested by taca
lang/ruby34: Security fix Revisions pulled up: - lang/ruby/rubyversion.mk 1.301 - lang/ruby34/Makefile 1.6 - lang/ruby34/distinfo 1.8 - lang/ruby34/patches/patch-ext_win32_lib_win32_resolv.rb 1.1 - lang/ruby34/patches/patch-ext_win32_resolv_resolv.c 1.1 - lang/ruby34/patches/patch-lib_resolv.rb 1.1 - lang/ruby34/patches/patch-test_resolv_test__dns.rb 1.1 --- Module Name: pkgsrc Committed By: taca Date: Sun Jul 13 15:39:55 UTC 2025 Modified Files: pkgsrc/lang/ruby: rubyversion.mk pkgsrc/lang/ruby34: Makefile distinfo Added Files: pkgsrc/lang/ruby34/patches: patch-ext_win32_lib_win32_resolv.rb patch-ext_win32_resolv_resolv.c patch-lib_resolv.rb patch-test_resolv_test__dns.rb Log Message: lang/ruby34: update resolv gem Update resolve gem to 0.6.2 to fix security problem of CVE-2025-24294. Bump PKGREVISION.
1 parent aefbf89 commit 4c8f7cd

7 files changed

Lines changed: 386 additions & 5 deletions

File tree

lang/ruby/rubyversion.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $NetBSD: rubyversion.mk,v 1.298.2.2 2025/07/17 02:32:56 maya Exp $
1+
# $NetBSD: rubyversion.mk,v 1.298.2.3 2025/07/17 02:45:42 maya Exp $
22
#
33

44
# This file determines which Ruby version is used as a dependency for
@@ -494,7 +494,7 @@ RUBY_PSTORE_VER= 0.1.4
494494
RUBY_RDOC_VER= 6.10.0
495495
RUBY_READLINE_VER= 0.0.4
496496
RUBY_RELINE_VER= 0.6.0
497-
RUBY_RESOLV_VER= 0.6.0
497+
RUBY_RESOLV_VER= 0.6.2
498498
RUBY_RUBY2_KEYWORDS_VER= 0.0.5
499499
RUBY_SECURERANDOM_VER= 0.4.1
500500
RUBY_SET_VER= 1.1.1

lang/ruby34/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# $NetBSD: Makefile,v 1.5 2025/06/14 06:54:46 taca Exp $
1+
# $NetBSD: Makefile,v 1.5.2.1 2025/07/17 02:45:42 maya Exp $
22

33
DISTNAME= ${RUBY_DISTNAME}
44
PKGNAME= ${RUBY_PKGPREFIX}-${RUBY_VERSION}
5-
PKGREVISION= 1
5+
PKGREVISION= 2
66
CATEGORIES= lang ruby
77
MASTER_SITES= ${MASTER_SITE_RUBY}
88

lang/ruby34/distinfo

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
1-
$NetBSD: distinfo,v 1.7 2025/06/14 06:54:46 taca Exp $
1+
$NetBSD: distinfo,v 1.7.2.1 2025/07/17 02:45:42 maya Exp $
22

33
BLAKE2s (ruby-3.4.4.tar.xz) = b4fa799d30359f9f9b22f403205e49d782e3f78d7496dc5bba16acc8a62d9bec
44
SHA512 (ruby-3.4.4.tar.xz) = 0d258cf790daad424c866404b5cbdc8adba0e4e13764847a89adf2335229e5184095c9f3e9594705897697e48bcc322d9a9f919b04047abb2075daca9fce8871
55
Size (ruby-3.4.4.tar.xz) = 17255388 bytes
66
SHA1 (patch-common.mk) = c23eed58427b2fd4ba8fdb3692f609701a666c6d
77
SHA1 (patch-configure) = 9df201049bb38188f8409ee4572d3a6bb774013b
88
SHA1 (patch-ext_openssl_openssl__missing.h) = 3f8d79736fd14806dfaf76e333eec63ff3ff5890
9+
SHA1 (patch-ext_win32_lib_win32_resolv.rb) = 7d7d9387523ce92a7924cbf235dcf3fb10d759a4
10+
SHA1 (patch-ext_win32_resolv_resolv.c) = 3c4217d24c2dc2d27ed5935be778009dd89490f0
911
SHA1 (patch-include_ruby_internal_static__assert.h) = 7d5c3ae7ff674b9b34639924fcf08237164de9f8
1012
SHA1 (patch-lib_mkmf.rb) = ea66bc4e42d2b15edfcd8ceefa9b94d07a3cdd0f
1113
SHA1 (patch-lib_rdoc_encoding.rb) = 0e82d2942d9bfcb67dc7c994889d7bc5ec2ae85a
14+
SHA1 (patch-lib_resolv.rb) = ec152623f6f3cdcbf6c47f70f511db431551fd30
1215
SHA1 (patch-lib_rubygems.rb) = 81af71ae9b0c3fef2ad1de88a542b3ece14b4519
1316
SHA1 (patch-lib_rubygems_commands_setup__command.rb) = 66c475a5308deb2ed5096b88cf65549732f87421
1417
SHA1 (patch-lib_rubygems_config__file.rb) = 584f8cd9ef1d1b9bf25efc7e85c2219166db7ac9
@@ -18,6 +21,7 @@ SHA1 (patch-lib_rubygems_installer.rb) = 4ef74b4f79837a929e81bcd0e7eba9061a44230
1821
SHA1 (patch-lib_rubygems_platform.rb) = bde36a8fc1ba2fbf4d6fb8829bc116fb4d09b404
1922
SHA1 (patch-lib_rubygems_specification.rb) = a3154185ef89fb33e699dd54b19a8e274f3275e0
2023
SHA1 (patch-prism_prism.c) = 7f4221b01b4b4b412ba30050a886773b7877403c
24+
SHA1 (patch-test_resolv_test__dns.rb) = 57cbaff16dcfd1caf6345c8e532974cecf171729
2125
SHA1 (patch-test_rubygems_test__gem.rb) = 32f7c7d7f8a024c045d78c2bce93944fc3113d04
2226
SHA1 (patch-thread__pthread.c) = 7c1231933a2d6ce9d56891ab512371841697fbca
2327
SHA1 (patch-tool_ifchange) = 1803bb6a1836e232dcabcf38f11c9881dbf726ea
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
$NetBSD: patch-ext_win32_lib_win32_resolv.rb,v 1.1.2.2 2025/07/17 02:45:42 maya Exp $
2+
3+
Update resolv gem to 0.6.2.
4+
5+
--- ext/win32/lib/win32/resolv.rb.orig 2025-05-14 03:11:06.000000000 +0000
6+
+++ ext/win32/lib/win32/resolv.rb
7+
@@ -4,13 +4,8 @@
8+
9+
=end
10+
11+
-require 'win32/registry'
12+
-
13+
module Win32
14+
module Resolv
15+
- API = Registry::API
16+
- Error = Registry::Error
17+
-
18+
def self.get_hosts_path
19+
path = get_hosts_dir
20+
path = File.expand_path('hosts', path)
21+
@@ -47,89 +42,103 @@ module Win32
22+
# Windows NT
23+
#====================================================================
24+
module Resolv
25+
- module SZ
26+
- refine Registry do
27+
- # ad hoc workaround for broken registry
28+
- def read_s(key)
29+
- type, str = read(key)
30+
- unless type == Registry::REG_SZ
31+
- warn "Broken registry, #{name}\\#{key} was #{Registry.type2name(type)}, ignored"
32+
- return String.new
33+
+ begin
34+
+ require 'win32/registry'
35+
+ module SZ
36+
+ refine Registry do
37+
+ # ad hoc workaround for broken registry
38+
+ def read_s(key)
39+
+ type, str = read(key)
40+
+ unless type == Registry::REG_SZ
41+
+ warn "Broken registry, #{name}\\#{key} was #{Registry.type2name(type)}, ignored"
42+
+ return String.new
43+
+ end
44+
+ str
45+
end
46+
- str
47+
end
48+
end
49+
+ using SZ
50+
+ rescue LoadError
51+
+ require "open3"
52+
end
53+
- using SZ
54+
55+
TCPIP_NT = 'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters'
56+
57+
class << self
58+
private
59+
def get_hosts_dir
60+
- Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT) do |reg|
61+
- reg.read_s_expand('DataBasePath')
62+
- end
63+
+ get_item_property(TCPIP_NT, 'DataBasePath', expand: true)
64+
end
65+
66+
def get_info
67+
search = nil
68+
nameserver = get_dns_server_list
69+
- Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT) do |reg|
70+
- begin
71+
- slist = reg.read_s('SearchList')
72+
- search = slist.split(/,\s*/) unless slist.empty?
73+
- rescue Registry::Error
74+
- end
75+
76+
- if add_search = search.nil?
77+
- search = []
78+
- begin
79+
- nvdom = reg.read_s('NV Domain')
80+
- unless nvdom.empty?
81+
- @search = [ nvdom ]
82+
- if reg.read_i('UseDomainNameDevolution') != 0
83+
- if /^\w+\./ =~ nvdom
84+
- devo = $'
85+
- end
86+
- end
87+
+ slist = get_item_property(TCPIP_NT, 'SearchList')
88+
+ search = slist.split(/,\s*/) unless slist.empty?
89+
+
90+
+ if add_search = search.nil?
91+
+ search = []
92+
+ nvdom = get_item_property(TCPIP_NT, 'NV Domain')
93+
+
94+
+ unless nvdom.empty?
95+
+ @search = [ nvdom ]
96+
+ udmnd = get_item_property(TCPIP_NT, 'UseDomainNameDevolution').to_i
97+
+ if udmnd != 0
98+
+ if /^\w+\./ =~ nvdom
99+
+ devo = $'
100+
end
101+
- rescue Registry::Error
102+
end
103+
end
104+
+ end
105+
106+
- reg.open('Interfaces') do |h|
107+
- h.each_key do |iface, |
108+
- h.open(iface) do |regif|
109+
- next unless ns = %w[NameServer DhcpNameServer].find do |key|
110+
- begin
111+
- ns = regif.read_s(key)
112+
- rescue Registry::Error
113+
- else
114+
- break ns.split(/[,\s]\s*/) unless ns.empty?
115+
- end
116+
+ ifs = if defined?(Win32::Registry)
117+
+ Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT + '\Interfaces') do |reg|
118+
+ reg.keys
119+
+ rescue Registry::Error
120+
+ []
121+
end
122+
- next if (nameserver & ns).empty?
123+
+ else
124+
+ cmd = "Get-ChildItem 'HKLM:\\#{TCPIP_NT}\\Interfaces' | ForEach-Object { $_.PSChildName }"
125+
+ output, _ = Open3.capture2('powershell', '-Command', cmd)
126+
+ output.split(/\n+/)
127+
+ end
128+
129+
- if add_search
130+
- begin
131+
- [ 'Domain', 'DhcpDomain' ].each do |key|
132+
- dom = regif.read_s(key)
133+
- unless dom.empty?
134+
- search.concat(dom.split(/,\s*/))
135+
- break
136+
- end
137+
- end
138+
- rescue Registry::Error
139+
- end
140+
- end
141+
+ ifs.each do |iface|
142+
+ next unless ns = %w[NameServer DhcpNameServer].find do |key|
143+
+ ns = get_item_property(TCPIP_NT + '\Interfaces' + "\\#{iface}", key)
144+
+ break ns.split(/[,\s]\s*/) unless ns.empty?
145+
+ end
146+
+
147+
+ next if (nameserver & ns).empty?
148+
+
149+
+ if add_search
150+
+ [ 'Domain', 'DhcpDomain' ].each do |key|
151+
+ dom = get_item_property(TCPIP_NT + '\Interfaces' + "\\#{iface}", key)
152+
+ unless dom.empty?
153+
+ search.concat(dom.split(/,\s*/))
154+
+ break
155+
end
156+
end
157+
end
158+
- search << devo if add_search and devo
159+
end
160+
+ search << devo if add_search and devo
161+
[ search.uniq, nameserver.uniq ]
162+
end
163+
+
164+
+ def get_item_property(path, name, expand: false)
165+
+ if defined?(Win32::Registry)
166+
+ Registry::HKEY_LOCAL_MACHINE.open(path) do |reg|
167+
+ expand ? reg.read_s_expand(name) : reg.read_s(name)
168+
+ rescue Registry::Error
169+
+ ""
170+
+ end
171+
+ else
172+
+ cmd = "Get-ItemProperty -Path 'HKLM:\\#{path}' -Name '#{name}' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty '#{name}'"
173+
+ output, _ = Open3.capture2('powershell', '-Command', cmd)
174+
+ output.strip
175+
+ end
176+
+ end
177+
end
178+
end
179+
end
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
$NetBSD: patch-ext_win32_resolv_resolv.c,v 1.1.2.2 2025/07/17 02:45:43 maya Exp $
2+
3+
Update resolv gem to 0.6.2.
4+
5+
--- ext/win32/resolv/resolv.c.orig 2025-05-14 03:11:06.000000000 +0000
6+
+++ ext/win32/resolv/resolv.c
7+
@@ -13,6 +13,8 @@ w32error_make_error(DWORD e)
8+
return rb_class_new_instance(1, &code, rb_path2class("Win32::Resolv::Error"));
9+
}
10+
11+
+NORETURN(static void w32error_raise(DWORD e));
12+
+
13+
static void
14+
w32error_raise(DWORD e)
15+
{

0 commit comments

Comments
 (0)