[#30455] a[] += 1 で SEGV — "Hiroki Motoyoshi" <himotoyoshi.ml@...>
本吉と申します。
6 messages
2007/03/01
[#30477] ThreadError on shell.rb — "Akira ODA" <oda.org@...>
はじめまして、尾田といいます。
8 messages
2007/03/04
[#30478] Re: ThreadError on shell.rb
— keiju@... (石塚圭樹)
2007/03/04
けいじゅ@いしつかです.
[#30482] Ruby 1.8.6 preview3 has been released — "Akinori MUSHA" <knu@...>
Ruby 1.8.6 preview3 をリリースしました。
10 messages
2007/03/04
[#30489] Re: Ruby 1.8.6 preview3 has been released
— nekomaho <nekomaho@...>
2007/03/05
ねこまほです.
[#30486] str.lines[1..-1] — Minero Aoki <aamine@...>
青木です。
7 messages
2007/03/05
[#30487] Time#to_s format — OHARA Shigeki <os@...>
大原です。
6 messages
2007/03/05
[#30504] num_tとthread_initという名前について — "Yutaka Kanemoto" <kinpoco@...>
金本ともうします。
1 message
2007/03/07
[#30505] [BUG?] SIGTERM の取り扱い — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
10 messages
2007/03/08
[#30509] Re: [BUG?] SIGTERM の取り扱い
— Nobuyoshi Nakada <nobu@...>
2007/03/08
なかだです。
[#30510] Re: [BUG?] SIGTERM の取り扱い
— Yukihiro Matsumoto <matz@...>
2007/03/08
まつもと ゆきひろです
[#30531] DL::PtrData#to_a dumps core — sheepman <sheepman@...>
こんばんは、sheepman です。
4 messages
2007/03/11
[#30532] DL::PtrData#inspect — sheepman <sheepman@...>
こんばんは、sheepman です。
6 messages
2007/03/11
[#30537] Microsoft-IIS 上で cgi.rb がレスポンス行を2重に出力する — MIYASAKA Masaru <alkaid@...>
初めての投稿です。みやさか と申します。よろしくお願いいたします。
5 messages
2007/03/12
[#30549] [ANN] Ruby 1.8.6 has been released — "Akinori MUSHA" <knu@...>
Ruby 1.8.6 をリリースしました。
14 messages
2007/03/12
[#30555] Re: [ANN] Ruby 1.8.6 has been released
— "U.Nakamura" <usa@...>
2007/03/13
こんにちは、なかむら(う)です。
[#30558] Re: [ANN] Ruby 1.8.6 has been released
— moonwolf@...
2007/03/13
おひさしぶり、MoonWolfです。
[#30559] Re: [ANN] Ruby 1.8.6 has been released
— nekomaho <nekomaho@...>
2007/03/13
ねこまほです.
[#30553] help: lib/shell for ruby 1.9 — keiju@... (Keiju ISHITSUKA)
けいじゅ@いしつかです.
13 messages
2007/03/13
[#30585] Re: help: lib/shell for ruby 1.9
— Yukihiro Matsumoto <matz@...>
2007/03/15
まつもと ゆきひろです
[#30587] Re: help: lib/shell for ruby 1.9
— keiju@... (石塚圭樹)
2007/03/15
けいじゅ@いしつかです.
[#30588] Re: help: lib/shell for ruby 1.9
— Yukihiro Matsumoto <matz@...>
2007/03/15
まつもと ゆきひろです
[#30590] [BUG?] Mutex or ConditionVariable for ruby 1.8[Re: Re: help: lib/shell for ruby 1.9]
— keiju@... (石塚圭樹)
2007/03/15
けいじゅ@いしつかです.
[#30592] Re: [BUG?] Mutex or ConditionVariable for ruby 1.8[Re: Re: help: lib/shell for ruby 1.9]
— "Akinori MUSHA" <knu@...>
2007/03/15
At Thu, 15 Mar 2007 18:53:46 +0900,
[#30600] Re: [BUG?] Mutex or ConditionVariable for ruby 1.8[Re: Re: help: lib/shell for ruby 1.9]
— "Akinori MUSHA" <knu@...>
2007/03/16
At Thu, 15 Mar 2007 19:18:42 +0900,
[#30601] Re: [BUG?] Mutex or ConditionVariable for ruby 1.8[Re: Re: help: lib/shell for ruby 1.9]
— keiju@... (keiju ISHITSUKA)
2007/03/16
けいじゅ@いしつかです.
[#30564] release code and revision number — Nobuyoshi Nakada <nobu@...>
なかだです。
11 messages
2007/03/13
[#30566] Re: release code and revision number
— Urabe Shyouhei <shyouhei@...>
2007/03/14
卜部です
[#30581] [ruby-core:10580] Thread後のexecでENOTSUPPエラー対応 — "H.Holon" <holon@...>
相馬 - H.Holonです。
8 messages
2007/03/14
[#30646] Re: [ruby-core:10580] Thread後のexecでENOTSUPPエラー対応
— Nobuyoshi Nakada <nobu@...>
2007/03/19
なかだです。
[#30586] Etc.getgrgid が getgid の値に固定されています — 植田裕之 <ueda@...>
植田と申します。
5 messages
2007/03/15
[#30593] [BUG] waitpid for ruby-trunk — keiju@... (Keiju ISHITSUKA)
けいじゅ@いしつかです.
5 messages
2007/03/15
[#30612] stdout flush in fork — keiju@... (Keiju ISHITSUKA)
けいじゅ@いしつかです.
9 messages
2007/03/17
[#30614] Re: stdout flush in fork
— Yukihiro Matsumoto <matz@...>
2007/03/17
まつもと ゆきひろです
[#30616] Re: stdout flush in fork
— keiju@... (石塚圭樹)
2007/03/17
けいじゅ@いしつかです.
[#30620] DL.callback as free function causes errors — sheepman <sheepman@...>
こんにちは、sheepman です。
4 messages
2007/03/18
[#30627] [ ruby-Bugs-9360 ] Matrix inverse problem — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
4 messages
2007/03/19
[#30648] YARVでのalias名の取得方法 — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
5 messages
2007/03/20
[#30653] [BUG] queue 0x424010 freed with live thread(s) waiting — Masatoshi SEKI <m_seki@...>
咳といいます。
4 messages
2007/03/20
[#30655] win32/registry wtime — moonwolf@...
MoonWolfです。
11 messages
2007/03/20
[#30658] Unicode対応と文字化け(Re: win32/registry wtime)
— Yukihiro Matsumoto <matz@...>
2007/03/21
まつもと ゆきひろです
[#30659] Re: Unicode対応と文字化け(Re: win32/registry wtime)
— Tietew <tietew+ruby-dev@...>
2007/03/21
win32/registry.rb を書いた Tietew です。
[ruby-dev:30673] Re: fail to copy argv on Win32?
From:
Nobuyoshi Nakada <nobu@...>
Date:
2007-03-24 15:49:56 UTC
List:
ruby-dev #30673
なかだです。
At Sat, 24 Mar 2007 14:58:36 +0900,
wanabe wrote in [ruby-dev:30672]:
> trunkのrev.12125をmingw32環境で試したところ、ruby -e 'p "1"' で
> unterminated string meets end of file と言われてしまいました。
> 一応rev.12124 を参考にパッチを書いてみたのですが、動作を全然理解できていないので
> おかしなことをしているかもしれません。
パッチ自体は正しいと思いますが、strlcpy()やstrlcat()を使うべき
なのは、木村さんの日記からリンクされている「Pythonも危ない...」
[1]でも書かれているとおり、固定バッファの場合です。win32.cのよ
うに、コピー元の長さでバッファを確保してその長さでコピーするよ
うな場合は、memcpy()で十分ではないかと思いますし、strdup()のほ
うが適切なことも多いのではないでしょうか。
[1] http://blog.ohgaki.net/index.php/yohgaki/2007/03/15/pythona_a_pa_oa
Index: win32/win32.c
===================================================================
--- win32/win32.c (revision 12127)
+++ win32/win32.c (working copy)
@@ -402,8 +402,5 @@ init_env(void)
return;
}
- NTLoginName = (char *)malloc(len+1);
- if (!NTLoginName) return;
- strlcpy(NTLoginName, env, len + 1);
- NTLoginName[len] = '\0';
+ NTLoginName = strdup(env);
}
@@ -1057,8 +1054,7 @@ insert(const char *path, VALUE vinfo)
MEMZERO(tmpcurr, NtCmdLineElement, 1);
tmpcurr->len = strlen(path);
- tmpcurr->str = (char *)malloc(tmpcurr->len + 1);
+ tmpcurr->str = strdup(path);
if (!tmpcurr->str) return -1;
tmpcurr->flags |= NTMALLOC;
- strlcpy(tmpcurr->str, path, tmpcurr->len + 1);
**tail = tmpcurr;
*tail = &tmpcurr->next;
@@ -1085,5 +1081,5 @@ cmdglob(NtCmdLineElement *patt, NtCmdLin
if (!(buf = malloc(patt->len + 1))) return 0;
- strlcpy(buf, patt->str, patt->len + 1);
+ memcpy(buf, patt->str, patt->len + 1);
buf[patt->len] = '\0';
for (p = buf; *p; p = CharNext(p))
@@ -1374,5 +1370,5 @@ rb_w32_cmdvector(const char *cmd, char *
while (curr = cmdhead) {
- strlcpy(ptr, curr->str, len - (elements + 1));
+ memcpy(ptr, curr->str, curr->len + 1);
*vptr++ = ptr;
ptr += curr->len + 1;
@@ -1437,15 +1433,15 @@ rb_w32_opendir(const char *filename)
// Create the search pattern
//
- len = strlen(filename) + 2 + 1;
- if (!(scanname = malloc(len))) {
+ len = strlen(filename);
+ if (!(scanname = malloc(len + 2 + 1))) {
free(p);
return NULL;
}
- strlcpy(scanname, filename, len);
+ memcpy(scanname, filename, len + 1);
- if (index("/\\:", *CharPrev(scanname, scanname + strlen(scanname))) == NULL)
- strlcat(scanname, "/*", len);
+ if (index("/\\:", *CharPrev(scanname, scanname + len)) == NULL)
+ memcpy(scanname + len, "/*", 2 + 1);
else
- strlcat(scanname, "*", len);
+ memcpy(scanname + len, "*", 1 + 1);
//
@@ -1472,5 +1468,5 @@ rb_w32_opendir(const char *filename)
return NULL;
}
- strlcpy(p->start, fd.cFileName, idx);
+ memcpy(p->start, fd.cFileName, idx);
p->bits[0] = 0;
if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
@@ -1497,5 +1493,5 @@ rb_w32_opendir(const char *filename)
goto error;
p->start = tmp;
- strlcpy(&p->start[idx], fd.cFileName, len);
+ memcpy(&p->start[idx], fd.cFileName, len);
if (p->nfiles % 4 == 0) {
@@ -1554,5 +1550,5 @@ rb_w32_readdir(DIR *dirp)
if (!(dirp->dirstr.d_name = malloc(dirp->dirstr.d_namlen + 1)))
return NULL;
- strlcpy(dirp->dirstr.d_name, dirp->curr, dirp->dirstr.d_namlen + 1);
+ memcpy(dirp->dirstr.d_name, dirp->curr, dirp->dirstr.d_namlen + 1);
//
@@ -1862,5 +1858,5 @@ rb_w32_strerror(int e)
if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS, &source, e, 0,
- buffer, 512, NULL) == 0)
+ buffer, sizeof(buffer), NULL) == 0)
strlcpy(buffer, "Unknown Error", sizeof(buffer));
}
@@ -3459,8 +3455,8 @@ rb_w32_stati64(const char *path, struct
*end = '\0';
else if (*end != '\\')
- strlcat(buf1, "\\", size);
+ memcpy(buf1 + len, "\\", 2);
}
else if (*end == '\\' || (buf1 + 1 == end && *end == ':'))
- strlcat(buf1, ".", size);
+ memcpy(buf1 + len, ".", 2);
ret = IsWinNT() ? winnt_stat(buf1, st) : stati64(buf1, st);
@@ -3916,9 +3912,7 @@ rb_w32_get_environ(void)
for (env = envtop, myenv = myenvtop; *env; env += strlen(env) + 1) {
if (*env != '=') {
- int len = strlen(env) + 1;
- if (!(*myenv = (char *)malloc(len))) {
+ if (!(*myenv = strdup(env))) {
break;
}
- strlcpy(*myenv, env, len);
myenv++;
}
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