From ffd0820ab317542f8780aac475da590a4bdbc7a8 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Tue, 24 Sep 2019 20:59:12 -0700 Subject: Deprecate taint/trust and related methods, and make the methods no-ops This removes the related tests, and puts the related specs behind version guards. This affects all code in lib, including some libraries that may want to support older versions of Ruby. --- ext/socket/ancdata.c | 5 ++--- ext/socket/init.c | 5 +---- ext/socket/raddrinfo.c | 10 +++------- ext/socket/socket.c | 7 +------ 4 files changed, 7 insertions(+), 20 deletions(-) (limited to 'ext/socket') diff --git a/ext/socket/ancdata.c b/ext/socket/ancdata.c index 69c766e6fd..84463af061 100644 --- a/ext/socket/ancdata.c +++ b/ext/socket/ancdata.c @@ -1631,10 +1631,9 @@ bsock_recvmsg_internal(VALUE sock, } if (NIL_P(dat_str)) - dat_str = rb_tainted_str_new(datbuf, ss); + dat_str = rb_str_new(datbuf, ss); else { rb_str_resize(dat_str, ss); - OBJ_TAINT(dat_str); rb_obj_reveal(dat_str, rb_cString); } @@ -1660,7 +1659,7 @@ bsock_recvmsg_internal(VALUE sock, } ctl_end = (char*)cmh + cmh->cmsg_len; clen = (ctl_end <= msg_end ? ctl_end : msg_end) - (char*)CMSG_DATA(cmh); - ctl = ancdata_new(family, cmh->cmsg_level, cmh->cmsg_type, rb_tainted_str_new((char*)CMSG_DATA(cmh), clen)); + ctl = ancdata_new(family, cmh->cmsg_level, cmh->cmsg_type, rb_str_new((char*)CMSG_DATA(cmh), clen)); if (request_scm_rights) make_io_for_unix_rights(ctl, cmh, msg_end); else diff --git a/ext/socket/init.c b/ext/socket/init.c index 44d1506973..0675194d74 100644 --- a/ext/socket/init.c +++ b/ext/socket/init.c @@ -143,7 +143,7 @@ rsock_strbuf(VALUE str, long buflen) { long len; - if (NIL_P(str)) return rb_tainted_str_new(0, buflen); + if (NIL_P(str)) return rb_str_new(0, buflen); StringValue(str); len = RSTRING_LEN(str); @@ -201,7 +201,6 @@ rsock_s_recvfrom(VALUE sock, int argc, VALUE *argv, enum sock_recv_type from) if (slen != RSTRING_LEN(str)) { rb_str_set_len(str, slen); } - rb_obj_taint(str); switch (from) { case RECV_RECV: return str; @@ -282,7 +281,6 @@ rsock_s_recvfrom_nonblock(VALUE sock, VALUE len, VALUE flg, VALUE str, if (slen != RSTRING_LEN(str)) { rb_str_set_len(str, slen); } - rb_obj_taint(str); switch (from) { case RECV_RECV: return str; @@ -329,7 +327,6 @@ rsock_read_nonblock(VALUE sock, VALUE length, VALUE buf, VALUE ex) VALUE str = rsock_strbuf(buf, len); char *ptr; - OBJ_TAINT(str); GetOpenFile(sock, fptr); if (len == 0) { diff --git a/ext/socket/raddrinfo.c b/ext/socket/raddrinfo.c index cc296749b0..9ec2fdc329 100644 --- a/ext/socket/raddrinfo.c +++ b/ext/socket/raddrinfo.c @@ -969,7 +969,7 @@ init_addrinfo_getaddrinfo(rb_addrinfo_t *rai, VALUE node, VALUE service, canonname = Qnil; if (res->ai->ai_canonname) { - canonname = rb_tainted_str_new_cstr(res->ai->ai_canonname); + canonname = rb_str_new_cstr(res->ai->ai_canonname); OBJ_FREEZE(canonname); } @@ -1019,8 +1019,6 @@ make_inspectname(VALUE node, VALUE service, struct addrinfo *res) rb_str_catf(inspectname, ":%d", FIX2INT(service)); } if (!NIL_P(inspectname)) { - OBJ_INFECT(inspectname, node); - OBJ_INFECT(inspectname, service); OBJ_FREEZE(inspectname); } return inspectname; @@ -1039,7 +1037,7 @@ addrinfo_firstonly_new(VALUE node, VALUE service, VALUE family, VALUE socktype, canonname = Qnil; if (res->ai->ai_canonname) { - canonname = rb_tainted_str_new_cstr(res->ai->ai_canonname); + canonname = rb_str_new_cstr(res->ai->ai_canonname); OBJ_FREEZE(canonname); } @@ -1069,7 +1067,7 @@ addrinfo_list_new(VALUE node, VALUE service, VALUE family, VALUE socktype, VALUE VALUE canonname = Qnil; if (r->ai_canonname) { - canonname = rb_tainted_str_new_cstr(r->ai_canonname); + canonname = rb_str_new_cstr(r->ai_canonname); OBJ_FREEZE(canonname); } @@ -1908,7 +1906,6 @@ addrinfo_to_sockaddr(VALUE self) rb_addrinfo_t *rai = get_addrinfo(self); VALUE ret; ret = rb_str_new((char*)&rai->addr, rai->sockaddr_len); - OBJ_INFECT(ret, self); return ret; } @@ -2591,7 +2588,6 @@ addrinfo_s_unix(int argc, VALUE *argv, VALUE self) addr = addrinfo_s_allocate(rb_cAddrinfo); DATA_PTR(addr) = rai = alloc_addrinfo(); init_unix_addrinfo(rai, path, socktype); - OBJ_INFECT(addr, path); return addr; } diff --git a/ext/socket/socket.c b/ext/socket/socket.c index f1017910ce..bfeb30340c 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -1164,7 +1164,7 @@ sock_s_getservbyport(int argc, VALUE *argv, VALUE _) if (!sp) { rb_raise(rb_eSocket, "no such service for port %d/%s", (int)portnum, protoname); } - return rb_tainted_str_new2(sp->s_name); + return rb_str_new2(sp->s_name); } /* @@ -1414,8 +1414,6 @@ sock_s_pack_sockaddr_in(VALUE self, VALUE port, VALUE host) VALUE addr = rb_str_new((char*)res->ai->ai_addr, res->ai->ai_addrlen); rb_freeaddrinfo(res); - OBJ_INFECT(addr, port); - OBJ_INFECT(addr, host); return addr; } @@ -1457,7 +1455,6 @@ sock_s_unpack_sockaddr_in(VALUE self, VALUE addr) #endif } host = rsock_make_ipaddr((struct sockaddr*)sockaddr, RSTRING_SOCKLEN(addr)); - OBJ_INFECT(host, addr); return rb_assoc_new(INT2NUM(ntohs(sockaddr->sin_port)), host); } @@ -1487,7 +1484,6 @@ sock_s_pack_sockaddr_un(VALUE self, VALUE path) } memcpy(sockaddr.sun_path, RSTRING_PTR(path), RSTRING_LEN(path)); addr = rb_str_new((char*)&sockaddr, rsock_unix_sockaddr_len(path)); - OBJ_INFECT(addr, path); return addr; } @@ -1524,7 +1520,6 @@ sock_s_unpack_sockaddr_un(VALUE self, VALUE addr) RSTRING_LEN(addr), (int)sizeof(struct sockaddr_un)); } path = rsock_unixpath_str(sockaddr, RSTRING_SOCKLEN(addr)); - OBJ_INFECT(path, addr); return path; } #endif -- cgit v1.2.3