зеркало из https://github.com/github/ruby.git
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1033 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
13f2744b2e
Коммит
087c83d7ce
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
||||||
|
Fri Nov 10 16:15:53 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* parse.y (yylex): eval("^") caused infinite loop.
|
||||||
|
|
||||||
|
Thu Nov 9 14:22:13 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
|
* io.c (rb_io_taint_check): should check IO taintness; no
|
||||||
|
operation for untainted IO should be allowed in the sandbox.
|
||||||
|
|
||||||
|
* rubyio.h (GetOpenFile): check IO taintness inside using
|
||||||
|
rb_io_taint_check().
|
||||||
|
|
||||||
Wed Nov 8 03:08:53 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
|
Wed Nov 8 03:08:53 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
|
||||||
|
|
||||||
* io.c (io_fflush): ensure fflush(3) would not block by calling
|
* io.c (io_fflush): ensure fflush(3) would not block by calling
|
||||||
|
|
9
io.c
9
io.c
|
@ -143,6 +143,15 @@ rb_eof_error()
|
||||||
rb_raise(rb_eEOFError, "End of file reached");
|
rb_raise(rb_eEOFError, "End of file reached");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VALUE
|
||||||
|
rb_io_taint_check(io)
|
||||||
|
VALUE io;
|
||||||
|
{
|
||||||
|
if (!OBJ_TAINTED(io) && rb_safe_level() >= 4)
|
||||||
|
rb_raise(rb_eSecurityError, "Insecure: operation on untainted IO");
|
||||||
|
return io;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
rb_io_check_closed(fptr)
|
rb_io_check_closed(fptr)
|
||||||
OpenFile *fptr;
|
OpenFile *fptr;
|
||||||
|
|
4
parse.y
4
parse.y
|
@ -3280,12 +3280,12 @@ yylex()
|
||||||
|
|
||||||
case '^':
|
case '^':
|
||||||
lex_state = EXPR_BEG;
|
lex_state = EXPR_BEG;
|
||||||
if (nextc() == '=') {
|
if ((c = nextc()) == '=') {
|
||||||
yylval.id = '^';
|
yylval.id = '^';
|
||||||
return tOP_ASGN;
|
return tOP_ASGN;
|
||||||
}
|
}
|
||||||
pushback(c);
|
pushback(c);
|
||||||
return c;
|
return '^';
|
||||||
|
|
||||||
case ',':
|
case ',':
|
||||||
case ';':
|
case ';':
|
||||||
|
|
1
regex.c
1
regex.c
|
@ -3766,6 +3766,7 @@ re_match(bufp, string_arg, size, pos, regs)
|
||||||
|
|
||||||
case start_nowidth:
|
case start_nowidth:
|
||||||
PUSH_FAILURE_POINT(0, d);
|
PUSH_FAILURE_POINT(0, d);
|
||||||
|
printf("%d > %d\n", stackp - stackb, RE_DUP_MAX);
|
||||||
if (stackp - stackb > RE_DUP_MAX) {
|
if (stackp - stackb > RE_DUP_MAX) {
|
||||||
FREE_AND_RETURN(stackb,(-2));
|
FREE_AND_RETURN(stackb,(-2));
|
||||||
}
|
}
|
||||||
|
|
4
rubyio.h
4
rubyio.h
|
@ -32,7 +32,7 @@ typedef struct OpenFile {
|
||||||
#define FMODE_BINMODE 4
|
#define FMODE_BINMODE 4
|
||||||
#define FMODE_SYNC 8
|
#define FMODE_SYNC 8
|
||||||
|
|
||||||
#define GetOpenFile(obj,fp) rb_io_check_closed((fp) = RFILE(obj)->fptr)
|
#define GetOpenFile(obj,fp) rb_io_check_closed((fp) = RFILE(rb_io_taint_check(obj))->fptr)
|
||||||
|
|
||||||
#define MakeOpenFile(obj, fp) do {\
|
#define MakeOpenFile(obj, fp) do {\
|
||||||
fp = 0;\
|
fp = 0;\
|
||||||
|
@ -57,6 +57,8 @@ void rb_io_check_readable _((OpenFile*));
|
||||||
void rb_io_fptr_finalize _((OpenFile*));
|
void rb_io_fptr_finalize _((OpenFile*));
|
||||||
void rb_io_synchronized _((OpenFile*));
|
void rb_io_synchronized _((OpenFile*));
|
||||||
void rb_io_check_closed _((OpenFile*));
|
void rb_io_check_closed _((OpenFile*));
|
||||||
|
|
||||||
|
VALUE rb_io_taint_check _((VALUE));
|
||||||
void rb_eof_error _((void));
|
void rb_eof_error _((void));
|
||||||
|
|
||||||
void rb_read_check _((FILE*));
|
void rb_read_check _((FILE*));
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#define RUBY_VERSION "1.6.2"
|
#define RUBY_VERSION "1.6.2"
|
||||||
#define RUBY_RELEASE_DATE "2000-11-08"
|
#define RUBY_RELEASE_DATE "2000-11-10"
|
||||||
#define RUBY_VERSION_CODE 162
|
#define RUBY_VERSION_CODE 162
|
||||||
#define RUBY_RELEASE_CODE 20001108
|
#define RUBY_RELEASE_CODE 20001110
|
||||||
|
|
Загрузка…
Ссылка в новой задаче