aboutsummaryrefslogtreecommitdiffstats
path: root/databases/rubygem-bdb1/files/patch-ext_bdb1_bdb1.c
blob: d039d2ebdbb8cf4506be528d4baad3380f4934d3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
--- ext/bdb1/bdb1.c.orig	2022-05-09 10:22:04 UTC
+++ ext/bdb1/bdb1.c
@@ -733,9 +733,11 @@ bdb1_close(VALUE obj)
     VALUE opt;
     bdb1_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 database");
     }
+#endif
     Data_Get_Struct(obj, bdb1_DB, dbst);
     bdb1_i_close(dbst);
     return Qnil;
@@ -752,15 +754,15 @@ bdb1_s_alloc(VALUE obj)
     dbst->options |= BDB1_NOT_OPEN;
     cl = obj;
     while (cl) {
-	if (cl == bdb1_cBtree || RCLASS(cl)->m_tbl == RCLASS(bdb1_cBtree)->m_tbl) {
+	if (cl == bdb1_cBtree || rb_obj_classname(cl) == rb_class2name(bdb1_cBtree)) {
 	    dbst->type = DB_BTREE;
 	    break;
 	}
-	else if (cl == bdb1_cHash || RCLASS(cl)->m_tbl == RCLASS(bdb1_cHash)->m_tbl) {
+	else if (cl == bdb1_cHash || rb_obj_classname(cl) == rb_class2name(bdb1_cHash)) {
 	    dbst->type = DB_HASH;
 	    break;
 	}
-	else if (cl == bdb1_cRecnum || RCLASS(cl)->m_tbl == RCLASS(bdb1_cRecnum)->m_tbl) {
+	else if (cl == bdb1_cRecnum || rb_obj_classname(cl) == rb_class2name(bdb1_cRecnum)) {
 	    dbst->type = DB_RECNO;
 	    break;
 	}
@@ -878,7 +880,9 @@ bdb1_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
     GetDB(obj, dbst);
     if (rb_scan_args(argc, argv, "21", &a, &b, &c) == 3)
         flags = NUM2INT(c);
@@ -1071,7 +1075,9 @@ bdb1_del(VALUE obj, VALUE a)
     db_recno_t recno;
     volatile VALUE c = Qnil;
 
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
     rb_secure(4);
+#endif
     GetDB(obj, dbst);
     if (dbst->type == DB_HASH) {
 	rb_warning("delete can give strange result with DB_HASH");
@@ -1112,7 +1118,9 @@ bdb1_delete_if(VALUE obj)
     int ret, ret1, flags;
     db_recno_t recno;
 
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
     rb_secure(4);
+#endif
     GetDB(obj, dbst);
     INIT_RECNO(dbst, key, recno);
     DATA_ZERO(data);
@@ -1138,7 +1146,9 @@ bdb1_clear(VALUE obj)
     int ret, value, flags;
     db_recno_t recno;
 
+#if defined(RUBY_SAFE_LEVEL_MAX) && RUBY_SAFE_LEVEL_MAX >= 4
     rb_secure(4);
+#endif
     GetDB(obj, dbst);
     INIT_RECNO(dbst, key, recno);
     DATA_ZERO(data);
@@ -1536,8 +1546,10 @@ bdb1_sync(VALUE obj)
 {
     bdb1_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);
     bdb1_test_error(dbst->dbp->sync(dbst->dbp, 0));
     return Qtrue;