зеркало из https://github.com/github/ruby.git
* include/ruby/ruby.h: $SAFE=2 is now obsolete.
* dir.c, ext/fiddle/handle.c, ext/socket/basicsocket.c, file.c gc.c, io.c, process.c, safe.c, signal.c, win32/file.c: removed code for $SAFE=2 * test/erb/test_erb.rb, test/fiddle/test_handle.rb test/ruby/test_env.rb: removed tests for $SAFE=2. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
e8ce2a92d3
Коммит
5d6ca9e950
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
|||
Thu Jun 18 23:20:46 2015 SHIBATA Hiroshi <hsbt@ruby-lang.org>
|
||||
|
||||
* include/ruby/ruby.h: $SAFE=2 is now obsolete.
|
||||
|
||||
* dir.c, ext/fiddle/handle.c, ext/socket/basicsocket.c, file.c
|
||||
gc.c, io.c, process.c, safe.c, signal.c, win32/file.c:
|
||||
removed code for $SAFE=2
|
||||
|
||||
* test/erb/test_erb.rb, test/fiddle/test_handle.rb
|
||||
test/ruby/test_env.rb: removed tests for $SAFE=2.
|
||||
|
||||
Thu Jun 18 22:50:07 2015 Yusuke Endoh <mame@ruby-lang.org>
|
||||
|
||||
* enc/make_encmake.rb: added --transes and --no-transes options.
|
||||
|
|
2
dir.c
2
dir.c
|
@ -941,7 +941,6 @@ dir_s_chdir(int argc, VALUE *argv, VALUE obj)
|
|||
{
|
||||
VALUE path = Qnil;
|
||||
|
||||
rb_secure(2);
|
||||
if (rb_scan_args(argc, argv, "01", &path) == 1) {
|
||||
FilePathValue(path);
|
||||
path = rb_str_encode_ospath(path);
|
||||
|
@ -1013,7 +1012,6 @@ check_dirname(volatile VALUE *dir)
|
|||
long len;
|
||||
rb_encoding *enc;
|
||||
|
||||
rb_secure(2);
|
||||
FilePathValue(d);
|
||||
enc = rb_enc_get(d);
|
||||
RSTRING_GETMEM(d, path, len);
|
||||
|
|
|
@ -154,8 +154,6 @@ rb_fiddle_handle_initialize(int argc, VALUE argv[], VALUE self)
|
|||
rb_bug("rb_fiddle_handle_new");
|
||||
}
|
||||
|
||||
rb_secure(2);
|
||||
|
||||
#if defined(_WIN32)
|
||||
if( !clib ){
|
||||
HANDLE rb_libruby_handle(void);
|
||||
|
@ -320,7 +318,6 @@ fiddle_handle_sym(void *handle, const char *name)
|
|||
#endif
|
||||
void (*func)();
|
||||
|
||||
rb_secure(2);
|
||||
#ifdef HAVE_DLERROR
|
||||
dlerror();
|
||||
#endif
|
||||
|
|
|
@ -213,7 +213,6 @@ bsock_setsockopt(int argc, VALUE *argv, VALUE sock)
|
|||
rb_scan_args(argc, argv, "30", &lev, &optname, &val);
|
||||
}
|
||||
|
||||
rb_secure(2);
|
||||
GetOpenFile(sock, fptr);
|
||||
family = rsock_getfamily(fptr->fd);
|
||||
level = rsock_level_arg(family, lev);
|
||||
|
|
33
file.c
33
file.c
|
@ -1014,7 +1014,6 @@ rb_stat(VALUE file, struct stat *st)
|
|||
{
|
||||
VALUE tmp;
|
||||
|
||||
rb_secure(2);
|
||||
tmp = rb_check_convert_type(file, T_FILE, "IO", "to_io");
|
||||
if (!NIL_P(tmp)) {
|
||||
rb_io_t *fptr;
|
||||
|
@ -1159,7 +1158,6 @@ rb_file_s_lstat(VALUE klass, VALUE fname)
|
|||
#ifdef HAVE_LSTAT
|
||||
struct stat st;
|
||||
|
||||
rb_secure(2);
|
||||
FilePathValue(fname);
|
||||
fname = rb_str_encode_ospath(fname);
|
||||
if (lstat(StringValueCStr(fname), &st) == -1) {
|
||||
|
@ -1193,7 +1191,6 @@ rb_file_lstat(VALUE obj)
|
|||
struct stat st;
|
||||
VALUE path;
|
||||
|
||||
rb_secure(2);
|
||||
GetOpenFile(obj, fptr);
|
||||
if (NIL_P(fptr->pathv)) return Qnil;
|
||||
path = rb_str_encode_ospath(fptr->pathv);
|
||||
|
@ -1407,7 +1404,6 @@ rb_file_symlink_p(VALUE obj, VALUE fname)
|
|||
#ifdef S_ISLNK
|
||||
struct stat st;
|
||||
|
||||
rb_secure(2);
|
||||
FilePathValue(fname);
|
||||
fname = rb_str_encode_ospath(fname);
|
||||
if (lstat(StringValueCStr(fname), &st) < 0) return Qfalse;
|
||||
|
@ -1559,7 +1555,6 @@ rb_file_exists_p(VALUE obj, VALUE fname)
|
|||
static VALUE
|
||||
rb_file_readable_p(VALUE obj, VALUE fname)
|
||||
{
|
||||
rb_secure(2);
|
||||
FilePathValue(fname);
|
||||
fname = rb_str_encode_ospath(fname);
|
||||
if (eaccess(StringValueCStr(fname), R_OK) < 0) return Qfalse;
|
||||
|
@ -1577,7 +1572,6 @@ rb_file_readable_p(VALUE obj, VALUE fname)
|
|||
static VALUE
|
||||
rb_file_readable_real_p(VALUE obj, VALUE fname)
|
||||
{
|
||||
rb_secure(2);
|
||||
FilePathValue(fname);
|
||||
fname = rb_str_encode_ospath(fname);
|
||||
if (access(StringValueCStr(fname), R_OK) < 0) return Qfalse;
|
||||
|
@ -1633,7 +1627,6 @@ rb_file_world_readable_p(VALUE obj, VALUE fname)
|
|||
static VALUE
|
||||
rb_file_writable_p(VALUE obj, VALUE fname)
|
||||
{
|
||||
rb_secure(2);
|
||||
FilePathValue(fname);
|
||||
fname = rb_str_encode_ospath(fname);
|
||||
if (eaccess(StringValueCStr(fname), W_OK) < 0) return Qfalse;
|
||||
|
@ -1651,7 +1644,6 @@ rb_file_writable_p(VALUE obj, VALUE fname)
|
|||
static VALUE
|
||||
rb_file_writable_real_p(VALUE obj, VALUE fname)
|
||||
{
|
||||
rb_secure(2);
|
||||
FilePathValue(fname);
|
||||
fname = rb_str_encode_ospath(fname);
|
||||
if (access(StringValueCStr(fname), W_OK) < 0) return Qfalse;
|
||||
|
@ -1699,7 +1691,6 @@ rb_file_world_writable_p(VALUE obj, VALUE fname)
|
|||
static VALUE
|
||||
rb_file_executable_p(VALUE obj, VALUE fname)
|
||||
{
|
||||
rb_secure(2);
|
||||
FilePathValue(fname);
|
||||
fname = rb_str_encode_ospath(fname);
|
||||
if (eaccess(StringValueCStr(fname), X_OK) < 0) return Qfalse;
|
||||
|
@ -1717,7 +1708,6 @@ rb_file_executable_p(VALUE obj, VALUE fname)
|
|||
static VALUE
|
||||
rb_file_executable_real_p(VALUE obj, VALUE fname)
|
||||
{
|
||||
rb_secure(2);
|
||||
FilePathValue(fname);
|
||||
fname = rb_str_encode_ospath(fname);
|
||||
if (access(StringValueCStr(fname), X_OK) < 0) return Qfalse;
|
||||
|
@ -1850,7 +1840,6 @@ check3rdbyte(VALUE fname, int mode)
|
|||
{
|
||||
struct stat st;
|
||||
|
||||
rb_secure(2);
|
||||
FilePathValue(fname);
|
||||
fname = rb_str_encode_ospath(fname);
|
||||
if (STAT(StringValueCStr(fname), &st) < 0) return Qfalse;
|
||||
|
@ -1945,7 +1934,6 @@ rb_file_identical_p(VALUE obj, VALUE fname1, VALUE fname2)
|
|||
HANDLE f1 = 0, f2 = 0;
|
||||
# endif
|
||||
|
||||
rb_secure(2);
|
||||
# ifdef _WIN32
|
||||
f1 = w32_io_info(&fname1, &st1);
|
||||
if (f1 == INVALID_HANDLE_VALUE) return Qfalse;
|
||||
|
@ -2066,7 +2054,6 @@ rb_file_s_ftype(VALUE klass, VALUE fname)
|
|||
{
|
||||
struct stat st;
|
||||
|
||||
rb_secure(2);
|
||||
FilePathValue(fname);
|
||||
fname = rb_str_encode_ospath(fname);
|
||||
if (lstat(StringValueCStr(fname), &st) == -1) {
|
||||
|
@ -2338,7 +2325,6 @@ rb_file_s_chmod(int argc, VALUE *argv)
|
|||
int mode;
|
||||
long n;
|
||||
|
||||
rb_secure(2);
|
||||
rb_scan_args(argc, argv, "1*", &vmode, &rest);
|
||||
mode = NUM2INT(vmode);
|
||||
|
||||
|
@ -2368,7 +2354,6 @@ rb_file_chmod(VALUE obj, VALUE vmode)
|
|||
VALUE path;
|
||||
#endif
|
||||
|
||||
rb_secure(2);
|
||||
mode = NUM2INT(vmode);
|
||||
|
||||
GetOpenFile(obj, fptr);
|
||||
|
@ -2410,7 +2395,6 @@ rb_file_s_lchmod(int argc, VALUE *argv)
|
|||
VALUE rest;
|
||||
long mode, n;
|
||||
|
||||
rb_secure(2);
|
||||
rb_scan_args(argc, argv, "1*", &vmode, &rest);
|
||||
mode = NUM2INT(vmode);
|
||||
|
||||
|
@ -2474,7 +2458,6 @@ rb_file_s_chown(int argc, VALUE *argv)
|
|||
struct chown_args arg;
|
||||
long n;
|
||||
|
||||
rb_secure(2);
|
||||
rb_scan_args(argc, argv, "2*", &o, &g, &rest);
|
||||
arg.owner = to_uid(o);
|
||||
arg.group = to_gid(g);
|
||||
|
@ -2508,7 +2491,6 @@ rb_file_chown(VALUE obj, VALUE owner, VALUE group)
|
|||
VALUE path;
|
||||
#endif
|
||||
|
||||
rb_secure(2);
|
||||
o = to_uid(owner);
|
||||
g = to_gid(group);
|
||||
GetOpenFile(obj, fptr);
|
||||
|
@ -2552,7 +2534,6 @@ rb_file_s_lchown(int argc, VALUE *argv)
|
|||
struct chown_args arg;
|
||||
long n;
|
||||
|
||||
rb_secure(2);
|
||||
rb_scan_args(argc, argv, "2*", &o, &g, &rest);
|
||||
arg.owner = to_uid(o);
|
||||
arg.group = to_gid(g);
|
||||
|
@ -2686,7 +2667,6 @@ rb_file_s_utime(int argc, VALUE *argv)
|
|||
struct timespec tss[2], *tsp = NULL;
|
||||
long n;
|
||||
|
||||
rb_secure(2);
|
||||
rb_scan_args(argc, argv, "2*", &args.atime, &args.mtime, &rest);
|
||||
|
||||
if (!NIL_P(args.atime) || !NIL_P(args.mtime)) {
|
||||
|
@ -2738,7 +2718,6 @@ sys_fail2(VALUE s1, VALUE s2)
|
|||
static VALUE
|
||||
rb_file_s_link(VALUE klass, VALUE from, VALUE to)
|
||||
{
|
||||
rb_secure(2);
|
||||
FilePathValue(from);
|
||||
FilePathValue(to);
|
||||
from = rb_str_encode_ospath(from);
|
||||
|
@ -2769,7 +2748,6 @@ rb_file_s_link(VALUE klass, VALUE from, VALUE to)
|
|||
static VALUE
|
||||
rb_file_s_symlink(VALUE klass, VALUE from, VALUE to)
|
||||
{
|
||||
rb_secure(2);
|
||||
FilePathValue(from);
|
||||
FilePathValue(to);
|
||||
from = rb_str_encode_ospath(from);
|
||||
|
@ -2812,7 +2790,6 @@ rb_readlink(VALUE path)
|
|||
ssize_t rv;
|
||||
VALUE v;
|
||||
|
||||
rb_secure(2);
|
||||
FilePathValue(path);
|
||||
path = rb_str_encode_ospath(path);
|
||||
v = rb_enc_str_new(0, size, rb_filesystem_encoding());
|
||||
|
@ -2860,7 +2837,6 @@ rb_file_s_unlink(VALUE klass, VALUE args)
|
|||
{
|
||||
long n;
|
||||
|
||||
rb_secure(2);
|
||||
n = apply2files(unlink_internal, args, 0);
|
||||
return LONG2FIX(n);
|
||||
}
|
||||
|
@ -2881,7 +2857,6 @@ rb_file_s_rename(VALUE klass, VALUE from, VALUE to)
|
|||
const char *src, *dst;
|
||||
VALUE f, t;
|
||||
|
||||
rb_secure(2);
|
||||
FilePathValue(from);
|
||||
FilePathValue(to);
|
||||
f = rb_str_encode_ospath(from);
|
||||
|
@ -2930,7 +2905,6 @@ rb_file_s_umask(int argc, VALUE *argv)
|
|||
{
|
||||
int omask = 0;
|
||||
|
||||
rb_secure(2);
|
||||
if (argc == 0) {
|
||||
omask = umask(0);
|
||||
umask(omask);
|
||||
|
@ -3862,8 +3836,6 @@ rb_realpath_internal(VALUE basedir, VALUE path, int strict)
|
|||
char *ptr, *prefixptr = NULL, *pend;
|
||||
long len;
|
||||
|
||||
rb_secure(2);
|
||||
|
||||
FilePathValue(path);
|
||||
unresolved_path = rb_str_dup_frozen(path);
|
||||
|
||||
|
@ -4455,7 +4427,6 @@ rb_file_s_truncate(VALUE klass, VALUE path, VALUE len)
|
|||
long pos;
|
||||
#endif
|
||||
|
||||
rb_secure(2);
|
||||
pos = NUM2POS(len);
|
||||
FilePathValue(path);
|
||||
path = rb_str_encode_ospath(path);
|
||||
|
@ -4511,7 +4482,6 @@ rb_file_truncate(VALUE obj, VALUE len)
|
|||
long pos;
|
||||
#endif
|
||||
|
||||
rb_secure(2);
|
||||
pos = NUM2POS(len);
|
||||
GetOpenFile(obj, fptr);
|
||||
if (!(fptr->mode & FMODE_WRITABLE)) {
|
||||
|
@ -4617,7 +4587,6 @@ rb_file_flock(VALUE obj, VALUE operation)
|
|||
int op[2], op1;
|
||||
struct timeval time;
|
||||
|
||||
rb_secure(2);
|
||||
op[1] = op1 = NUM2INT(operation);
|
||||
GetOpenFile(obj, fptr);
|
||||
op[0] = fptr->fd;
|
||||
|
@ -4658,7 +4627,6 @@ test_check(int n, int argc, VALUE *argv)
|
|||
{
|
||||
int i;
|
||||
|
||||
rb_secure(2);
|
||||
n+=1;
|
||||
rb_check_arity(argc, n, n);
|
||||
for (i=1; i<n; i++) {
|
||||
|
@ -4906,7 +4874,6 @@ rb_stat_init(VALUE obj, VALUE fname)
|
|||
{
|
||||
struct stat st, *nst;
|
||||
|
||||
rb_secure(2);
|
||||
FilePathValue(fname);
|
||||
fname = rb_str_encode_ospath(fname);
|
||||
if (STAT(StringValueCStr(fname), &st) == -1) {
|
||||
|
|
1
gc.c
1
gc.c
|
@ -7012,7 +7012,6 @@ static VALUE
|
|||
gc_stress_set_m(VALUE self, VALUE flag)
|
||||
{
|
||||
rb_objspace_t *objspace = &rb_objspace;
|
||||
rb_secure(2);
|
||||
gc_stress_set(objspace, flag);
|
||||
return flag;
|
||||
}
|
||||
|
|
|
@ -572,15 +572,15 @@ VALUE rb_get_path(VALUE);
|
|||
VALUE rb_get_path_no_checksafe(VALUE);
|
||||
#define FilePathStringValue(v) ((v) = rb_get_path_no_checksafe(v))
|
||||
|
||||
#define RUBY_SAFE_LEVEL_MAX 2
|
||||
#define RUBY_SAFE_LEVEL_MAX 1
|
||||
void rb_secure(int);
|
||||
int rb_safe_level(void);
|
||||
void rb_set_safe_level(int);
|
||||
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
|
||||
int ruby_safe_level_3_error(void) __attribute__((error("$SAFE=3 and 4 is obsolete")));
|
||||
int ruby_safe_level_3_warning(void) __attribute__((warning("$SAFE=3 and 4 is obsolete")));
|
||||
int ruby_safe_level_2_error(void) __attribute__((error("$SAFE=2 to 4 are obsolete")));
|
||||
int ruby_safe_level_2_warning(void) __attribute__((warning("$SAFE=2 to 4 are obsolete")));
|
||||
# ifdef RUBY_EXPORT
|
||||
# define ruby_safe_level_3_warning() ruby_safe_level_3_error()
|
||||
# define ruby_safe_level_2_warning() ruby_safe_level_2_error()
|
||||
# endif
|
||||
#if defined(HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P)
|
||||
# define RUBY_SAFE_LEVEL_INVALID_P(level) \
|
||||
|
|
5
io.c
5
io.c
|
@ -9130,8 +9130,6 @@ rb_ioctl(VALUE io, VALUE req, VALUE arg)
|
|||
long narg;
|
||||
int retval;
|
||||
|
||||
rb_secure(2);
|
||||
|
||||
narg = setup_narg(cmd, &arg, 1);
|
||||
GetOpenFile(io, fptr);
|
||||
retval = do_ioctl(fptr->fd, cmd, narg);
|
||||
|
@ -9219,8 +9217,6 @@ rb_fcntl(VALUE io, VALUE req, VALUE arg)
|
|||
long narg;
|
||||
int retval;
|
||||
|
||||
rb_secure(2);
|
||||
|
||||
narg = setup_narg(cmd, &arg, 0);
|
||||
GetOpenFile(io, fptr);
|
||||
retval = do_fcntl(fptr->fd, cmd, narg);
|
||||
|
@ -9339,7 +9335,6 @@ rb_f_syscall(int argc, VALUE *argv)
|
|||
rb_warning("We plan to remove a syscall function at future release. DL(Fiddle) provides safer alternative.");
|
||||
}
|
||||
|
||||
rb_secure(2);
|
||||
if (argc == 0)
|
||||
rb_raise(rb_eArgError, "too few arguments for syscall");
|
||||
if (argc > numberof(arg))
|
||||
|
|
25
process.c
25
process.c
|
@ -377,7 +377,6 @@ parent_redirect_close(int fd)
|
|||
static VALUE
|
||||
get_pid(void)
|
||||
{
|
||||
rb_secure(2);
|
||||
return PIDT2NUM(getpid());
|
||||
}
|
||||
|
||||
|
@ -401,7 +400,6 @@ get_pid(void)
|
|||
static VALUE
|
||||
get_ppid(void)
|
||||
{
|
||||
rb_secure(2);
|
||||
return PIDT2NUM(getppid());
|
||||
}
|
||||
|
||||
|
@ -936,7 +934,6 @@ proc_wait(int argc, VALUE *argv)
|
|||
rb_pid_t pid;
|
||||
int flags, status;
|
||||
|
||||
rb_secure(2);
|
||||
flags = 0;
|
||||
if (argc == 0) {
|
||||
pid = -1;
|
||||
|
@ -1010,7 +1007,6 @@ proc_waitall(void)
|
|||
rb_pid_t pid;
|
||||
int status;
|
||||
|
||||
rb_secure(2);
|
||||
result = rb_ary_new();
|
||||
rb_last_status_clear();
|
||||
|
||||
|
@ -1106,7 +1102,6 @@ rb_detach_process(rb_pid_t pid)
|
|||
static VALUE
|
||||
proc_detach(VALUE obj, VALUE pid)
|
||||
{
|
||||
rb_secure(2);
|
||||
return rb_detach_process(NUM2PIDT(pid));
|
||||
}
|
||||
|
||||
|
@ -1652,8 +1647,6 @@ rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val)
|
|||
int rtype;
|
||||
#endif
|
||||
|
||||
rb_secure(2);
|
||||
|
||||
switch (TYPE(key)) {
|
||||
case T_SYMBOL:
|
||||
if (!(id = rb_check_id(&key))) return ST_STOP;
|
||||
|
@ -3657,8 +3650,6 @@ rb_f_fork(VALUE obj)
|
|||
{
|
||||
rb_pid_t pid;
|
||||
|
||||
rb_secure(2);
|
||||
|
||||
switch (pid = rb_fork_ruby(NULL)) {
|
||||
case 0:
|
||||
rb_thread_atfork();
|
||||
|
@ -4365,7 +4356,6 @@ proc_getpgrp(void)
|
|||
{
|
||||
rb_pid_t pgrp;
|
||||
|
||||
rb_secure(2);
|
||||
#if defined(HAVE_GETPGRP) && defined(GETPGRP_VOID)
|
||||
pgrp = getpgrp();
|
||||
if (pgrp < 0) rb_sys_fail(0);
|
||||
|
@ -4393,7 +4383,6 @@ proc_getpgrp(void)
|
|||
static VALUE
|
||||
proc_setpgrp(void)
|
||||
{
|
||||
rb_secure(2);
|
||||
/* check for posix setpgid() first; this matches the posix */
|
||||
/* getpgrp() above. It appears that configure will set SETPGRP_VOID */
|
||||
/* even though setpgrp(0,0) would be preferred. The posix call avoids */
|
||||
|
@ -4426,7 +4415,6 @@ proc_getpgid(VALUE obj, VALUE pid)
|
|||
{
|
||||
rb_pid_t i;
|
||||
|
||||
rb_secure(2);
|
||||
i = getpgid(NUM2PIDT(pid));
|
||||
if (i < 0) rb_sys_fail(0);
|
||||
return PIDT2NUM(i);
|
||||
|
@ -4450,7 +4438,6 @@ proc_setpgid(VALUE obj, VALUE pid, VALUE pgrp)
|
|||
{
|
||||
rb_pid_t ipid, ipgrp;
|
||||
|
||||
rb_secure(2);
|
||||
ipid = NUM2PIDT(pid);
|
||||
ipgrp = NUM2PIDT(pgrp);
|
||||
|
||||
|
@ -4481,7 +4468,6 @@ proc_getsid(int argc, VALUE *argv)
|
|||
rb_pid_t sid;
|
||||
VALUE pid;
|
||||
|
||||
rb_secure(2);
|
||||
rb_scan_args(argc, argv, "01", &pid);
|
||||
|
||||
if (NIL_P(pid))
|
||||
|
@ -4517,7 +4503,6 @@ proc_setsid(void)
|
|||
{
|
||||
rb_pid_t pid;
|
||||
|
||||
rb_secure(2);
|
||||
pid = setsid();
|
||||
if (pid < 0) rb_sys_fail(0);
|
||||
return PIDT2NUM(pid);
|
||||
|
@ -4578,7 +4563,6 @@ proc_getpriority(VALUE obj, VALUE which, VALUE who)
|
|||
{
|
||||
int prio, iwhich, iwho;
|
||||
|
||||
rb_secure(2);
|
||||
iwhich = NUM2INT(which);
|
||||
iwho = NUM2INT(who);
|
||||
|
||||
|
@ -4610,7 +4594,6 @@ proc_setpriority(VALUE obj, VALUE which, VALUE who, VALUE prio)
|
|||
{
|
||||
int iwhich, iwho, iprio;
|
||||
|
||||
rb_secure(2);
|
||||
iwhich = NUM2INT(which);
|
||||
iwho = NUM2INT(who);
|
||||
iprio = NUM2INT(prio);
|
||||
|
@ -4850,8 +4833,6 @@ proc_getrlimit(VALUE obj, VALUE resource)
|
|||
{
|
||||
struct rlimit rlim;
|
||||
|
||||
rb_secure(2);
|
||||
|
||||
if (getrlimit(rlimit_resource_type(resource), &rlim) < 0) {
|
||||
rb_sys_fail("getrlimit");
|
||||
}
|
||||
|
@ -4919,8 +4900,6 @@ proc_setrlimit(int argc, VALUE *argv, VALUE obj)
|
|||
VALUE resource, rlim_cur, rlim_max;
|
||||
struct rlimit rlim;
|
||||
|
||||
rb_secure(2);
|
||||
|
||||
rb_scan_args(argc, argv, "21", &resource, &rlim_cur, &rlim_max);
|
||||
if (rlim_max == Qnil)
|
||||
rlim_max = rlim_cur;
|
||||
|
@ -4941,7 +4920,6 @@ static int under_uid_switch = 0;
|
|||
static void
|
||||
check_uid_switch(void)
|
||||
{
|
||||
rb_secure(2);
|
||||
if (under_uid_switch) {
|
||||
rb_raise(rb_eRuntimeError, "can't handle UID while evaluating block given to Process::UID.switch method");
|
||||
}
|
||||
|
@ -4951,7 +4929,6 @@ static int under_gid_switch = 0;
|
|||
static void
|
||||
check_gid_switch(void)
|
||||
{
|
||||
rb_secure(2);
|
||||
if (under_gid_switch) {
|
||||
rb_raise(rb_eRuntimeError, "can't handle GID while evaluating block given to Process::UID.switch method");
|
||||
}
|
||||
|
@ -5650,7 +5627,6 @@ p_sys_setresgid(VALUE obj, VALUE rid, VALUE eid, VALUE sid)
|
|||
static VALUE
|
||||
p_sys_issetugid(VALUE obj)
|
||||
{
|
||||
rb_secure(2);
|
||||
if (issetugid()) {
|
||||
return Qtrue;
|
||||
}
|
||||
|
@ -5965,7 +5941,6 @@ proc_daemon(int argc, VALUE *argv)
|
|||
VALUE nochdir, noclose;
|
||||
int n;
|
||||
|
||||
rb_secure(2);
|
||||
rb_scan_args(argc, argv, "02", &nochdir, &noclose);
|
||||
|
||||
prefork();
|
||||
|
|
10
safe.c
10
safe.c
|
@ -24,12 +24,12 @@
|
|||
|
||||
#undef rb_secure
|
||||
#undef rb_set_safe_level
|
||||
#undef ruby_safe_level_3_warning
|
||||
#undef ruby_safe_level_2_warning
|
||||
|
||||
int
|
||||
ruby_safe_level_3_warning(void)
|
||||
ruby_safe_level_2_warning(void)
|
||||
{
|
||||
return 3;
|
||||
return 2;
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -51,7 +51,7 @@ rb_set_safe_level(int level)
|
|||
|
||||
if (level > th->safe_level) {
|
||||
if (level > SAFE_LEVEL_MAX) {
|
||||
rb_raise(rb_eArgError, "$SAFE=3 and 4 is obsolete");
|
||||
rb_raise(rb_eArgError, "$SAFE=2 to 4 are obsolete");
|
||||
}
|
||||
th->safe_level = level;
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ safe_setter(VALUE val)
|
|||
th->safe_level, level);
|
||||
}
|
||||
if (level > SAFE_LEVEL_MAX) {
|
||||
rb_raise(rb_eArgError, "$SAFE=3 and 4 is obsolete");
|
||||
rb_raise(rb_eArgError, "$SAFE=2 to 4 are obsolete");
|
||||
}
|
||||
th->safe_level = level;
|
||||
}
|
||||
|
|
2
signal.c
2
signal.c
|
@ -418,7 +418,6 @@ rb_f_kill(int argc, const VALUE *argv)
|
|||
VALUE str;
|
||||
const char *s;
|
||||
|
||||
rb_secure(2);
|
||||
rb_check_arity(argc, 2, UNLIMITED_ARGUMENTS);
|
||||
|
||||
switch (TYPE(argv[0])) {
|
||||
|
@ -1280,7 +1279,6 @@ sig_trap(int argc, VALUE *argv)
|
|||
sighandler_t func;
|
||||
VALUE cmd;
|
||||
|
||||
rb_secure(2);
|
||||
rb_check_arity(argc, 1, 2);
|
||||
|
||||
sig = trap_signm(argv[0]);
|
||||
|
|
|
@ -89,7 +89,6 @@ class TestERBCore < Test::Unit::TestCase
|
|||
_test_core(nil)
|
||||
_test_core(0)
|
||||
_test_core(1)
|
||||
_test_core(2)
|
||||
end
|
||||
|
||||
def _test_core(safe)
|
||||
|
|
|
@ -14,15 +14,6 @@ module Fiddle
|
|||
assert_kind_of Integer, handle.to_i
|
||||
end
|
||||
|
||||
def test_static_sym_secure
|
||||
assert_raises(SecurityError) do
|
||||
Thread.new do
|
||||
$SAFE = 2
|
||||
Fiddle::Handle.sym('calloc')
|
||||
end.join
|
||||
end
|
||||
end
|
||||
|
||||
def test_static_sym_unknown
|
||||
assert_raises(DLError) { Fiddle::Handle.sym('fooo') }
|
||||
assert_raises(DLError) { Fiddle::Handle['fooo'] }
|
||||
|
@ -66,16 +57,6 @@ module Fiddle
|
|||
assert_raises(TypeError) { handle[nil] }
|
||||
end
|
||||
|
||||
def test_sym_secure
|
||||
assert_raises(SecurityError) do
|
||||
Thread.new do
|
||||
$SAFE = 2
|
||||
handle = Handle.new(LIBC_SO)
|
||||
handle.sym('calloc')
|
||||
end.join
|
||||
end
|
||||
end
|
||||
|
||||
def test_sym
|
||||
handle = Handle.new(LIBC_SO)
|
||||
refute_nil handle.sym('calloc')
|
||||
|
@ -99,24 +80,6 @@ module Fiddle
|
|||
assert_instance_of Handle, dlopen(LIBC_SO)
|
||||
end
|
||||
|
||||
def test_dlopen_safe
|
||||
assert_raises(SecurityError) do
|
||||
Thread.new do
|
||||
$SAFE = 2
|
||||
dlopen(LIBC_SO)
|
||||
end.join
|
||||
end
|
||||
end
|
||||
|
||||
def test_initialize_safe
|
||||
assert_raises(SecurityError) do
|
||||
Thread.new do
|
||||
$SAFE = 2
|
||||
Handle.new(LIBC_SO)
|
||||
end.join
|
||||
end
|
||||
end
|
||||
|
||||
def test_initialize_noargs
|
||||
handle = Handle.new
|
||||
refute_nil handle['rb_str_new']
|
||||
|
|
|
@ -444,87 +444,6 @@ class TestEnv < Test::Unit::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_taint_aref
|
||||
assert_raise(SecurityError) do
|
||||
proc do
|
||||
$SAFE = 2
|
||||
ENV["FOO".taint]
|
||||
end.call
|
||||
end
|
||||
end
|
||||
|
||||
def test_taint_fetch
|
||||
assert_raise(SecurityError) do
|
||||
proc do
|
||||
$SAFE = 2
|
||||
ENV.fetch("FOO".taint)
|
||||
end.call
|
||||
end
|
||||
end
|
||||
|
||||
def test_taint_assoc
|
||||
assert_raise(SecurityError) do
|
||||
proc do
|
||||
$SAFE = 2
|
||||
ENV.assoc("FOO".taint)
|
||||
end.call
|
||||
end
|
||||
end
|
||||
|
||||
def test_taint_rassoc
|
||||
assert_raise(SecurityError) do
|
||||
proc do
|
||||
$SAFE = 2
|
||||
ENV.rassoc("FOO".taint)
|
||||
end.call
|
||||
end
|
||||
end
|
||||
|
||||
def test_taint_key
|
||||
assert_raise(SecurityError) do
|
||||
proc do
|
||||
$SAFE = 2
|
||||
ENV.key("FOO".taint)
|
||||
end.call
|
||||
end
|
||||
end
|
||||
|
||||
def test_taint_key_p
|
||||
assert_raise(SecurityError) do
|
||||
proc do
|
||||
$SAFE = 2
|
||||
ENV.key?("FOO".taint)
|
||||
end.call
|
||||
end
|
||||
end
|
||||
|
||||
def test_taint_value_p
|
||||
assert_raise(SecurityError) do
|
||||
proc do
|
||||
$SAFE = 2
|
||||
ENV.value?("FOO".taint)
|
||||
end.call
|
||||
end
|
||||
end
|
||||
|
||||
def test_taint_aset_value
|
||||
assert_raise(SecurityError) do
|
||||
proc do
|
||||
$SAFE = 2
|
||||
ENV["FOO"] = "BAR".taint
|
||||
end.call
|
||||
end
|
||||
end
|
||||
|
||||
def test_taint_aset_key
|
||||
assert_raise(SecurityError) do
|
||||
proc do
|
||||
$SAFE = 2
|
||||
ENV["FOO".taint] = "BAR"
|
||||
end.call
|
||||
end
|
||||
end
|
||||
|
||||
if RUBY_PLATFORM =~ /bccwin|mswin|mingw/
|
||||
def test_memory_leak_aset
|
||||
bug9977 = '[ruby-dev:48323] [Bug #9977]'
|
||||
|
|
|
@ -664,7 +664,6 @@ rb_readlink(VALUE path)
|
|||
rb_encoding *enc;
|
||||
UINT cp, path_cp;
|
||||
|
||||
rb_secure(2);
|
||||
FilePathValue(path);
|
||||
enc = rb_enc_get(path);
|
||||
cp = path_cp = code_page(enc);
|
||||
|
|
Загрузка…
Ссылка в новой задаче