Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Apr 2020 10:23:07 +0000 (UTC)
From:      Hajimu UMEMOTO <ume@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r533243 - in head/databases/ruby-bdb: . files
Message-ID:  <202004281023.03SAN7Fe073512@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ume
Date: Tue Apr 28 10:23:07 2020
New Revision: 533243
URL: https://svnweb.freebsd.org/changeset/ports/533243

Log:
  suppress deprecate warning with Ruby 2.7
  
  PR:		245339
  Approved by:	maintainer timeout

Added:
  head/databases/ruby-bdb/files/patch-src__env.c   (contents, props changed)
  head/databases/ruby-bdb/files/patch-src__transaction.c   (contents, props changed)
Modified:
  head/databases/ruby-bdb/Makefile
  head/databases/ruby-bdb/files/patch-bdbxml1__bdbxml.cc
  head/databases/ruby-bdb/files/patch-bdbxml2__bdbxml.cc
  head/databases/ruby-bdb/files/patch-src-common.c
  head/databases/ruby-bdb/files/patch-src-cursor.c
  head/databases/ruby-bdb/files/patch-src-recnum.c

Modified: head/databases/ruby-bdb/Makefile
==============================================================================
--- head/databases/ruby-bdb/Makefile	Tue Apr 28 09:45:20 2020	(r533242)
+++ head/databases/ruby-bdb/Makefile	Tue Apr 28 10:23:07 2020	(r533243)
@@ -3,7 +3,7 @@
 
 PORTNAME=	bdb
 PORTVERSION=	0.6.6
-PORTREVISION=	7
+PORTREVISION=	8
 CATEGORIES=	databases ruby
 MASTER_SITES=	ftp://ftp.idaemons.org/pub/distfiles/ruby/ \
 		http://idaemons.org/distfiles/ruby/ \

Modified: head/databases/ruby-bdb/files/patch-bdbxml1__bdbxml.cc
==============================================================================
--- head/databases/ruby-bdb/files/patch-bdbxml1__bdbxml.cc	Tue Apr 28 09:45:20 2020	(r533242)
+++ head/databases/ruby-bdb/files/patch-bdbxml1__bdbxml.cc	Tue Apr 28 10:23:07 2020	(r533243)
@@ -1,6 +1,88 @@
 --- bdbxml1/bdbxml.cc.orig	2011-04-06 19:35:39 UTC
 +++ bdbxml1/bdbxml.cc
