Skip to content

Commit 647bccd

Browse files
authored
Support for Ruby 3.x
The taint mechanism was deprecated in Ruby 2.7 and removed in Ruby 3.0 https://bugs.ruby-lang.org/issues/16131 ruby/ruby#2476 From Ruby 2.7, `Object#{taint,untaint,trust,untrust}` and related functions in the C-API no longer have an effect (all objects are always considered untainted), and are now removed.
1 parent 669b8f8 commit 647bccd

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed

ext/odbc.c

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ uc_tainted_str_new(SQLWCHAR *str, int len)
510510
if ((cp != NULL) && (str != NULL)) {
511511
ulen = mkutf(cp, str, len);
512512
}
513-
v = rb_tainted_str_new((cp != NULL) ? cp : "", ulen);
513+
v = rb_str_new((cp != NULL) ? cp : "", ulen);
514514
#ifdef USE_RB_ENC
515515
rb_enc_associate(v, rb_enc);
516516
#endif
@@ -679,11 +679,11 @@ uc_free(SQLWCHAR *str)
679679
#endif
680680

681681
static VALUE
682-
utf8_tainted_str_new(SQLCHAR *str, int len)
682+
utf8_str_new(SQLCHAR *str, int len)
683683
{
684684
VALUE v;
685685

686-
v = rb_tainted_str_new(str, len);
686+
v = rb_str_new(str, len);
687687

688688
#ifdef USE_RB_ENC
689689
if(rb_encoding_is_utf8)
@@ -1016,7 +1016,7 @@ set_err(const char *msg, int warn)
10161016
rb_enc_associate(v, rb_enc);
10171017
#endif
10181018
a = rb_ary_new2(1);
1019-
rb_ary_push(a, rb_obj_taint(v));
1019+
rb_ary_push(a, v);
10201020
CVAR_SET(Cobj, warn ? IDatatinfo : IDataterror, a);
10211021
return STR2CSTR(v);
10221022
}
@@ -1094,7 +1094,7 @@ get_err_or_info(SQLHENV henv, SQLHDBC hdbc, SQLHSTMT hstmt, int isinfo)
10941094
v0 = v;
10951095
a = rb_ary_new();
10961096
}
1097-
rb_ary_push(a, rb_obj_taint(v));
1097+
rb_ary_push(a, v);
10981098
tracemsg(1, fprintf(stderr, " | %s\n", STR2CSTR(v)););
10991099
}
11001100
}
@@ -1190,7 +1190,7 @@ get_installer_err()
11901190
v0 = v;
11911191
a = rb_ary_new();
11921192
}
1193-
rb_ary_push(a, rb_obj_taint(v));
1193+
rb_ary_push(a, v);
11941194
tracemsg(1, fprintf(stderr, " | %s\n", STR2CSTR(v)););
11951195
}
11961196
}
@@ -1445,7 +1445,7 @@ dbc_raise(VALUE self, VALUE msg)
14451445
buf[SQL_MAX_MESSAGE_LENGTH] = '\0';
14461446
v = rb_str_new2(buf);
14471447
a = rb_ary_new2(1);
1448-
rb_ary_push(a, rb_obj_taint(v));
1448+
rb_ary_push(a, v);
14491449
CVAR_SET(Cobj, IDataterror, a);
14501450
rb_raise(Cerror, "%s", buf);
14511451
return Qnil;
@@ -1535,8 +1535,8 @@ dbc_dsns(VALUE self)
15351535
#else
15361536
dsnLen = (dsnLen == 0) ? (SQLSMALLINT) strlen(dsn) : dsnLen;
15371537
descrLen = (descrLen == 0) ? (SQLSMALLINT) strlen(descr) : descrLen;
1538-
rb_iv_set(odsn, "@name", rb_tainted_str_new(dsn, dsnLen));
1539-
rb_iv_set(odsn, "@descr", rb_tainted_str_new(descr, descrLen));
1538+
rb_iv_set(odsn, "@name", rb_str_new(dsn, dsnLen));
1539+
rb_iv_set(odsn, "@descr", rb_str_new(descr, descrLen));
15401540
#endif
15411541
rb_ary_push(aret, odsn);
15421542
first = dsnLen = descrLen = 0;
@@ -1600,13 +1600,13 @@ dbc_drivers(VALUE self)
16001600
}
16011601
#else
16021602
driverLen = (driverLen == 0) ? (SQLSMALLINT) strlen(driver) : driverLen;
1603-
rb_iv_set(odrv, "@name", rb_tainted_str_new(driver, driverLen));
1603+
rb_iv_set(odrv, "@name", rb_str_new(driver, driverLen));
16041604
for (attr = attrs; *attr; attr += strlen(attr) + 1) {
16051605
char *p = strchr(attr, '=');
16061606

16071607
if ((p != NULL) && (p != attr)) {
1608-
rb_hash_aset(h, rb_tainted_str_new(attr, p - attr),
1609-
rb_tainted_str_new2(p + 1));
1608+
rb_hash_aset(h, rb_str_new(attr, p - attr),
1609+
rb_str_new2(p + 1));
16101610
count++;
16111611
}
16121612
}
@@ -1915,7 +1915,7 @@ dbc_rfdsn(int argc, VALUE *argv, VALUE self)
19151915
if (SQLReadFileDSN((LPCSTR) sfname, (LPCSTR) saname,
19161916
(LPCSTR) skname, (LPSTR) valbuf,
19171917
sizeof (valbuf), NULL)) {
1918-
return rb_tainted_str_new2((char *) valbuf);
1918+
return rb_str_new2((char *) valbuf);
19191919
}
19201920
}
19211921
#else
@@ -1925,7 +1925,7 @@ dbc_rfdsn(int argc, VALUE *argv, VALUE self)
19251925
valbuf[0] = '\0';
19261926
if (SQLReadFileDSN(sfname, saname, skname, valbuf,
19271927
sizeof (valbuf), NULL)) {
1928-
return rb_tainted_str_new2(valbuf);
1928+
return rb_str_new2(valbuf);
19291929
}
19301930
#endif
19311931
#if defined(HAVE_SQLINSTALLERERROR) || (defined(UNICODE) && defined(HAVE_SQLINSTALLERERRORW))
@@ -3707,7 +3707,7 @@ make_column(SQLHSTMT hstmt, int i, int upc, int use_scn)
37073707
len = 0;
37083708
}
37093709
mkutf(tmp, name, len);
3710-
v = rb_tainted_str_new2(upcase_if(tmp, 1));
3710+
v = rb_str_new2(upcase_if(tmp, 1));
37113711
#ifdef USE_RB_ENC
37123712
rb_enc_associate(v, rb_enc);
37133713
#endif
@@ -3719,7 +3719,7 @@ make_column(SQLHSTMT hstmt, int i, int upc, int use_scn)
37193719
rb_iv_set(obj, "@name", uc_tainted_str_new2(name));
37203720
}
37213721
#else
3722-
rb_iv_set(obj, "@name", rb_tainted_str_new2(upcase_if(name, upc)));
3722+
rb_iv_set(obj, "@name", rb_str_new2(upcase_if(name, upc)));
37233723
#endif
37243724
v = Qnil;
37253725
name[0] = 0;
@@ -3737,7 +3737,7 @@ make_column(SQLHSTMT hstmt, int i, int upc, int use_scn)
37373737
#ifdef UNICODE
37383738
v = uc_tainted_str_new2(name);
37393739
#else
3740-
v = rb_tainted_str_new2(name);
3740+
v = rb_str_new2(name);
37413741
#endif
37423742
}
37433743
rb_iv_set(obj, "@table", v);
@@ -5816,7 +5816,7 @@ stmt_param_output_value(int argc, VALUE *argv, VALUE self)
58165816
break;
58175817
#endif
58185818
case SQL_C_CHAR:
5819-
v = utf8_tainted_str_new(q->paraminfo[vnum].outbuf,
5819+
v = utf8_str_new(q->paraminfo[vnum].outbuf,
58205820
q->paraminfo[vnum].rlen);
58215821
break;
58225822
}
@@ -5892,7 +5892,7 @@ stmt_cursorname(int argc, VALUE *argv, VALUE self)
58925892
return uc_tainted_str_new(cname, cnLen);
58935893
#else
58945894
cnLen = (cnLen == 0) ? (SQLSMALLINT) strlen((char *) cname) : cnLen;
5895-
return rb_tainted_str_new((char *) cname, cnLen);
5895+
return rb_str_new((char *) cname, cnLen);
58965896
#endif
58975897
}
58985898
if (TYPE(cn) != T_STRING) {
@@ -5978,7 +5978,7 @@ stmt_columns(int argc, VALUE *argv, VALUE self)
59785978

59795979
sprintf(buf, "#%d", i);
59805980
name = rb_str_dup(name);
5981-
name = rb_obj_taint(rb_str_cat2(name, buf));
5981+
name = rb_str_cat2(name, buf);
59825982
}
59835983
rb_hash_aset(res, name, obj);
59845984
}
@@ -6227,15 +6227,15 @@ do_fetch(STMT *q, int mode)
62276227
}
62286228
for (i = 0; i < 4 * q->ncols; i++) {
62296229
res = colbuf[i / q->ncols];
6230-
cname = rb_tainted_str_new2(q->colnames[i]);
6230+
cname = rb_str_new2(q->colnames[i]);
62316231
#ifdef USE_RB_ENC
62326232
rb_enc_associate(cname, rb_enc);
62336233
#endif
62346234
q->colvals[i] = cname;
62356235
if (rb_funcall(res, IDkeyp, 1, cname) == Qtrue) {
62366236
char *p;
62376237

6238-
cname = rb_tainted_str_new2(q->colnames[i]);
6238+
cname = rb_str_new2(q->colnames[i]);
62396239
#ifdef USE_RB_ENC
62406240
rb_enc_associate(cname, rb_enc);
62416241
#endif
@@ -6476,7 +6476,7 @@ do_fetch(STMT *q, int mode)
64766476
break;
64776477
#endif
64786478
default:
6479-
v = utf8_tainted_str_new(valp, curlen);
6479+
v = utf8_str_new(valp, curlen);
64806480
break;
64816481
}
64826482
}
@@ -6489,14 +6489,14 @@ do_fetch(STMT *q, int mode)
64896489
valp = q->colnames[i + offc];
64906490
name = (q->colvals == NULL) ? Qnil : q->colvals[i + offc];
64916491
if (name == Qnil) {
6492-
name = rb_tainted_str_new2(valp);
6492+
name = rb_str_new2(valp);
64936493
#ifdef USE_RB_ENC
64946494
rb_enc_associate(name, rb_enc);
64956495
#endif
64966496
if (rb_funcall(res, IDkeyp, 1, name) == Qtrue) {
64976497
char *p;
64986498

6499-
name = rb_tainted_str_new2(valp);
6499+
name = rb_str_new2(valp);
65006500
#ifdef USE_RB_ENC
65016501
rb_enc_associate(name, rb_enc);
65026502
#endif

0 commit comments

Comments
 (0)