diff options
Diffstat (limited to 'databases/ruby-bdb/files/patch-src__env.c')
-rw-r--r-- | databases/ruby-bdb/files/patch-src__env.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/databases/ruby-bdb/files/patch-src__env.c b/databases/ruby-bdb/files/patch-src__env.c new file mode 100644 index 000000000000..be5ccea26a5e --- /dev/null +++ b/databases/ruby-bdb/files/patch-src__env.c @@ -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); + } |