diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-12-14 06:50:43 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-12-14 06:50:43 +0000 |
commit | 9d228b13deccfdf23f44e2c465f723a2a7b3bcbd (patch) | |
tree | 9a4d769804c389b6b03bbfdf65e8e0a03288c8e8 /ext | |
parent | c18d3740a925e8752c3b93acea6087fb0e03be53 (diff) |
19991214
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@587 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r-- | ext/dbm/dbm.c | 7 | ||||
-rw-r--r-- | ext/gdbm/gdbm.c | 15 | ||||
-rw-r--r-- | ext/socket/socket.c | 17 | ||||
-rw-r--r-- | ext/tk/lib/tk.rb | 6 |
4 files changed, 19 insertions, 26 deletions
diff --git a/ext/dbm/dbm.c b/ext/dbm/dbm.c index 1240f4b9ab..2aeede2672 100644 --- a/ext/dbm/dbm.c +++ b/ext/dbm/dbm.c @@ -315,19 +315,12 @@ fdbm_store(obj, keystr, valstr) struct dbmdata *dbmp; DBM *dbm; - if (valstr == Qnil) { - fdbm_delete(obj, keystr); - return Qnil; - } - rb_secure(4); keystr = rb_obj_as_string(keystr); key.dptr = RSTRING(keystr)->ptr; key.dsize = RSTRING(keystr)->len; - if (NIL_P(valstr)) return fdbm_delete(obj, keystr); - valstr = rb_obj_as_string(valstr); val.dptr = RSTRING(valstr)->ptr; val.dsize = RSTRING(valstr)->len; diff --git a/ext/gdbm/gdbm.c b/ext/gdbm/gdbm.c index b38bb8ef48..116b19d18e 100644 --- a/ext/gdbm/gdbm.c +++ b/ext/gdbm/gdbm.c @@ -169,7 +169,7 @@ fgdbm_delete(obj, keystr) if (gdbm_delete(dbm, key)) { dbmp->di_size = -1; - rb_raise(rb_eRuntimeError, "dbm_delete failed"); + rb_raise(rb_eRuntimeError, "gdbm_delete failed"); } else if (dbmp->di_size >= 0) { dbmp->di_size--; @@ -218,7 +218,7 @@ fgdbm_delete_if(obj) valstr = rb_tainted_str_new(val.dptr, val.dsize); if (RTEST(rb_yield(rb_assoc_new(keystr, valstr)))) { if (gdbm_delete(dbm, key)) { - rb_raise(rb_eRuntimeError, "dbm_delete failed"); + rb_raise(rb_eRuntimeError, "gdbm_delete failed"); } } } @@ -240,7 +240,7 @@ fgdbm_clear(obj) for (key = gdbm_firstkey(dbm); key.dptr; key = nextkey) { nextkey = gdbm_nextkey(dbm, key); if (gdbm_delete(dbm, key)) { - rb_raise(rb_eRuntimeError, "dbm_delete failed"); + rb_raise(rb_eRuntimeError, "gdbm_delete failed"); } } return obj; @@ -313,19 +313,12 @@ fgdbm_store(obj, keystr, valstr) struct dbmdata *dbmp; GDBM_FILE dbm; - if (valstr == Qnil) { - fgdbm_delete(obj, keystr); - return Qnil; - } - rb_secure(4); keystr = rb_obj_as_string(keystr); key.dptr = RSTRING(keystr)->ptr; key.dsize = RSTRING(keystr)->len; - if (NIL_P(valstr)) return fgdbm_delete(obj, keystr); - valstr = rb_obj_as_string(valstr); val.dptr = RSTRING(valstr)->ptr; val.dsize = RSTRING(valstr)->len; @@ -335,7 +328,7 @@ fgdbm_store(obj, keystr, valstr) dbm = dbmp->di_dbm; if (gdbm_store(dbm, key, val, GDBM_REPLACE)) { if (errno == EPERM) rb_sys_fail(0); - rb_raise(rb_eRuntimeError, "dbm_store failed"); + rb_raise(rb_eRuntimeError, "gdbm_store failed"); } return valstr; diff --git a/ext/socket/socket.c b/ext/socket/socket.c index b38cc48c98..94597055aa 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -115,7 +115,6 @@ sock_new(class, fd) NEWOBJ(sock, struct RFile); OBJSETUP(sock, class, T_FILE); - rb_secure(4); MakeOpenFile(sock, fp); fp->f = rb_fdopen(fd, "r"); #ifdef NT @@ -140,7 +139,9 @@ bsock_shutdown(argc, argv, sock) int how; OpenFile *fptr; - rb_secure(4); + if (rb_safe_level() >= 4 && !OBJ_TAINTED(sock)) { + rb_raise(rb_eSecurityError, "Insecure: can't shutdown socket"); + } rb_scan_args(argc, argv, "01", &howto); if (howto == Qnil) how = 2; @@ -163,7 +164,9 @@ bsock_close_read(sock) { OpenFile *fptr; - rb_secure(4); + if (rb_safe_level() >= 4 && !OBJ_TAINTED(sock)) { + rb_raise(rb_eSecurityError, "Insecure: can't close socket"); + } GetOpenFile(sock, fptr); shutdown(fileno(fptr->f), 0); if (fptr->f2 == 0) { @@ -188,7 +191,9 @@ bsock_close_write(sock) { OpenFile *fptr; - rb_secure(4); + if (rb_safe_level() >= 4 && !OBJ_TAINTED(sock)) { + rb_raise(rb_eSecurityError, "Insecure: can't close socket"); + } GetOpenFile(sock, fptr); if (fptr->f2 == 0) { return rb_io_close(sock); @@ -215,7 +220,6 @@ bsock_setsockopt(sock, lev, optname, val) char *v; int vlen; - rb_secure(2); level = NUM2INT(lev); option = NUM2INT(optname); switch (TYPE(val)) { @@ -794,6 +798,9 @@ socks_s_close(sock) { OpenFile *fptr; + if (rb_safe_level() >= 4 && !OBJ_TAINTED(sock)) { + rb_raise(rb_eSecurityError, "Insecure: can't close socket"); + } GetOpenFile(sock, fptr); shutdown(fileno(fptr->f), 2); shutdown(fileno(fptr->f2), 2); diff --git a/ext/tk/lib/tk.rb b/ext/tk/lib/tk.rb index c933f9db8b..9f1bae1d40 100644 --- a/ext/tk/lib/tk.rb +++ b/ext/tk/lib/tk.rb @@ -2150,7 +2150,7 @@ class TkListbox<TkTextWin def nearest(y) tk_send('nearest', y).to_i end - def size(y) + def size tk_send('size').to_i end def selection_anchor(index) @@ -2159,8 +2159,8 @@ class TkListbox<TkTextWin def selection_clear(first, last=None) tk_send 'selection', 'clear', first, last end - def selection_includes - bool(tk_send('selection', 'includes')) + def selection_includes(index) + bool(tk_send('selection', 'includes', index)) end def selection_set(first, last=None) tk_send 'selection', 'set', first, last |