Skip to content

Commit

Permalink
(PA-6549) Fix warning:undefining the allocator of T_DATA class for RHEL7
Browse files Browse the repository at this point in the history
This commit adds a patch that patches selinux_ruby_wrap.c in RHEL 7 and RHEL
FIPS 7 to fix the warning: undefining the allocator of T_DATA class
SWIG::TYPE_p_selabel_handle. These platforms cannot use the original patch
(even with increased fuzz values),
selinuxswig_ruby_undefining_allocator.patch, that fixed the warning for other
platforms. RHEL 7 and RHEL FIPS 7 use an older version of swig and due to
that, have an older version of selinux_ruby_wrap.c.
  • Loading branch information
AriaXLi committed Jun 18, 2024
1 parent 2a1a136 commit 2cbdf64
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 1 deletion.
13 changes: 12 additions & 1 deletion configs/components/_base-ruby-selinux.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

pkg.add_source("file://resources/patches/ruby-selinux/selinuxswig_ruby_wrap.patch")
pkg.add_source("file://resources/patches/ruby-selinux/selinuxswig_ruby_undefining_allocator.patch")
pkg.add_source("file://resources/patches/ruby-selinux/undefining_allocator_el_7.patch")

# These can be overridden by the including component.
ruby_version ||= settings[:ruby_version]
Expand Down Expand Up @@ -82,7 +83,17 @@
unless platform.name =~ /^(debian-12|ubuntu-24|fedora-40)/
steps << "#{platform.patch} --strip=0 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../selinuxswig_ruby_wrap.patch"
end
steps << "#{platform.patch} --strip=0 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../selinuxswig_ruby_undefining_allocator.patch"
# EL 7 uses an older version of swig (2.0) so a different patch is needed to
# fix warning:undefining the allocator of T_DATA class
if platform.name =~ /el-7|redhatfips-7/
steps << "#{platform.patch} --strip=0 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../undefining_allocator_el_7.patch"
else
# Ubuntu 24 & Fedora 40 use a newer swig that already has the fix that's
# being patched
unless platform.name =~ /^(ubuntu-24|fedora-40)/
steps << "#{platform.patch} --strip=0 --fuzz=0 --ignore-whitespace --no-backup-if-mismatch < ../selinuxswig_ruby_undefining_allocator.patch"
end
end
end

# libselinux 3.3 is the minimum version we want to build on RHEL 9, but the
Expand Down
10 changes: 10 additions & 0 deletions resources/patches/ruby-selinux/undefining_allocator_el_7.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
--- selinuxswig_ruby_wrap_orig.c 2024-06-14 18:03:11.946019756 +0000
+++ selinuxswig_ruby_wrap.c 2024-06-14 18:08:23.057169863 +0000
@@ -1486,7 +1486,7 @@
_cSWIG_Pointer = rb_define_class_under(_mSWIG, "Pointer", rb_cObject);
rb_undef_method(CLASS_OF(_cSWIG_Pointer), "new");
}
- klass = rb_define_class_under(_mSWIG, klass_name, _cSWIG_Pointer);
+ rb_undef_alloc_func(rb_define_class_under(_mSWIG, klass_name, _cSWIG_Pointer));
free((void *) klass_name);
}

0 comments on commit 2cbdf64

Please sign in to comment.