[#35688] サブクラスのオブジェクト生成時に、スーパークラスの初期化を行うには ? — Onodera Takafumi <onodera-tak@...>

9 messages 2002/08/01

[#35772] Unsecure world writeable dirの警告 — "井上 浩一" <kyoui32@...>

=1B$B0f>e$G$9!#=1B(B

31 messages 2002/08/26
[#35774] Re: Unsecure world writeable dir の警告 — matz@... (Yukihiro Matsumoto) 2002/08/26

まつもと ゆきひろです

[#35775] Re: Unsecure world writeabledir の警告 — nobu.nakada@... 2002/08/26

なかだです。

[#35776] Re: Unsecure world writeabledir の警告 — matz@... (Yukihiro Matsumoto) 2002/08/26

まつもと ゆきひろです

[#35778] Re: Unsecure world writeabledir の警告 — nobu.nakada@... 2002/08/26

なかだです。

[#35779] Re: Unsecure world writeabledir の警告 — WATANABE Hirofumi <eban@...> 2002/08/26

わたなべです。

[#35780] Re: Unsecure world writeabledir の警告 — nobu.nakada@... 2002/08/26

なかだです。

[#35784] Re: Unsecure world writeabledir の警告 — "U.Nakamura" <usa@...> 2002/08/26

こんにちは、なかむら(う)です。

[#35854] Re: Unsecure world writeabledir の警告 — "Inoue" <rubyist@...1.117.ne.jp> 2002/09/04

井上です。

[#35865] Re: Unsecure world writeabledir の警告 — Koji Arai <JCA02266@...> 2002/09/05

新井です。

[#35866] Re: Unsecure world writeabledir の警告 — matz@... (Yukihiro Matsumoto) 2002/09/06

まつもと ゆきひろです

[#35789] multipart な CGI を速くしたい — Takashi Kanai <kanai@...4u.or.jp>

Windows上でRubyとMySQLを使ってショッピングサイトのようなものを作って

17 messages 2002/08/28

[ruby-list:35679] Re: STR2CSTR()

From: nobu.nakada@...
Date: 2002-08-01 04:47:39 UTC
List: ruby-list #35679
なかだです。

At Thu, 1 Aug 2002 13:07:36 +0900,
OHARA Shigeki wrote:
> > |UDPSocket#recvfrom で得た文字列を STR2CSTR() で取り出そうとしたところ、
> > |得られた文字列が NULL 終端されていないことがありました。
> > |
> > |STR2CSTR() で得られた文字列は、
> > |NULL 終端されていることが保証されていないのでしょうか?
> > 
> > 保証しているつもりです。どっかにバグがあったんでしょうか。

UDPSocket#recvfromが、RSTRING(str)->lenを書き換えるだけでNUL終
端してませんね。とりあえずresizeしておいたほうがいいと思います
が、rb_str2cstr()でも保証したほうがいいでしょうか。


Index: ext/socket/socket.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/socket/socket.c,v
retrieving revision 1.35.2.15
diff -u -2 -p -r1.35.2.15 socket.c
--- ext/socket/socket.c	11 Jun 2002 06:58:39 -0000	1.35.2.15
+++ ext/socket/socket.c	1 Aug 2002 04:41:46 -0000
@@ -435,4 +435,5 @@ s_recvfrom(sock, argc, argv, from)
     socklen_t alen = sizeof buf;
     VALUE len, flg;
+    long slen;
     int fd, flags;
 
@@ -448,14 +449,14 @@ s_recvfrom(sock, argc, argv, from)
     fd = fileno(fptr->f);
 
-    str = rb_tainted_str_new(0, NUM2INT(len));
+    str = rb_tainted_str_new(0, slen = NUM2INT(len));
 
   retry:
     rb_thread_wait_fd(fd);
     TRAP_BEG;
-    RSTRING(str)->len = recvfrom(fd, RSTRING(str)->ptr, RSTRING(str)->len, flags,
-				 (struct sockaddr*)buf, &alen);
+    slen = recvfrom(fd, RSTRING(str)->ptr, slen, flags,
+		    (struct sockaddr*)buf, &alen);
     TRAP_END;
 
-    if (RSTRING(str)->len < 0) {
+    if (slen < 0) {
 	switch (errno) {
 	  case EINTR:
@@ -465,4 +466,7 @@ s_recvfrom(sock, argc, argv, from)
 	rb_sys_fail("recvfrom(2)");
     }
+    if (slen < RSTRING(str)->len) {
+	rb_str_resize(str, slen);
+    }
     rb_obj_taint(str);
     switch (from) {


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread