ruby-changes:24229
From: drbrain <ko1@a...>
Date: Tue, 3 Jul 2012 12:09:41 +0900 (JST)
Subject: [ruby-changes:24229] drbrain:r36280 (trunk): * ext/zlib/zlib.c (zstream_detach_buffer): Refactored tainting of
drbrain 2012-07-03 12:09:30 +0900 (Tue, 03 Jul 2012) New Revision: 36280 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=36280 Log: * ext/zlib/zlib.c (zstream_detach_buffer): Refactored tainting of output string, moving it from the callee to zstream_detach_buffer. * ext/zlib/zlib.c (rb_zstream_finish): ditto * ext/zlib/zlib.c (rb_zstream_flush_next_out): ditto * ext/zlib/zlib.c (rb_deflate_deflate): ditto * ext/zlib/zlib.c (rb_deflate_flush): ditto * ext/zlib/zlib.c (rb_inflate_inflate): ditto Modified files: trunk/ChangeLog trunk/ext/zlib/zlib.c Index: ChangeLog =================================================================== --- ChangeLog (revision 36279) +++ ChangeLog (revision 36280) @@ -1,3 +1,13 @@ +Tue Jul 3 11:56:46 2012 Eric Hodel <drbrain@s...> + + * ext/zlib/zlib.c (zstream_detach_buffer): Refactored tainting of + output string, moving it from the callee to zstream_detach_buffer. + * ext/zlib/zlib.c (rb_zstream_finish): ditto + * ext/zlib/zlib.c (rb_zstream_flush_next_out): ditto + * ext/zlib/zlib.c (rb_deflate_deflate): ditto + * ext/zlib/zlib.c (rb_deflate_flush): ditto + * ext/zlib/zlib.c (rb_inflate_inflate): ditto + Tue Jul 3 11:16:06 2012 Nobuyoshi Nakada <nobu@r...> * common.mk (runnable): make symbolic links to run in build directory. Index: ext/zlib/zlib.c =================================================================== --- ext/zlib/zlib.c (revision 36279) +++ ext/zlib/zlib.c (revision 36280) @@ -734,7 +734,7 @@ static VALUE zstream_detach_buffer(struct zstream *z) { - VALUE dst; + VALUE dst, self = (VALUE)z->stream.opaque; if (NIL_P(z->buf)) { dst = rb_str_new(0, 0); @@ -745,6 +745,8 @@ RBASIC(dst)->klass = rb_cString; } + OBJ_INFECT(dst, self); + z->buf = Qnil; z->buf_filled = 0; z->stream.next_out = 0; @@ -1209,13 +1211,10 @@ rb_zstream_finish(VALUE obj) { struct zstream *z = get_zstream(obj); - VALUE dst; zstream_run(z, (Bytef*)"", 0, Z_FINISH); - dst = zstream_detach_buffer(z); - OBJ_INFECT(dst, obj); - return dst; + return zstream_detach_buffer(z); } /* @@ -1240,12 +1239,10 @@ rb_zstream_flush_next_out(VALUE obj) { struct zstream *z; - VALUE dst; Data_Get_Struct(obj, struct zstream, z); - dst = zstream_detach_buffer(z); - OBJ_INFECT(dst, obj); - return dst; + + return zstream_detach_buffer(z); } /* @@ -1590,15 +1587,13 @@ rb_deflate_deflate(int argc, VALUE *argv, VALUE obj) { struct zstream *z = get_zstream(obj); - VALUE src, flush, dst; + VALUE src, flush; rb_scan_args(argc, argv, "11", &src, &flush); OBJ_INFECT(obj, src); do_deflate(z, src, ARG_FLUSH(flush)); - dst = zstream_detach_buffer(z); - OBJ_INFECT(dst, obj); - return dst; + return zstream_detach_buffer(z); } /* @@ -1634,7 +1629,7 @@ rb_deflate_flush(int argc, VALUE *argv, VALUE obj) { struct zstream *z = get_zstream(obj); - VALUE v_flush, dst; + VALUE v_flush; int flush; rb_scan_args(argc, argv, "01", &v_flush); @@ -1642,10 +1637,8 @@ if (flush != Z_NO_FLUSH) { /* prevent Z_BUF_ERROR */ zstream_run(z, (Bytef*)"", 0, flush); } - dst = zstream_detach_buffer(z); - OBJ_INFECT(dst, obj); - return dst; + return zstream_detach_buffer(z); } /* @@ -1938,6 +1931,7 @@ StringValue(src); zstream_append_buffer2(z, src); dst = rb_str_new(0, 0); + OBJ_INFECT(dst, obj); } } else { @@ -1948,7 +1942,6 @@ } } - OBJ_INFECT(dst, obj); return dst; } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/