View | Details | Raw Unified | Return to bug 245339
Collapse All | Expand All

(-)Makefile (-1 / +1 lines)
Lines 3-9 Link Here
3
3
4
PORTNAME=	bdb
4
PORTNAME=	bdb
5
PORTVERSION=	0.6.6
5
PORTVERSION=	0.6.6
6
PORTREVISION=	7
6
PORTREVISION=	8
7
CATEGORIES=	databases ruby
7
CATEGORIES=	databases ruby
8
MASTER_SITES=	ftp://ftp.idaemons.org/pub/distfiles/ruby/ \
8
MASTER_SITES=	ftp://ftp.idaemons.org/pub/distfiles/ruby/ \
9
		http://idaemons.org/distfiles/ruby/ \
9
		http://idaemons.org/distfiles/ruby/ \
(-)files/patch-bdbxml1__bdbxml.cc (-1 / +83 lines)
Lines 1-6 Link Here
1
--- bdbxml1/bdbxml.cc.orig	2011-04-06 19:35:39 UTC
1
--- bdbxml1/bdbxml.cc.orig	2011-04-06 19:35:39 UTC
2
+++ bdbxml1/bdbxml.cc
2
+++ bdbxml1/bdbxml.cc
3
@@ -2340,18 +2340,16 @@
3
@@ -1148,15 +1148,19 @@ xb_con_init(int argc, VALUE *argv, VALUE obj)
4
 	    flags = NUM2INT(b);
5
 	}
6
     }
7
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
8
     if (flags & DB_TRUNCATE) {
9
 	rb_secure(2);
10
     }
11
+#endif
12
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
13
     if (flags & DB_CREATE) {
14
 	rb_secure(4);
15
     }
16
     if (rb_safe_level() >= 4) {
17
 	flags |= DB_RDONLY;
18
     }
19
+#endif
20
     if (!txn && con->env_val) {
21
 	bdb_ENV *envst = NULL;
22
 	GetEnvDBErr(con->env_val, envst, id_current_env, xb_eFatal);
23
@@ -1179,9 +1183,11 @@ xb_con_close(int argc, VALUE *argv, VALUE obj)
24
     xcon *con;
25
     int flags = 0;
26
 
27
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
28
     if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4) {
29
 	rb_raise(rb_eSecurityError, "Insecure: can't close the container");
30
     }
31
+#endif
32
     Data_Get_Struct(obj, xcon, con);
