[#15846] Ruby M17N request — "K.Kosako" <kosako@...>

今書いているライブラリを、あらかじめRuby M17Nに対応させておこうとして、

62 messages 2002/02/04
[#15847] Re: Ruby M17N request — matz@... (Yukihiro Matsumoto) 2002/02/04

まつもと ゆきひろです

[#15854] Re: Ruby M17N request — "K.Kosako" <kosako@...> 2002/02/05

Yukihiro Matsumotoさんの<1012831868.125952.28017.nullmailer@ev.netlab.jp>から

[#16070] Re: Ruby M17N request — "K.Kosako" <kosako@...> 2002/02/25

<20020205045749.0AAA015B@helium.ruby-lang.org>から

[#16072] Re: Ruby M17N request — "Akinori MUSHA" <knu@...> 2002/02/25

At Mon, 25 Feb 2002 19:57:05 +0900,

[#16073] Re: Ruby M17N request — "Akinori MUSHA" <knu@...> 2002/02/25

At Mon, 25 Feb 2002 21:00:46 +0900,

[#16173] Re: Ruby M17N request — "Akinori MUSHA" <knu@...> 2002/03/02

At Mon, 25 Feb 2002 19:57:05 +0900,

[#16196] Oni Guruma imported into our repository — "Akinori MUSHA" <knu@...> 2002/03/04

At Sun, 3 Mar 2002 07:15:40 +0900,

[#16275] Re: Oni Guruma imported into our repository — matz@... (Yukihiro Matsumoto) 2002/03/08

まつもと ゆきひろです

[#16222] Re: Oni Guruma(Re: Ruby M17N request) — nobu.nakada@... 2002/03/05

なかだです。

[#16228] Re: Oni Guruma(Re: Ruby M17N request) — "K.Kosako" <kosako@...> 2002/03/06

nobu.nakada@nifty.ne.jpさんの

[#16237] Re: Oni Guruma(Re: Ruby M17N request) — nobu.nakada@... 2002/03/06

なかだです。

[#16241] Re: Oni Guruma(Re: Ruby M17N request) — "K.Kosako" <kosako@...> 2002/03/07

nobu.nakada@nifty.ne.jpさんの

[#16242] Re: Oni Guruma(Re: Ruby M17N request) — nobu.nakada@... 2002/03/07

なかだです。

[#16442] Re: Oni Guruma(Re: Ruby M17N request) — nobu.nakada@... 2002/03/17

なかだです。

[#15867] [BUG?] include after module definition and extend module — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

15 messages 2002/02/08
[#15869] Re: [BUG?] include after module definition and extend module — matz@... (Yukihiro Matsumoto) 2002/02/08

まつもと ゆきひろです

[#15932] Re: [BUG?] include after module definition and extend module — keiju@... (石塚圭樹) 2002/02/18

けいじゅ@日本ラショナルソフトウェアです.

[#15938] Re: [BUG?] include after module definition and extend module — matz@... (Yukihiro Matsumoto) 2002/02/18

まつもと ゆきひろです

[#15914] making net/*.rb grok URI — "Akinori MUSHA" <knu@...>

 net/*.rb モジュール群をぜひとも標準添付となった URI クラスに

30 messages 2002/02/17
[#15915] Re: making net/*.rb grok URI — "Akinori MUSHA" <knu@...> 2002/02/17

At Mon, 18 Feb 2002 04:33:42 +0900,

[#15931] Re: making net/*.rb grok URI — Minero Aoki <aamine@...> 2002/02/18

あおきです。

[#15934] Re: making net/*.rb grok URI — "Akinori MUSHA" <knu@...> 2002/02/18

At Mon, 18 Feb 2002 15:24:22 +0900,

[#15937] Re: making net/*.rb grok URI — Minero Aoki <aamine@...> 2002/02/18

あおきです。

[#15958] Re: making net/*.rb grok URI — TAKAHASHI Masayoshi <maki@...> 2002/02/19

高橋征義です。

[#15978] Re: making net/*.rb grok URI — Tanaka Akira <akr@...17n.org> 2002/02/19

In article <200202190432.NAA18796@mx.inac.co.jp>,

[#16002] Re: making net/*.rb grok URI — TAKAHASHI Masayoshi <maki@...> 2002/02/20

高橋征義です。

[#16013] Re: making net/*.rb grok URI — Tanaka Akira <akr@...17n.org> 2002/02/20

In article <20020221020159R.maki@rubycolor.org>,

[#15988] Re: [rubyist:1097] Re: % 記法 — nobu.nakada@...

なかだです。

21 messages 2002/02/20
[#17594] Re: [rubyist:1097] Re: % 記法 — nobu.nakada@... 2002/06/26

なかだです。

[#16049] defined? autoload constant — Kazuhiro NISHIYAMA <zn@...>

西山和広です。

35 messages 2002/02/24
[#16058] Re: defined? autoload constant — matz@... (Yukihiro Matsumoto) 2002/02/25

まつもと ゆきひろです

[#16298] Re: defined? autoload constant — nobu.nakada@... 2002/03/09

なかだです。

[#16304] Re: defined? autoload constant — matz@... (Yukihiro Matsumoto) 2002/03/09

まつもと ゆきひろです

[#16375] Re: defined? autoload constant — keiju@... (石塚圭樹) 2002/03/14

けいじゅ@日本ラショナルソフトウェアです.

[#16380] Re: defined? autoload constant — nobu.nakada@... 2002/03/14

なかだです。

[#16398] Re: defined? autoload constant — keiju@... (石塚圭樹) 2002/03/14

けいじゅ@日本ラショナルソフトウェアです.

[#16399] Re: defined? autoload constant — nobu.nakada@... 2002/03/14

なかだです。

[#16400] Re: defined? autoload constant — keiju@... (石塚圭樹) 2002/03/14

けいじゅ@日本ラショナルソフトウェアです.

[#16403] Re: defined? autoload constant — matz@... (Yukihiro Matsumoto) 2002/03/14

まつもと ゆきひろです

[#16407] Re: defined? autoload constant — nobu.nakada@... 2002/03/15

なかだです。

[#16409] Re: defined? autoload constant — matz@... (Yukihiro Matsumoto) 2002/03/15

まつもと ゆきひろです

[#16481] Re: defined? autoload constant — keiju@... (石塚圭樹) 2002/03/19

けいじゅ@日本ラショナルソフトウェアです.

[#16482] Re: defined? autoload constant — matz@... (Yukihiro Matsumoto) 2002/03/19

まつもと ゆきひろです

[#16082] Array#select without block — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

14 messages 2002/02/25

[#16102] No trace_func event at if-elsif-else line — "NAKAMURA, Hiroshi" <nakahiro@...>

なひです。

21 messages 2002/02/26
[#16103] Re: No trace_func event at if-elsif-else line — matz@... (Yukihiro Matsumoto) 2002/02/26

まつもと ゆきひろです

[#16109] Re: No trace_func event at if-elsif-else line — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/02/26

なひです。

[#16110] Re: No trace_func event at if-elsif-else line — matz@... (Yukihiro Matsumoto) 2002/02/26

まつもと ゆきひろです

[#16117] Re: No trace_func event at if-elsif-else line — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/02/26

なひです。

[#16127] Re: No trace_func event at if-elsif-else line — matz@... (Yukihiro Matsumoto) 2002/02/26

まつもと ゆきひろです

[#16133] Re: No trace_func event at if-elsif-else line — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/02/27

なひです。

[#16135] Re: No trace_func event at if-elsif-else line — matz@... (Yukihiro Matsumoto) 2002/02/27

まつもと ゆきひろです

[#16256] Rite debug API (was Re: No trace_func event at if-elsif-else line) — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/03/07

なひです。どうせ一年も先の話なのでのんびりと。

[#16258] Re: Rite debug API (was Re: No trace_func event at if-elsif-else line) — matz@... (Yukihiro Matsumoto) 2002/03/07

まつもと ゆきひろです

[#16134] Defining (Python) Source Code Encoding — TAKAHASHI Masayoshi <maki@...>

高橋征義です。ruby-list の「localized document」ともやや関係あり?

13 messages 2002/02/27

[ruby-dev:15849] possible buffer overrun & pathname validation

From: nobu.nakada@...
Date: 2002-02-04 15:34:55 UTC
List: ruby-dev #15849
なかだです。

rb_file_s_expand_path()を見直してみたら、まだバッファオーバーラ
ンの可能性がありそうです。条件を指定するというのがどちらかとい
うと間違いやすいような気がするので、BUFCHECK()は長さを指定する
ようにしたほうがいいんじゃないかと思うのですが。

それともう一点、Stringからchar*を取り出してパス名として使う場合、
NUL terminateされているかどうかとか、途中にNULが入っていないか
などをチェックするようにしたほうがいいような気がします。


Index: file.c
===================================================================
RCS file: /cvs/ruby/src/ruby/file.c,v
retrieving revision 1.87
diff -u -2 -p -r1.87 file.c
--- file.c	2002/02/04 13:49:05	1.87
+++ file.c	2002/02/04 15:27:30
@@ -1378,12 +1378,12 @@ strrdirsep(path)
 }
 
-#define BUFCHECK(cond) while (cond) {\
+#define BUFRESIZE(needs) do {\
     long bdiff = p - buf;\
-    buflen *= 2;\
+    while (needs >= buflen) {buflen *= 2;}\
     rb_str_resize(result, buflen);\
     buf = RSTRING(result)->ptr;\
     p = buf + bdiff;\
     pend = buf + buflen;\
-}
+} while (0)
 
 VALUE
@@ -1395,4 +1395,5 @@ rb_file_s_expand_path(argc, argv)
     char *s, *buf, *b, *p, *pend;
     long buflen = MAXPATHLEN;
+    long len;
     int tainted;
 
@@ -1412,7 +1413,8 @@ rb_file_s_expand_path(argc, argv)
 		rb_raise(rb_eArgError, "couldn't find HOME environment -- expanding `%s'", s);
 	    }
-	    BUFCHECK (strlen(dir) > buflen);
+	    len = strlen(dir);
+	    BUFRESIZE (len);
 	    strcpy(buf, dir);
-	    p = buf + strlen(dir);
+	    p = buf + len;
 	    s++;
 	    tainted = 1;
@@ -1427,5 +1429,5 @@ rb_file_s_expand_path(argc, argv)
 		s = CharNext(s);
 	    }
-	    BUFCHECK (p + (s-b) >= pend);
+	    BUFRESIZE ((p-buf) + (s-b));
 	    memcpy(p, b, s-b);
 	    p += s-b;
@@ -1437,7 +1439,8 @@ rb_file_s_expand_path(argc, argv)
 		rb_raise(rb_eArgError, "user %s doesn't exist", buf);
 	    }
-	    BUFCHECK (strlen(pwPtr->pw_dir) > buflen);
+	    len = strlen(pwPtr->pw_dir);
+	    BUFRESIZE (len);
 	    strcpy(buf, pwPtr->pw_dir);
-	    p = buf + strlen(pwPtr->pw_dir);
+	    p = buf + len;
 	    endpwent();
 #endif
@@ -1451,5 +1454,5 @@ rb_file_s_expand_path(argc, argv)
 	    s = CharNext(s);
 	}
-	BUFCHECK (p + (s-b) >= pend);
+	BUFRESIZE ((p-buf) + (s-b));
 	memcpy(p, b, s-b);
 	p += s-b;
@@ -1460,5 +1463,6 @@ rb_file_s_expand_path(argc, argv)
 	    dname = rb_file_s_expand_path(1, &dname);
 	    if (OBJ_TAINTED(dname)) tainted = 1;
-	    BUFCHECK (strlen(RSTRING(dname)->ptr) > buflen);
+	    len = strlen(RSTRING(dname)->ptr);
+	    BUFRESIZE (len);
 	    strcpy(buf, RSTRING(dname)->ptr);
 	}
@@ -1467,8 +1471,9 @@ rb_file_s_expand_path(argc, argv)
 
 	    tainted = 1;
-	    BUFCHECK (strlen(dir) > buflen);
+	    len = strlen(dir);
+	    BUFRESIZE (len);
 	    strcpy(buf, dir);
 	}
-	p = &buf[strlen(buf)];
+	p = &buf[len];
 	while (p > buf && *(p - 1) == '/') p--;
     }
@@ -1476,5 +1481,5 @@ rb_file_s_expand_path(argc, argv)
 	while (*s && isdirsep(*s)) {
 	    *p++ = '/';
-	    BUFCHECK (p >= pend);
+	    BUFRESIZE (p-buf);
 	    s++;
 	}
@@ -1522,5 +1527,5 @@ rb_file_s_expand_path(argc, argv)
 #endif
 	    if (s > b) {
-		BUFCHECK (p + (s-b+1) >= pend);
+		BUFRESIZE ((p-buf) + (s-b+1));
 		memcpy(++p, b, s-b);
 		p += s-b;
@@ -1536,5 +1541,5 @@ rb_file_s_expand_path(argc, argv)
 
     if (s > b) {
-	BUFCHECK (p + (s-b) >= pend);
+	BUFRESIZE ((p-buf) + (s-b));
 	memcpy(++p, b, s-b);
 	p += s-b;


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

In This Thread

Prev Next