[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]