33
     if (!con->closed && con->con) {
34
 	if (rb_scan_args(argc, argv, "01", &a)) {
35
@@ -1516,7 +1522,9 @@ xb_int_update(int argc, VALUE *argv, VALUE obj, XmlUpd
36
     DbTxn *txn;
37
     VALUE a;
38
 
39
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
40
     rb_secure(4);
41
+#endif
42
     GetConTxn(obj, con, txn);
43
     if (rb_scan_args(argc, argv, "10", &a) != 1) {
44
 	rb_raise(rb_eArgError, "invalid number of arguments (%d for 1)", argc);
45
@@ -1545,7 +1553,9 @@ xb_int_push(int argc, VALUE *argv, VALUE obj, XmlUpdat
46
     VALUE a, b;
47
     int flags = 0;
48
 
49
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
50
     rb_secure(4);
51
+#endif
52
     GetConTxn(obj, con, txn);
53
     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
54
 	flags = NUM2INT(b);
55
@@ -1775,7 +1785,9 @@ xb_int_delete(int argc, VALUE *argv, VALUE obj, XmlUpd
56
     VALUE a, b;
57
     int flags = 0;
58
 
59
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
60
     rb_secure(4);
61
+#endif
62
     GetConTxn(obj, con, txn);
63
     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
64
 	flags = NUM2INT(b);
65
@@ -1824,7 +1836,9 @@ xb_con_remove(int argc, VALUE *argv, VALUE obj)
66
     xcon *con;
67
     DbTxn *txn = NULL;
68
 
69
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
70
     rb_secure(2);
71
+#endif
72
     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
73
 	flags = NUM2INT(b);
74
     }
75
@@ -1844,7 +1858,9 @@ xb_con_rename(int argc, VALUE *argv, VALUE obj)
76
     char *str;
77
     DbTxn *txn = NULL;
78
 
79
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
80
     rb_secure(2);
81
+#endif
82
     if (rb_scan_args(argc, argv, "21", &a, &b, &c) == 3) {
83
 	flags = NUM2INT(c);
84
     }
85
@@ -2340,18 +2356,16 @@ extern "C" {
4
 	major = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_MAJOR")));
86
 	major = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_MAJOR")));
5
 	minor = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_MINOR")));
87
 	minor = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_MINOR")));
6
 	patch = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_PATCH")));
88
 	patch = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_PATCH")));
(-)files/patch-bdbxml2__bdbxml.cc (-1 / +165 lines)
Lines 1-6 Link Here
1
--- bdbxml2/bdbxml.cc.orig	2011-04-06 19:35:39 UTC
1
--- bdbxml2/bdbxml.cc.orig	2011-04-06 19:35:39 UTC
2
+++ bdbxml2/bdbxml.cc
2
+++ bdbxml2/bdbxml.cc
3
@@ -5536,18 +5536,16 @@
3
@@ -392,9 +392,11 @@ xb_env_free(bdb_ENV *envst)
4
 static VALUE
5
 xb_env_close(VALUE obj)
6
 {
7
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
8
     if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4) {
9
 	rb_raise(rb_eSecurityError, "Insecure: can't close the environnement");
10
     }
11
+#endif
12
     bdb_ENV *envst;
13
     GetEnvDBErr(obj, envst, id_current_env, xb_eFatal);
14
     xb_final(envst);
15
@@ -743,7 +745,9 @@ xb_man_type_set(VALUE obj, VALUE a)
16
 static VALUE
17
 xb_man_rename(VALUE obj, VALUE a, VALUE b)
18
 {
19
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
20
     rb_secure(2);
21
+#endif
22
     XmlTransaction *xmltxn = get_txn(obj);
23
     xman *man = get_man_txn(obj);
24
     char *oldname = StringValuePtr(a);
25
@@ -760,7 +764,9 @@ xb_man_rename(VALUE obj, VALUE a, VALUE b)
26
 static VALUE
27
 xb_man_remove(VALUE obj, VALUE a)
28
 {
29
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
30
     rb_secure(2);
31
+#endif
32
     XmlTransaction *xmltxn = get_txn(obj);
33
     xman *man = get_man_txn(obj);
34
     char *name = StringValuePtr(a);
35
@@ -843,7 +849,9 @@ xb_man_verify(int argc, VALUE *argv, VALUE obj)
36
     VALUE a, b, c, d;
37
     int flags = 0;
38
 
39
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
40
     rb_secure(4);
41
+#endif
42
     switch (rb_scan_args(argc, argv, "12", &a, &b, &c, &d)) {
43
     case 4:
44
         flags = NUM2INT(d);
45
@@ -885,7 +893,9 @@ xb_man_load_con(int argc, VALUE *argv, VALUE obj)
46
     unsigned long lineno = 0;
47
     bool freeupd = true;
48
 
49
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
50
     rb_secure(2);
51
+#endif
52
     xman *man = get_man(obj);
53
     switch (rb_scan_args(argc, argv, "22", &a, &b, &c, &d)) {
54
     case 4:
55
@@ -1028,7 +1038,9 @@ xb_man_reindex(int argc, VALUE *argv, VALUE obj)
56
     bool freeupd = true;
57
     int flags = 0;
58
 
59
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
60
     rb_secure(2);
61
+#endif
62
     XmlTransaction *xmltxn = get_txn(obj);
63
     xman *man = get_man_txn(obj);
64
     switch (rb_scan_args(argc, argv, "12", &a, &b, &c)) {
65
@@ -1125,7 +1137,9 @@ xb_man_compact_con(int argc, VALUE *argv, VALUE obj)
66
     bool freeupd = true;
67
     int flags = 0;
68
 
69
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
70
     rb_secure(2);
71
+#endif
72
     XmlTransaction *xmltxn = get_txn(obj);
73
     xman *man = get_man_txn(obj);
74
     switch (rb_scan_args(argc, argv, "11", &a, &b)) {
75
@@ -1168,7 +1182,9 @@ xb_man_truncate_con(int argc, VALUE *argv, VALUE obj)
76
     bool freeupd = true;
77
     int flags = 0;
78
 
79
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
80
     rb_secure(2);
81
+#endif
82
     XmlTransaction *xmltxn = get_txn(obj);
83
     xman *man = get_man_txn(obj);
84
     switch (rb_scan_args(argc, argv, "11", &a, &b)) {
85
@@ -1274,9 +1290,11 @@ xb_int_open_con(int argc, VALUE *argv, VALUE obj, VALU
86
     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
87
         flags = NUM2INT(b);
88
     }
89
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
90
     if (flags && DB_CREATE) {
91
         rb_secure(4);
92
     }
93
+#endif
94
     char *name = StringValuePtr(a);
95
     xman *man = get_man_txn(obj);
96
     XmlTransaction *xmltxn = get_txn(obj);
97
@@ -1315,7 +1333,9 @@ xb_int_create_con(int argc, VALUE *argv, VALUE obj, VA
98
     XmlContainer *xmlcon;
99
     xcon *con;
100
 
101
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
102
     rb_secure(4);
103
+#endif
104
     xman *man = get_man_txn(obj);
105
     XmlTransaction *xmltxn = get_txn(obj);
106
     if (argc == 1) {
107
@@ -1965,7 +1985,9 @@ xb_con_add(int argc, VALUE *argv, VALUE obj)
108
     bool freeupd = true;
109
     int flags = 0;
110
     
111
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
112
     rb_secure(4);
113
+#endif
114
     xcon *con = get_con(obj);
115
     XmlTransaction *xmltxn = get_con_txn(con);
116
     rb_scan_args(argc, argv, "13", &a, &b, &c, &d);
117
@@ -2062,7 +2084,9 @@ xb_con_update(int argc, VALUE *argv, VALUE obj)
118
     XmlUpdateContext *xmlupd = 0;
119
     bool freeupd = true;
120
     
121
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
122
     rb_secure(4);
123
+#endif
124
     xcon *con = get_con(obj);
125
     XmlTransaction *xmltxn = get_con_txn(con);
126
     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
127
@@ -2098,7 +2122,9 @@ xb_con_delete(int argc, VALUE *argv, VALUE obj)
128
     XmlUpdateContext *xmlupd = 0;
129
     bool freeupd = true;
130
     
131
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
132
     rb_secure(4);
133
+#endif
134
     xcon *con = get_con(obj);
135
     XmlTransaction *xmltxn = get_con_txn(con);
136
     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
137
@@ -2554,7 +2580,9 @@ xb_con_index_set(int argc, VALUE *argv, VALUE obj)
138
     bool freeupd = true;
139
     VALUE a, b;
140
     
141
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
142
     rb_secure(4);
143
+#endif
144
     xcon *con = get_con(obj);
145
     XmlTransaction *xmltxn = get_con_txn(con);
146
     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
147
@@ -3176,7 +3204,9 @@ xb_man_create_look(int argc, VALUE *argv, VALUE obj)
148
     XmlIndexLookup::Operation xmlop = XmlIndexLookup::EQ;
149
     VALUE a, b, c, d, e, f, res;
150
 
151
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
152
     rb_secure(4);
153
+#endif
154
     xman *man = get_man_txn(obj);
155
     switch(rb_scan_args(argc, argv, "42", &a, &b, &c, &d, &e, &f)) {
156
     case 6:
157
@@ -4392,7 +4422,9 @@ xb_mod_execute(int argc, VALUE *argv, VALUE obj)
158
     bool freeupd = true, freecxt = true;
159
     VALUE a, b, c;
160
     
161
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
162
     rb_secure(4);
163
+#endif
164
     switch (rb_scan_args(argc, argv, "12", &a, &b, &c)) {
165
     case 3:
166
     {
167
@@ -5536,18 +5568,16 @@ extern "C" {
4
 	major = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_MAJOR")));
168
 	major = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_MAJOR")));
5
 	minor = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_MINOR")));
169
 	minor = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_MINOR")));
6
 	patch = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_PATCH")));
170
 	patch = NUM2INT(rb_const_get(xb_mDb, rb_intern("VERSION_PATCH")));
(-)files/patch-src-common.c (-9 / +154 lines)
Lines 1-6 Link Here
1
--- src/common.c.orig	2011-04-06 19:35:39 UTC
1
--- src/common.c.orig	2011-04-06 19:35:39 UTC
2
+++ src/common.c
2
+++ src/common.c
3
@@ -1229,7 +1229,7 @@ bdb_s_new(int argc, VALUE *argv, VALUE o
3
@@ -1080,9 +1080,11 @@ bdb_close(int argc, VALUE *argv, VALUE obj)
4
     bdb_DB *dbst;
5
     int flags = 0;
6
 
7
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
8
     if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4) {
9
 	rb_raise(rb_eSecurityError, "Insecure: can't close the database");
10
     }
11
+#endif
12
     Data_Get_Struct(obj, bdb_DB, dbst);
13
     if (dbst->dbp != NULL) {
14
 	if (rb_scan_args(argc, argv, "01", &opt)) {
15
@@ -1229,7 +1231,7 @@ bdb_s_new(int argc, VALUE *argv, VALUE obj)
4
     if (argc && TYPE(argv[argc - 1]) == T_HASH) {
16
     if (argc && TYPE(argv[argc - 1]) == T_HASH) {
5
 	VALUE v, f = argv[argc - 1];
17
 	VALUE v, f = argv[argc - 1];
6
 
18
 
Lines 9-15 Link Here
9
 	    if (!rb_obj_is_kind_of(v, bdb_cTxn)) {
21
 	    if (!rb_obj_is_kind_of(v, bdb_cTxn)) {
10
 		rb_raise(bdb_eFatal, "argument of txn must be a transaction");
22
 		rb_raise(bdb_eFatal, "argument of txn must be a transaction");
11
 	    }
23
 	    }
12
@@ -1241,7 +1241,7 @@ bdb_s_new(int argc, VALUE *argv, VALUE o
24
@@ -1241,7 +1243,7 @@ bdb_s_new(int argc, VALUE *argv, VALUE obj)
13
 	    dbst->options |= envst->options & BDB_NO_THREAD;
25
 	    dbst->options |= envst->options & BDB_NO_THREAD;
14
 	    dbst->marshal = txnst->marshal;
26
 	    dbst->marshal = txnst->marshal;
15
 	}
27
 	}
Lines 18-24 Link Here
18
 	    if (!rb_obj_is_kind_of(v, bdb_cEnv)) {
30
 	    if (!rb_obj_is_kind_of(v, bdb_cEnv)) {
19
 		rb_raise(bdb_eFatal, "argument of env must be an environnement");
31
 		rb_raise(bdb_eFatal, "argument of env must be an environnement");
20
 	    }
32
 	    }
21
@@ -1254,11 +1254,11 @@ bdb_s_new(int argc, VALUE *argv, VALUE o
33
@@ -1254,11 +1256,11 @@ bdb_s_new(int argc, VALUE *argv, VALUE obj)
22
 #if HAVE_CONST_DB_ENCRYPT 
34
 #if HAVE_CONST_DB_ENCRYPT 
23
 	if (envst && (envst->options & BDB_ENV_ENCRYPT)) {
35
 	if (envst && (envst->options & BDB_ENV_ENCRYPT)) {
24
 	    VALUE tmp = rb_str_new2("set_flags");
36
 	    VALUE tmp = rb_str_new2("set_flags");
Lines 32-39 Link Here
32
 		rb_hash_aset(f, tmp, INT2NUM(NUM2INT(v) | DB_ENCRYPT));
44
 		rb_hash_aset(f, tmp, INT2NUM(NUM2INT(v) | DB_ENCRYPT));
33
 	    }
45
 	    }
34
 	    else {
46
 	    else {
35
@@ -1570,10 +1570,10 @@ bdb_init(int argc, VALUE *argv, VALUE ob
47
@@ -1431,15 +1433,19 @@ bdb_init(int argc, VALUE *argv, VALUE obj)
48
 	dbst->options |= BDB_FEEDBACK;
49
     }
36
 #endif
50
 #endif
51
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
52
     if (flags & DB_TRUNCATE) {
53
 	rb_secure(2);
54
     }
55
+#endif
56
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
57
     if (flags & DB_CREATE) {
58
 	rb_secure(4);
59
     }
60
     if (rb_safe_level() >= 4) {
61
 	flags |= DB_RDONLY;
62
     }
63
+#endif
64
 #if HAVE_CONST_DB_DUPSORT
65
     if (dbst->options & BDB_DUP_COMPARE) {
66
 #if HAVE_TYPE_DB_INFO
67
@@ -1570,10 +1576,10 @@ bdb_init(int argc, VALUE *argv, VALUE obj)
68
 #endif
37
 	switch(dbst->type) {
69
 	switch(dbst->type) {
38
 	case DB_BTREE:
70
 	case DB_BTREE:
39
-	    RBASIC(obj)->klass = bdb_cBtree;
71
-	    RBASIC(obj)->klass = bdb_cBtree;
Lines 45-51 Link Here
45
 	    break;
77
 	    break;
46
 	case DB_RECNO:
78
 	case DB_RECNO:
47
 	{
79
 	{
48
@@ -1581,17 +1581,17 @@ bdb_init(int argc, VALUE *argv, VALUE ob
80
@@ -1581,17 +1587,17 @@ bdb_init(int argc, VALUE *argv, VALUE obj)
49
 
81
 
50
 	    rb_warning("It's hard to distinguish Recnum with Recno for all versions of Berkeley DB");
82
 	    rb_warning("It's hard to distinguish Recnum with Recno for all versions of Berkeley DB");
51
 	    if ((count = bdb_is_recnum(dbst->dbp)) != -1) {
83
 	    if ((count = bdb_is_recnum(dbst->dbp)) != -1) {
Lines 66-72 Link Here
66
 	    break;
98
 	    break;
67
 #endif
99
 #endif
68
 	default:
100
 	default:
69
@@ -1635,29 +1635,29 @@ bdb_s_alloc(obj)
101
@@ -1635,29 +1641,29 @@ bdb_s_alloc(obj)
70
     dbst->options = BDB_NOT_OPEN;
102
     dbst->options = BDB_NOT_OPEN;
71
     cl = obj;
103
     cl = obj;
72
     while (cl) {
104
     while (cl) {
Lines 102-109 Link Here
102
 	    dbst->type = DB_UNKNOWN;
134
 	    dbst->type = DB_UNKNOWN;
103
 	    break;
135
 	    break;
104
 	}
136
 	}
105
@@ -3004,8 +3004,8 @@ bdb_each_kvc(argc, argv, obj, sens, repl
137
@@ -1802,7 +1808,9 @@ bdb_append_internal(argc, argv, obj, flag, retval)
138
     VALUE *a, ary = Qnil;
139
     volatile VALUE res = Qnil;
106
 
140
 
141
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
142
     rb_secure(4);
143
+#endif
144
     if (argc < 1)
145
 	return obj;
146
     INIT_TXN(txnid, obj, dbst);
147
@@ -1885,7 +1893,9 @@ bdb_put(int argc, VALUE *argv, VALUE obj)
148
     int ret, flags;
149
     db_recno_t recno;
150
 
151
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
152
     rb_secure(4);
153
+#endif
154
     INIT_TXN(txnid, obj, dbst);
155
     flags = 0;
156
     a = b = c = Qnil;
157
@@ -2374,7 +2384,9 @@ bdb_consume(obj)
158
     int ret;
159
     db_recno_t recno;
160
 
161
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
162
     rb_secure(4);
163
+#endif
164
     INIT_TXN(txnid, obj, dbst);
165
     MEMZERO(&key, DBT, 1);
166
     MEMZERO(&data, DBT, 1);
167
@@ -2551,7 +2563,9 @@ bdb_del(obj, a)
168
     db_recno_t recno;
169
     volatile VALUE b = Qnil;
170
 
171
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
172
     rb_secure(4);
173
+#endif
174
     INIT_TXN(txnid, obj, dbst);
175
 #if HAVE_CONST_DB_AUTO_COMMIT
176
     if (txnid == NULL && (dbst->options & BDB_AUTO_COMMIT)) {
177
@@ -3004,8 +3018,8 @@ bdb_each_kvc(argc, argv, obj, sens, replace, type)
178
 
107
     if (argc && TYPE(argv[argc - 1]) == T_HASH) {
179
     if (argc && TYPE(argv[argc - 1]) == T_HASH) {
108
 	VALUE g, f = argv[argc - 1];
180
 	VALUE g, f = argv[argc - 1];
109
-	if ((g = rb_hash_aref(f, rb_intern("flags"))) != RHASH(f)->ifnone ||
181
-	if ((g = rb_hash_aref(f, rb_intern("flags"))) != RHASH(f)->ifnone ||
Lines 113-119 Link Here
113
 	    flags = NUM2INT(g);
185
 	    flags = NUM2INT(g);
114
 	}
186
 	}
115
 	argc--;
187
 	argc--;
116
@@ -3323,8 +3323,8 @@ bdb_clear(int argc, VALUE *argv, VALUE o
188
@@ -3053,9 +3067,11 @@ bdb_each_kvc(argc, argv, obj, sens, replace, type)
189
     }
190
 #endif
191
     type &= ~BDB_ST_ONE;
192
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
193
     if ((type & ~BDB_ST_PREFIX) == BDB_ST_DELETE) {
194
 	rb_secure(4);
195
     }
196
+#endif
197
     INIT_TXN(txnid, obj, dbst);
198
 #if HAVE_DB_CURSOR_4
199
     bdb_test_error(dbst->dbp->cursor(dbst->dbp, txnid, &dbcp, flags));
200
@@ -3309,7 +3325,9 @@ bdb_clear(int argc, VALUE *argv, VALUE obj)
201
 #endif
202
     int flags = 0;
203
 
204
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
205
     rb_secure(4);
206
+#endif
207
 #if HAVE_ST_DB_TRUNCATE
208
     INIT_TXN(txnid, obj, dbst);
209
 #if HAVE_CONST_DB_AUTO_COMMIT
210
@@ -3323,8 +3341,8 @@ bdb_clear(int argc, VALUE *argv, VALUE obj)
117
     flags = 0;
211
     flags = 0;
118
     if (argc && TYPE(argv[argc - 1]) == T_HASH) {
212
     if (argc && TYPE(argv[argc - 1]) == T_HASH) {
119
 	VALUE g, f = argv[argc - 1];
213
 	VALUE g, f = argv[argc - 1];
Lines 124-130 Link Here
124
 	    flags = NUM2INT(g);
218
 	    flags = NUM2INT(g);
125
 	}
219
 	}
126
 	argc--;
220
 	argc--;
127
@@ -3348,8 +3348,8 @@ bdb_replace(int argc, VALUE *argv, VALUE
221
@@ -3348,8 +3366,8 @@ bdb_replace(int argc, VALUE *argv, VALUE obj)
128
     flags = 0;
222
     flags = 0;
129
     if (TYPE(argv[argc - 1]) == T_HASH) {
223
     if (TYPE(argv[argc - 1]) == T_HASH) {
130
 	VALUE f = argv[argc - 1];
224
 	VALUE f = argv[argc - 1];
Lines 135-137 Link Here
135
 	    flags = NUM2INT(g);
229
 	    flags = NUM2INT(g);
136
 	}
230
 	}
137
 	argc--;
231
 	argc--;
232
@@ -3557,8 +3575,10 @@ bdb_sync(obj)
233
 {
234
     bdb_DB *dbst;
235
 
236
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
237
     if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4)
238
 	rb_raise(rb_eSecurityError, "Insecure: can't sync the database");
239
+#endif
240
     GetDB(obj, dbst);
241
     bdb_test_error(dbst->dbp->sync(dbst->dbp, 0));
242
     return Qtrue;
243
@@ -3884,7 +3904,9 @@ bdb_s_upgrade(int argc, VALUE *argv, VALUE obj)
244
     int flags;
245
     VALUE val;
246
 
247
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
248
     rb_secure(4);
249
+#endif
250
     flags = 0;
251
     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
252
 	flags = NUM2INT(b);
253
@@ -3908,7 +3930,9 @@ bdb_s_remove(int argc, VALUE *argv, VALUE obj)
254
     VALUE a, b, c;
255
     char *name, *subname;
256
 
257
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
258
     rb_secure(2);
259
+#endif
260
     c = bdb_i_create(obj);
261
     GetDB(c, dbst);
262
     name = subname = NULL;
263
@@ -3936,7 +3960,9 @@ bdb_s_rename(int argc, VALUE *argv, VALUE obj)
264
     VALUE a, b, c;
265
     char *name, *subname, *newname;
266
 
267
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
268
     rb_secure(2);
269
+#endif
270
     c = bdb_i_create(obj);
271
     GetDB(c, dbst);
272
     name = subname = NULL;
273
@@ -4222,7 +4248,9 @@ bdb_verify(int argc, VALUE *argv, VALUE obj)
274
 #endif
275
     FILE *io = NULL;
276
 
277
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
278
     rb_secure(4);
279
+#endif
280
     file = database = NULL;
281
     switch(rb_scan_args(argc, argv, "02", &iov, &flagv)) {
282
     case 2:
(-)files/patch-src-cursor.c (-1 / +32 lines)
Lines 1-6 Link Here
1
--- src/cursor.c.orig	2011-04-06 19:35:39 UTC
1
--- src/cursor.c.orig	2011-04-06 19:35:39 UTC
2
+++ src/cursor.c
2
+++ src/cursor.c
3
@@ -29,8 +29,8 @@ bdb_cursor(int argc, VALUE *argv, VALUE 
3
@@ -29,8 +29,8 @@ bdb_cursor(int argc, VALUE *argv, VALUE obj)
4
     flags = 0;
4
     flags = 0;
5
     if (argc && TYPE(argv[argc - 1]) == T_HASH) {
5
     if (argc && TYPE(argv[argc - 1]) == T_HASH) {
6
 	VALUE g, f = argv[argc - 1];
6
 	VALUE g, f = argv[argc - 1];
Lines 11-13 Link Here
11
 	    flags = NUM2INT(g);
11
 	    flags = NUM2INT(g);
12
 	}
12
 	}
13
 	argc--;
13
 	argc--;
14
@@ -67,8 +67,10 @@ bdb_cursor_close(VALUE obj)
15
     bdb_DBC *dbcst;
16
     bdb_DB *dbst;
17
     
18
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
19
     if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4)
20
 	rb_raise(rb_eSecurityError, "Insecure: can't close the cursor");
21
+#endif
22
     GetCursorDB(obj, dbcst, dbst);
23
     bdb_test_error(dbcst->dbc->c_close(dbcst->dbc));
24
     dbcst->dbc = NULL;
25
@@ -82,7 +84,9 @@ bdb_cursor_del(VALUE obj)
26
     bdb_DBC *dbcst;
27
     bdb_DB *dbst;
28
     
29
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
30
     rb_secure(4);
31
+#endif
32
     GetCursorDB(obj, dbcst, dbst);
33
     bdb_test_error(dbcst->dbc->c_del(dbcst->dbc, flags));
34
     return Qtrue;
35
@@ -353,7 +357,9 @@ bdb_cursor_put(int argc, VALUE *argv, VALUE obj)
36
     db_recno_t recno;
37
     int ret;
38
 
39
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
40
     rb_secure(4);
41
+#endif
42
     MEMZERO(&key, DBT, 1);
43
     MEMZERO(&data, DBT, 1);
44
     cnt = rb_scan_args(argc, argv, "21", &a, &b, &c);
(-)files/patch-src-recnum.c (-2 / +12 lines)
Lines 1-6 Link Here
1
--- src/recnum.c.orig	2011-04-06 19:35:39 UTC
1
--- src/recnum.c.orig	2011-04-06 19:35:39 UTC
2
+++ src/recnum.c
2
+++ src/recnum.c
3
@@ -17,7 +17,7 @@ bdb_recnum_init(int argc, VALUE *argv, V
3
@@ -17,7 +17,7 @@ bdb_recnum_init(int argc, VALUE *argv, VALUE obj)
4
 	argc++;
4
 	argc++;
5
     }
5
     }
6
     rb_hash_aset(argv[argc - 1], array, INT2FIX(0));
6
     rb_hash_aset(argv[argc - 1], array, INT2FIX(0));
Lines 9-16 Link Here
9
 	rb_hash_aset(argv[argc - 1], sarray, INT2FIX(0));
9
 	rb_hash_aset(argv[argc - 1], sarray, INT2FIX(0));
10
     }
10
     }
11
     rb_hash_aset(argv[argc - 1], rb_str_new2("set_flags"), INT2FIX(DB_RENUMBER));
11
     rb_hash_aset(argv[argc - 1], rb_str_new2("set_flags"), INT2FIX(DB_RENUMBER));
12
@@ -697,8 +697,8 @@ bdb_sary_clear(int argc, VALUE *argv, VA
12
@@ -112,7 +112,9 @@ bdb_intern_shift_pop(VALUE obj, int depart, int len)
13
     db_recno_t recno;
14
     VALUE res;
13
 
15
 
16
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
17
     rb_secure(4);
18
+#endif
19
     INIT_TXN(txnid, obj, dbst);
20
 #if HAVE_DB_CURSOR_4
21
     bdb_test_error(dbst->dbp->cursor(dbst->dbp, txnid, &dbcp, 0));
22
@@ -697,8 +699,8 @@ bdb_sary_clear(int argc, VALUE *argv, VALUE obj)
23
 
14
     if (argc && TYPE(argv[argc - 1]) == T_HASH) {
24
     if (argc && TYPE(argv[argc - 1]) == T_HASH) {
15
 	VALUE f = argv[argc - 1];
25
 	VALUE f = argv[argc - 1];
16
-	if ((g = rb_hash_aref(f, rb_intern("flags"))) != RHASH(f)->ifnone ||
26
-	if ((g = rb_hash_aref(f, rb_intern("flags"))) != RHASH(f)->ifnone ||
(-)files/patch-src__env.c (+41 lines)
Line 0 Link Here
1
--- src/env.c.orig	2011-04-06 19:35:39 UTC
2
+++ src/env.c
3
@@ -1121,9 +1121,11 @@ bdb_env_close(VALUE obj)
4
 {
5
     bdb_ENV *envst;
6
 
7
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
8
     if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4) {
9
 	rb_raise(rb_eSecurityError, "Insecure: can't close the environnement");
10
     }
11
+#endif
12
     GetEnvDB(obj, envst);
13
     bdb_final(envst);
14
     RDATA(obj)->dfree = free;
15
@@ -1517,12 +1519,16 @@ bdb_env_init(int argc, VALUE *argv, VALUE obj)
16
 	flags = NUM2INT(c);
17
         break;
18
     }
19
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
20
     if (flags & DB_CREATE) {
21
 	rb_secure(4);
22
     }
23
+#endif
24
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 1
25
     if (flags & DB_USE_ENVIRON) {
26
 	rb_secure(1);
27
     }
28
+#endif
29
 #ifndef BDB_NO_THREAD_COMPILE
30
     if (!(envst->options & BDB_NO_THREAD)) {
31
 	bdb_set_func(envst);
32
@@ -1658,7 +1664,9 @@ bdb_env_s_remove(int argc, VALUE *argv, VALUE obj)
33
     char *db_home;
34
     int flag = 0;
35
 
36
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
37
     rb_secure(2);
38
+#endif
39
     if (rb_scan_args(argc, argv, "11", &a, &b) == 2) {
40
 	flag = NUM2INT(b);
41
     }
(-)files/patch-src__transaction.c (+52 lines)
Line 0 Link Here
1
--- src/transaction.c.orig	2011-04-06 19:35:39 UTC
2
+++ src/transaction.c
3
@@ -139,7 +139,9 @@ bdb_txn_commit(int argc, VALUE *argv, VALUE obj)
4
     VALUE a;
5
     int flags;
6
 
7
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
8
     rb_secure(4);
9
+#endif
10
     flags = 0;
11
     if (rb_scan_args(argc, argv, "01", &a) == 1) {
12
         flags = NUM2INT(a);
13
@@ -552,7 +554,9 @@ bdb_env_recover(VALUE obj)
14
     if (!rb_block_given_p()) {
15
         rb_raise(bdb_eFatal, "call out of an iterator");
16
     }
17
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
18
     rb_secure(4);
19
+#endif
20
     GetEnvDB(obj, envst);
21
     txnv = Data_Make_Struct(bdb_cTxn, bdb_TXN, bdb_txn_mark, bdb_txn_free, txnst);
22
     txnst->env = obj;
23
@@ -584,7 +588,9 @@ bdb_txn_discard(VALUE obj)
24
     bdb_TXN *txnst;
25
     int flags;
26
 
27
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
28
     rb_secure(4);
29
+#endif
30
     flags = 0;
31
     GetTxnDB(obj, txnst);
32
 #if HAVE_ST_DB_TXN_DISCARD
33
@@ -761,7 +767,9 @@ bdb_env_dbremove(int argc, VALUE *argv, VALUE obj)
34
     bdb_TXN *txnst;
35
     DB_TXN *txnid;
36
 
37
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
38
     rb_secure(2);
39
+#endif
40
     a = b = c = Qnil;
41
     file = database = NULL;
42
     flags = 0;
43
@@ -810,7 +818,9 @@ bdb_env_dbrename(int argc, VALUE *argv, VALUE obj)
44
     bdb_TXN *txnst;
45
     DB_TXN *txnid;
46
 
47
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 2
48
     rb_secure(2);
49
+#endif
50
     a = b = c = Qnil;
51
     file = database = newname = NULL;
52
     flags = 0;

Return to bug 245339