commit:     abff8d98259fb1664c317f62661df428cb8a68ab
Author:     Hans de Graaff <graaff <AT> gentoo <DOT> org>
AuthorDate: Wed Dec  6 10:40:03 2023 +0000
Commit:     Hans de Graaff <graaff <AT> gentoo <DOT> org>
CommitDate: Wed Dec  6 10:40:03 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=abff8d98

dev-ruby/ruby-shadow: fix ruby32 compatibility

Signed-off-by: Hans de Graaff <graaff <AT> gentoo.org>

 .../files/ruby-shadow-2.5.1-ruby32-taint.patch     | 54 ++++++++++++++++++++++
 dev-ruby/ruby-shadow/ruby-shadow-2.5.1.ebuild      |  5 +-
 2 files changed, 58 insertions(+), 1 deletion(-)

diff --git a/dev-ruby/ruby-shadow/files/ruby-shadow-2.5.1-ruby32-taint.patch 
b/dev-ruby/ruby-shadow/files/ruby-shadow-2.5.1-ruby32-taint.patch
new file mode 100644
index 000000000000..4c66e63fbb1a
--- /dev/null
+++ b/dev-ruby/ruby-shadow/files/ruby-shadow-2.5.1-ruby32-taint.patch
@@ -0,0 +1,54 @@
+From 70330521b99e84c8f7445c213dfde0768f45a690 Mon Sep 17 00:00:00 2001
+From: Michael Hashizume <[email protected]>
+Date: Thu, 20 Oct 2022 13:28:09 -0700
+Subject: [PATCH] Removes taint checking functions
+
+Taint checking has been completely removed from Ruby as of Ruby
+3.2.0. This commit removes taint checking functions from ruby-
+shadow.
+
+See https://bugs.ruby-lang.org/issues/16131
+---
+ pwd/shadow.c    | 6 +++---
+ shadow/shadow.c | 4 ++--
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/pwd/shadow.c b/pwd/shadow.c
+index eeb96d4..46313d4 100644
+--- a/pwd/shadow.c
++++ b/pwd/shadow.c
+@@ -56,8 +56,8 @@ static VALUE convert_pw_struct( struct passwd *entry )
+ {
+   /* Hmm. Why custom pw_change instead of sp_lstchg? */
+   return rb_struct_new(rb_sPasswdEntry,
+-         rb_tainted_str_new2(entry->pw_name), /* sp_namp */
+-         rb_tainted_str_new2(entry->pw_passwd), /* sp_pwdp, encryped password 
*/
++         rb_str_new2(entry->pw_name), /* sp_namp */
++         rb_str_new2(entry->pw_passwd), /* sp_pwdp, encryped password */
+          Qnil, /* sp_lstchg, date when the password was last changed (in days 
since Jan 1, 1970) */
+          Qnil, /* sp_min, days that password must stay same */
+          Qnil, /* sp_max, days until password changes. */
+@@ -66,7 +66,7 @@ static VALUE convert_pw_struct( struct passwd *entry )
+          INT2FIX(difftime(entry->pw_change, 0) / (24*60*60)), /* pw_change */
+          INT2FIX(difftime(entry->pw_expire, 0) / (24*60*60)), /* sp_expire */
+          Qnil, /* sp_flag */
+-         rb_tainted_str_new2(entry->pw_class), /* sp_loginclass, user access 
class */
++         rb_str_new2(entry->pw_class), /* sp_loginclass, user access class */
+          NULL);
+ }
+ 
+diff --git a/shadow/shadow.c b/shadow/shadow.c
+index 35a77a1..9a2ae70 100644
+--- a/shadow/shadow.c
++++ b/shadow/shadow.c
+@@ -34,8 +34,8 @@ static VALUE rb_eFileLock;
+ static VALUE convert_pw_struct( struct spwd *entry ) 
+ {
+   return rb_struct_new(rb_sPasswdEntry,
+-                    rb_tainted_str_new2(entry->sp_namp),
+-                    rb_tainted_str_new2(entry->sp_pwdp),
++                    rb_str_new2(entry->sp_namp),
++                    rb_str_new2(entry->sp_pwdp),
+                     INT2FIX(entry->sp_lstchg),
+                     INT2FIX(entry->sp_min),
+                     INT2FIX(entry->sp_max),

diff --git a/dev-ruby/ruby-shadow/ruby-shadow-2.5.1.ebuild 
b/dev-ruby/ruby-shadow/ruby-shadow-2.5.1.ebuild
index 227739a0159b..a1d3d469c90a 100644
--- a/dev-ruby/ruby-shadow/ruby-shadow-2.5.1.ebuild
+++ b/dev-ruby/ruby-shadow/ruby-shadow-2.5.1.ebuild
@@ -21,7 +21,10 @@ SLOT="0"
 KEYWORDS="amd64 ~arm ~arm64 ~hppa ppc ~ppc64 ~riscv ~sparc x86"
 IUSE=""
 
-PATCHES=( "${FILESDIR}/${P}-ruby32.patch" )
+PATCHES=(
+       "${FILESDIR}/${P}-ruby32.patch"
+       "${FILESDIR}/${P}-ruby32-taint.patch"
+)
 
 all_ruby_prepare() {
        sed -e '16i$CFLAGS += ENV["CFLAGS"]' \

Reply via email to