-@@ -2340,18 +2340,16 @@
+@@ -1148,15 +1148,19 @@ xb_con_init(int argc, VALUE *argv, VALUE obj)
+ 	    flags = NUM2INT(b);
+ 	}
+     }
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
+     if (flags & DB_TRUNCATE) {
+ 	rb_secure(2);
+     }
++#endif
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     if (flags & DB_CREATE) {
+ 	rb_secure(4);
+     }
+     if (rb_safe_level() >= 4) {
+ 	flags |= DB_RDONLY;
+     }
++#endif
+     if (!txn && con->env_val) {
+ 	bdb_ENV *envst = NULL;
+ 	GetEnvDBErr(con->env_val, envst, id_current_env, xb_eFatal);
+@@ -1179,9 +1183,11 @@ xb_con_close(int argc, VALUE *argv, VALUE obj)
+     xcon *con;
+     int flags = 0;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4) {
+ 	rb_raise(rb_eSecurityError, "Insecure: can't close the container");
+     }
++#endif
+     Data_Get_Struct(obj, xcon, con);
+     if (!con->closed && con->con) {
+ 	if (rb_scan_args(argc, argv, "01", &a)) {
+@@ -1516,7 +1522,9 @@ xb_int_update(int argc, VALUE *argv, VALUE obj, XmlUpd
+     DbTxn *txn;
+     VALUE a;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     GetConTxn(obj, con, txn);
+     if (rb_scan_args(argc, argv, "10", &a) != 1) {
+ 	rb_raise(rb_eArgError, "invalid number of arguments (%d for 1)", argc);
+@@ -1545,7 +1553,9 @@ xb_int_push(int argc, VALUE *argv, VALUE obj, XmlUpdat
+     VALUE a, b;
+     int flags = 0;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     GetConTxn(obj, con, txn);
+     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
+ 	flags = NUM2INT(b);
+@@ -1775,7 +1785,9 @@ xb_int_delete(int argc, VALUE *argv, VALUE obj, XmlUpd
+     VALUE a, b;
+     int flags = 0;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     GetConTxn(obj, con, txn);
+     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
+ 	flags = NUM2INT(b);
+@@ -1824,7 +1836,9 @@ xb_con_remove(int argc, VALUE *argv, VALUE obj)
+     xcon *con;
+     DbTxn *txn = NULL;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
+     rb_secure(2);
++#endif
+     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
+ 	flags = NUM2INT(b);
+     }
+@@ -1844,7 +1858,9 @@ xb_con_rename(int argc, VALUE *argv, VALUE obj)
+     char *str;
+     DbTxn *txn = NULL;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
+     rb_secure(2);
++#endif
+     if (rb_scan_args(argc, argv, "21", &a, &b, &c) == 3) {
+ 	flags = NUM2INT(c);
+     }
+@@ -2340,18 +2356,16 @@ extern "C" {
  	major = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_MAJOR")));
  	minor = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_MINOR")));
  	patch = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_PATCH")));

Modified: head/databases/ruby-bdb/files/patch-bdbxml2__bdbxml.cc
==============================================================================
--- head/databases/ruby-bdb/files/patch-bdbxml2__bdbxml.cc	Tue Apr 28 09:45:20 2020	(r533242)
+++ head/databases/ruby-bdb/files/patch-bdbxml2__bdbxml.cc	Tue Apr 28 10:23:07 2020	(r533243)
@@ -1,6 +1,170 @@
 --- bdbxml2/bdbxml.cc.orig	2011-04-06 19:35:39 UTC
 +++ bdbxml2/bdbxml.cc
-@@ -5536,18 +5536,16 @@
+@@ -392,9 +392,11 @@ xb_env_free(bdb_ENV *envst)
+ static VALUE
+ xb_env_close(VALUE obj)
+ {
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4) {
+ 	rb_raise(rb_eSecurityError, "Insecure: can't close the environnement");
+     }
++#endif
+     bdb_ENV *envst;
+     GetEnvDBErr(obj, envst, id_current_env, xb_eFatal);
+     xb_final(envst);
+@@ -743,7 +745,9 @@ xb_man_type_set(VALUE obj, VALUE a)
+ static VALUE
+ xb_man_rename(VALUE obj, VALUE a, VALUE b)
+ {
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
+     rb_secure(2);
++#endif
+     XmlTransaction *xmltxn = get_txn(obj);
+     xman *man = get_man_txn(obj);
+     char *oldname = StringValuePtr(a);
+@@ -760,7 +764,9 @@ xb_man_rename(VALUE obj, VALUE a, VALUE b)
+ static VALUE
+ xb_man_remove(VALUE obj, VALUE a)
+ {
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
+     rb_secure(2);
++#endif
+     XmlTransaction *xmltxn = get_txn(obj);
+     xman *man = get_man_txn(obj);
+     char *name = StringValuePtr(a);
+@@ -843,7 +849,9 @@ xb_man_verify(int argc, VALUE *argv, VALUE obj)
+     VALUE a, b, c, d;
+     int flags = 0;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     switch (rb_scan_args(argc, argv, "12", &a, &b, &c, &d)) {
+     case 4:
+         flags = NUM2INT(d);
+@@ -885,7 +893,9 @@ xb_man_load_con(int argc, VALUE *argv, VALUE obj)
+     unsigned long lineno = 0;
+     bool freeupd = true;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
+     rb_secure(2);
++#endif
+     xman *man = get_man(obj);
+     switch (rb_scan_args(argc, argv, "22", &a, &b, &c, &d)) {
+     case 4:
+@@ -1028,7 +1038,9 @@ xb_man_reindex(int argc, VALUE *argv, VALUE obj)
+     bool freeupd = true;
+     int flags = 0;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
+     rb_secure(2);
++#endif
+     XmlTransaction *xmltxn = get_txn(obj);
+     xman *man = get_man_txn(obj);
+     switch (rb_scan_args(argc, argv, "12", &a, &b, &c)) {
+@@ -1125,7 +1137,9 @@ xb_man_compact_con(int argc, VALUE *argv, VALUE obj)
+     bool freeupd = true;
+     int flags = 0;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
+     rb_secure(2);
++#endif
+     XmlTransaction *xmltxn = get_txn(obj);
+     xman *man = get_man_txn(obj);
+     switch (rb_scan_args(argc, argv, "11", &a, &b)) {
+@@ -1168,7 +1182,9 @@ xb_man_truncate_con(int argc, VALUE *argv, VALUE obj)
+     bool freeupd = true;
+     int flags = 0;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
+     rb_secure(2);
++#endif
+     XmlTransaction *xmltxn = get_txn(obj);
+     xman *man = get_man_txn(obj);
+     switch (rb_scan_args(argc, argv, "11", &a, &b)) {
+@@ -1274,9 +1290,11 @@ xb_int_open_con(int argc, VALUE *argv, VALUE obj, VALU
+     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
+         flags = NUM2INT(b);
+     }
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     if (flags && DB_CREATE) {
+         rb_secure(4);
+     }
++#endif
+     char *name = StringValuePtr(a);
+     xman *man = get_man_txn(obj);
+     XmlTransaction *xmltxn = get_txn(obj);
+@@ -1315,7 +1333,9 @@ xb_int_create_con(int argc, VALUE *argv, VALUE obj, VA
+     XmlContainer *xmlcon;
+     xcon *con;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     xman *man = get_man_txn(obj);
+     XmlTransaction *xmltxn = get_txn(obj);
+     if (argc == 1) {
+@@ -1965,7 +1985,9 @@ xb_con_add(int argc, VALUE *argv, VALUE obj)
+     bool freeupd = true;
+     int flags = 0;
+     
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     xcon *con = get_con(obj);
+     XmlTransaction *xmltxn = get_con_txn(con);
+     rb_scan_args(argc, argv, "13", &a, &b, &c, &d);
+@@ -2062,7 +2084,9 @@ xb_con_update(int argc, VALUE *argv, VALUE obj)
+     XmlUpdateContext *xmlupd = 0;
+     bool freeupd = true;
+     
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     xcon *con = get_con(obj);
+     XmlTransaction *xmltxn = get_con_txn(con);
+     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
+@@ -2098,7 +2122,9 @@ xb_con_delete(int argc, VALUE *argv, VALUE obj)
+     XmlUpdateContext *xmlupd = 0;
+     bool freeupd = true;
+     
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     xcon *con = get_con(obj);
+     XmlTransaction *xmltxn = get_con_txn(con);
+     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
+@@ -2554,7 +2580,9 @@ xb_con_index_set(int argc, VALUE *argv, VALUE obj)
+     bool freeupd = true;
+     VALUE a, b;
+     
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     xcon *con = get_con(obj);
+     XmlTransaction *xmltxn = get_con_txn(con);
+     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
+@@ -3176,7 +3204,9 @@ xb_man_create_look(int argc, VALUE *argv, VALUE obj)
+     XmlIndexLookup::Operation xmlop = XmlIndexLookup::EQ;
+     VALUE a, b, c, d, e, f, res;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     xman *man = get_man_txn(obj);
+     switch(rb_scan_args(argc, argv, "42", &a, &b, &c, &d, &e, &f)) {
+     case 6:
+@@ -4392,7 +4422,9 @@ xb_mod_execute(int argc, VALUE *argv, VALUE obj)
+     bool freeupd = true, freecxt = true;
+     VALUE a, b, c;
+     
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     switch (rb_scan_args(argc, argv, "12", &a, &b, &c)) {
+     case 3:
+     {
+@@ -5536,18 +5568,16 @@ extern "C" {
  	major = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_MAJOR")));
  	minor = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_MINOR")));
  	patch = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_PATCH")));

Modified: head/databases/ruby-bdb/files/patch-src-common.c
==============================================================================
--- head/databases/ruby-bdb/files/patch-src-common.c	Tue Apr 28 09:45:20 2020	(r533242)
+++ head/databases/ruby-bdb/files/patch-src-common.c	Tue Apr 28 10:23:07 2020	(r533243)
@@ -1,6 +1,18 @@
 --- src/common.c.orig	2011-04-06 19:35:39 UTC
 +++ src/common.c
-@@ -1229,7 +1229,7 @@ bdb_s_new(int argc, VALUE *argv, VALUE o
+@@ -1080,9 +1080,11 @@ bdb_close(int argc, VALUE *argv, VALUE obj)
+     bdb_DB *dbst;
+     int flags = 0;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4) {
+ 	rb_raise(rb_eSecurityError, "Insecure: can't close the database");
+     }
++#endif
+     Data_Get_Struct(obj, bdb_DB, dbst);
+     if (dbst->dbp != NULL) {
+ 	if (rb_scan_args(argc, argv, "01", &opt)) {
+@@ -1229,7 +1231,7 @@ bdb_s_new(int argc, VALUE *argv, VALUE obj)
      if (argc && TYPE(argv[argc - 1]) == T_HASH) {
  	VALUE v, f = argv[argc - 1];
  
@@ -9,7 +21,7 @@
  	    if (!rb_obj_is_kind_of(v, bdb_cTxn)) {
  		rb_raise(bdb_eFatal, "argument of txn must be a transaction");
  	    }
-@@ -1241,7 +1241,7 @@ bdb_s_new(int argc, VALUE *argv, VALUE o
+@@ -1241,7 +1243,7 @@ bdb_s_new(int argc, VALUE *argv, VALUE obj)
  	    dbst->options |= envst->options & BDB_NO_THREAD;
  	    dbst->marshal = txnst->marshal;
  	}
@@ -18,7 +30,7 @@
  	    if (!rb_obj_is_kind_of(v, bdb_cEnv)) {
  		rb_raise(bdb_eFatal, "argument of env must be an environnement");
  	    }
-@@ -1254,11 +1254,11 @@ bdb_s_new(int argc, VALUE *argv, VALUE o
+@@ -1254,11 +1256,11 @@ bdb_s_new(int argc, VALUE *argv, VALUE obj)
  #if HAVE_CONST_DB_ENCRYPT 
  	if (envst && (envst->options & BDB_ENV_ENCRYPT)) {
  	    VALUE tmp = rb_str_new2("set_flags");
@@ -32,8 +44,28 @@
  		rb_hash_aset(f, tmp, INT2NUM(NUM2INT(v) | DB_ENCRYPT));
  	    }
  	    else {
-@@ -1570,10 +1570,10 @@ bdb_init(int argc, VALUE *argv, VALUE ob
+@@ -1431,15 +1433,19 @@ bdb_init(int argc, VALUE *argv, VALUE obj)
+ 	dbst->options |= BDB_FEEDBACK;
+     }
  #endif
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
+     if (flags & DB_TRUNCATE) {
+ 	rb_secure(2);
+     }
++#endif
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     if (flags & DB_CREATE) {
+ 	rb_secure(4);
+     }
+     if (rb_safe_level() >= 4) {
+ 	flags |= DB_RDONLY;
+     }
++#endif
+ #if HAVE_CONST_DB_DUPSORT
+     if (dbst->options & BDB_DUP_COMPARE) {
+ #if HAVE_TYPE_DB_INFO
+@@ -1570,10 +1576,10 @@ bdb_init(int argc, VALUE *argv, VALUE obj)
+ #endif
  	switch(dbst->type) {
  	case DB_BTREE:
 -	    RBASIC(obj)->klass = bdb_cBtree;
@@ -45,7 +77,7 @@
  	    break;
  	case DB_RECNO:
  	{
-@@ -1581,17 +1581,17 @@ bdb_init(int argc, VALUE *argv, VALUE ob
+@@ -1581,17 +1587,17 @@ bdb_init(int argc, VALUE *argv, VALUE obj)
  
  	    rb_warning("It's hard to distinguish Recnum with Recno for all versions of Berkeley DB");
  	    if ((count = bdb_is_recnum(dbst->dbp)) != -1) {
@@ -66,7 +98,7 @@
  	    break;
  #endif
  	default:
-@@ -1635,29 +1635,29 @@ bdb_s_alloc(obj)
+@@ -1635,29 +1641,29 @@ bdb_s_alloc(obj)
      dbst->options = BDB_NOT_OPEN;
      cl = obj;
      while (cl) {
@@ -102,8 +134,48 @@
  	    dbst->type = DB_UNKNOWN;
  	    break;
  	}
-@@ -3004,8 +3004,8 @@ bdb_each_kvc(argc, argv, obj, sens, repl
+@@ -1802,7 +1808,9 @@ bdb_append_internal(argc, argv, obj, flag, retval)
+     VALUE *a, ary = Qnil;
+     volatile VALUE res = Qnil;
  
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     if (argc < 1)
+ 	return obj;
+     INIT_TXN(txnid, obj, dbst);
+@@ -1885,7 +1893,9 @@ bdb_put(int argc, VALUE *argv, VALUE obj)
+     int ret, flags;
+     db_recno_t recno;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     INIT_TXN(txnid, obj, dbst);
+     flags = 0;
+     a = b = c = Qnil;
+@@ -2374,7 +2384,9 @@ bdb_consume(obj)
+     int ret;
+     db_recno_t recno;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     INIT_TXN(txnid, obj, dbst);
+     MEMZERO(&key, DBT, 1);
+     MEMZERO(&data, DBT, 1);
+@@ -2551,7 +2563,9 @@ bdb_del(obj, a)
+     db_recno_t recno;
+     volatile VALUE b = Qnil;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     INIT_TXN(txnid, obj, dbst);
+ #if HAVE_CONST_DB_AUTO_COMMIT
+     if (txnid == NULL && (dbst->options & BDB_AUTO_COMMIT)) {
+@@ -3004,8 +3018,8 @@ bdb_each_kvc(argc, argv, obj, sens, replace, type)
+ 
      if (argc && TYPE(argv[argc - 1]) == T_HASH) {
  	VALUE g, f = argv[argc - 1];
 -	if ((g = rb_hash_aref(f, rb_intern("flags"))) != RHASH(f)->ifnone ||
@@ -113,7 +185,29 @@
  	    flags = NUM2INT(g);
  	}
  	argc--;
-@@ -3323,8 +3323,8 @@ bdb_clear(int argc, VALUE *argv, VALUE o
+@@ -3053,9 +3067,11 @@ bdb_each_kvc(argc, argv, obj, sens, replace, type)
+     }
+ #endif
+     type &= ~BDB_ST_ONE;
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     if ((type & ~BDB_ST_PREFIX) == BDB_ST_DELETE) {
+ 	rb_secure(4);
+     }
++#endif
+     INIT_TXN(txnid, obj, dbst);
+ #if HAVE_DB_CURSOR_4
+     bdb_test_error(dbst->dbp->cursor(dbst->dbp, txnid, &dbcp, flags));
+@@ -3309,7 +3325,9 @@ bdb_clear(int argc, VALUE *argv, VALUE obj)
+ #endif
+     int flags = 0;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+ #if HAVE_ST_DB_TRUNCATE
+     INIT_TXN(txnid, obj, dbst);
+ #if HAVE_CONST_DB_AUTO_COMMIT
+@@ -3323,8 +3341,8 @@ bdb_clear(int argc, VALUE *argv, VALUE obj)
      flags = 0;
      if (argc && TYPE(argv[argc - 1]) == T_HASH) {
  	VALUE g, f = argv[argc - 1];
@@ -124,7 +218,7 @@
  	    flags = NUM2INT(g);
  	}
  	argc--;
-@@ -3348,8 +3348,8 @@ bdb_replace(int argc, VALUE *argv, VALUE
+@@ -3348,8 +3366,8 @@ bdb_replace(int argc, VALUE *argv, VALUE obj)
      flags = 0;
      if (TYPE(argv[argc - 1]) == T_HASH) {
  	VALUE f = argv[argc - 1];
@@ -135,3 +229,54 @@
  	    flags = NUM2INT(g);
  	}
  	argc--;
+@@ -3557,8 +3575,10 @@ bdb_sync(obj)
+ {
+     bdb_DB *dbst;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4)
+ 	rb_raise(rb_eSecurityError, "Insecure: can't sync the database");
++#endif
+     GetDB(obj, dbst);
+     bdb_test_error(dbst->dbp->sync(dbst->dbp, 0));
+     return Qtrue;
+@@ -3884,7 +3904,9 @@ bdb_s_upgrade(int argc, VALUE *argv, VALUE obj)
+     int flags;
+     VALUE val;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     flags = 0;
+     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
+ 	flags = NUM2INT(b);
+@@ -3908,7 +3930,9 @@ bdb_s_remove(int argc, VALUE *argv, VALUE obj)
+     VALUE a, b, c;
+     char *name, *subname;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
+     rb_secure(2);
++#endif
+     c = bdb_i_create(obj);
+     GetDB(c, dbst);
+     name = subname = NULL;
+@@ -3936,7 +3960,9 @@ bdb_s_rename(int argc, VALUE *argv, VALUE obj)
+     VALUE a, b, c;
+     char *name, *subname, *newname;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
+     rb_secure(2);
++#endif
+     c = bdb_i_create(obj);
+     GetDB(c, dbst);
+     name = subname = NULL;
+@@ -4222,7 +4248,9 @@ bdb_verify(int argc, VALUE *argv, VALUE obj)
+ #endif
+     FILE *io = NULL;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     file = database = NULL;
+     switch(rb_scan_args(argc, argv, "02", &iov, &flagv)) {
+     case 2:

Modified: head/databases/ruby-bdb/files/patch-src-cursor.c
==============================================================================
--- head/databases/ruby-bdb/files/patch-src-cursor.c	Tue Apr 28 09:45:20 2020	(r533242)
+++ head/databases/ruby-bdb/files/patch-src-cursor.c	Tue Apr 28 10:23:07 2020	(r533243)
@@ -1,6 +1,6 @@
 --- src/cursor.c.orig	2011-04-06 19:35:39 UTC
 +++ src/cursor.c
-@@ -29,8 +29,8 @@ bdb_cursor(int argc, VALUE *argv, VALUE 
+@@ -29,8 +29,8 @@ bdb_cursor(int argc, VALUE *argv, VALUE obj)
      flags = 0;
      if (argc && TYPE(argv[argc - 1]) == T_HASH) {
  	VALUE g, f = argv[argc - 1];
@@ -11,3 +11,34 @@
  	    flags = NUM2INT(g);
  	}
  	argc--;
+@@ -67,8 +67,10 @@ bdb_cursor_close(VALUE obj)
+     bdb_DBC *dbcst;
+     bdb_DB *dbst;
+     
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4)
+ 	rb_raise(rb_eSecurityError, "Insecure: can't close the cursor");
++#endif
+     GetCursorDB(obj, dbcst, dbst);
+     bdb_test_error(dbcst->dbc->c_close(dbcst->dbc));
+     dbcst->dbc = NULL;
+@@ -82,7 +84,9 @@ bdb_cursor_del(VALUE obj)
+     bdb_DBC *dbcst;
+     bdb_DB *dbst;
+     
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     GetCursorDB(obj, dbcst, dbst);
+     bdb_test_error(dbcst->dbc->c_del(dbcst->dbc, flags));
+     return Qtrue;
+@@ -353,7 +357,9 @@ bdb_cursor_put(int argc, VALUE *argv, VALUE obj)
+     db_recno_t recno;
+     int ret;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     MEMZERO(&key, DBT, 1);
+     MEMZERO(&data, DBT, 1);
+     cnt = rb_scan_args(argc, argv, "21", &a, &b, &c);

Modified: head/databases/ruby-bdb/files/patch-src-recnum.c
==============================================================================
--- head/databases/ruby-bdb/files/patch-src-recnum.c	Tue Apr 28 09:45:20 2020	(r533242)
+++ head/databases/ruby-bdb/files/patch-src-recnum.c	Tue Apr 28 10:23:07 2020	(r533243)
@@ -1,6 +1,6 @@
 --- src/recnum.c.orig	2011-04-06 19:35:39 UTC
 +++ src/recnum.c
-@@ -17,7 +17,7 @@ bdb_recnum_init(int argc, VALUE *argv, V
+@@ -17,7 +17,7 @@ bdb_recnum_init(int argc, VALUE *argv, VALUE obj)
  	argc++;
      }
      rb_hash_aset(argv[argc - 1], array, INT2FIX(0));
@@ -9,7 +9,17 @@
  	rb_hash_aset(argv[argc - 1], sarray, INT2FIX(0));
      }
      rb_hash_aset(argv[argc - 1], rb_str_new2("set_flags"), INT2FIX(DB_RENUMBER));
-@@ -697,8 +697,8 @@ bdb_sary_clear(int argc, VALUE *argv, VA
+@@ -112,7 +112,9 @@ bdb_intern_shift_pop(VALUE obj, int depart, int len)
+     db_recno_t recno;
+     VALUE res;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     INIT_TXN(txnid, obj, dbst);
+ #if HAVE_DB_CURSOR_4
+     bdb_test_error(dbst->dbp->cursor(dbst->dbp, txnid, &dbcp, 0));
+@@ -697,8 +699,8 @@ bdb_sary_clear(int argc, VALUE *argv, VALUE obj)
  
      if (argc && TYPE(argv[argc - 1]) == T_HASH) {
  	VALUE f = argv[argc - 1];

Added: head/databases/ruby-bdb/files/patch-src__env.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/databases/ruby-bdb/files/patch-src__env.c	Tue Apr 28 10:23:07 2020	(r533243)
@@ -0,0 +1,41 @@
+--- src/env.c.orig	2011-04-06 19:35:39 UTC
++++ src/env.c
+@@ -1121,9 +1121,11 @@ bdb_env_close(VALUE obj)
+ {
+     bdb_ENV *envst;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4) {
+ 	rb_raise(rb_eSecurityError, "Insecure: can't close the environnement");
+     }
++#endif
+     GetEnvDB(obj, envst);
+     bdb_final(envst);
+     RDATA(obj)->dfree = free;
+@@ -1517,12 +1519,16 @@ bdb_env_init(int argc, VALUE *argv, VALUE obj)
+ 	flags = NUM2INT(c);
+         break;
+     }
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     if (flags & DB_CREATE) {
+ 	rb_secure(4);
+     }
++#endif
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 1
+     if (flags & DB_USE_ENVIRON) {
+ 	rb_secure(1);
+     }
++#endif
+ #ifndef BDB_NO_THREAD_COMPILE
+     if (!(envst->options & BDB_NO_THREAD)) {
+ 	bdb_set_func(envst);
+@@ -1658,7 +1664,9 @@ bdb_env_s_remove(int argc, VALUE *argv, VALUE obj)
+     char *db_home;
+     int flag = 0;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
+     rb_secure(2);
++#endif
+     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
+ 	flag = NUM2INT(b);
+     }

Added: head/databases/ruby-bdb/files/patch-src__transaction.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/databases/ruby-bdb/files/patch-src__transaction.c	Tue Apr 28 10:23:07 2020	(r533243)
@@ -0,0 +1,52 @@
+--- src/transaction.c.orig	2011-04-06 19:35:39 UTC
++++ src/transaction.c
+@@ -139,7 +139,9 @@ bdb_txn_commit(int argc, VALUE *argv, VALUE obj)
+     VALUE a;
+     int flags;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     flags = 0;
+     if (rb_scan_args(argc, argv, "01", &a) == 1) {
+         flags = NUM2INT(a);
+@@ -552,7 +554,9 @@ bdb_env_recover(VALUE obj)
+     if (!rb_block_given_p()) {
+         rb_raise(bdb_eFatal, "call out of an iterator");
+     }
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     GetEnvDB(obj, envst);
+     txnv = Data_Make_Struct(bdb_cTxn, bdb_TXN, bdb_txn_mark, bdb_txn_free, txnst);
+     txnst->env = obj;
+@@ -584,7 +588,9 @@ bdb_txn_discard(VALUE obj)
+     bdb_TXN *txnst;
+     int flags;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
+     rb_secure(4);
++#endif
+     flags = 0;
+     GetTxnDB(obj, txnst);
+ #if HAVE_ST_DB_TXN_DISCARD
+@@ -761,7 +767,9 @@ bdb_env_dbremove(int argc, VALUE *argv, VALUE obj)
+     bdb_TXN *txnst;
+     DB_TXN *txnid;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
+     rb_secure(2);
++#endif
+     a = b = c = Qnil;
+     file = database = NULL;
+     flags = 0;
+@@ -810,7 +818,9 @@ bdb_env_dbrename(int argc, VALUE *argv, VALUE obj)
+     bdb_TXN *txnst;
+     DB_TXN *txnid;
+ 
++#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
+     rb_secure(2);
++#endif
+     a = b = c = Qnil;
+     file = database = newname = NULL;
+     flags = 0;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202004281023.03SAN7Fe073512>