* win32/win32.c (rb_w32_cmdvector): fixed buffer size. reported by

wanabe [ruby-dev:30672]

	* win32/win32.c (init_env, insert, rb_w32_get_environ): use strdup
	  instead of malloc + strlcpy. suggested by nobu [ruby-dev:30673]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12131 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
usa 2007-03-30 02:50:58 +00:00
Родитель a2dba5be2d
Коммит 528e8517b8
2 изменённых файлов: 13 добавлений и 10 удалений

Просмотреть файл

@ -1,3 +1,11 @@
Fri Mar 30 11:46:51 2007 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (rb_w32_cmdvector): fixed buffer size. reported by
wanabe [ruby-dev:30672]
* win32/win32.c (init_env, insert, rb_w32_get_environ): use strdup
instead of malloc + strlcpy. suggested by nobu [ruby-dev:30673]
Fri Mar 30 02:29:04 2007 Technorama <oss-ruby@technorama.net>
* ext/openssl/ossl_{bn,cipher,digest,hmac,rand,pkey_{dh,dsa,rsa}}.c:

Просмотреть файл

@ -401,10 +401,7 @@ init_env(void)
NTLoginName = "<Unknown>";
return;
}
NTLoginName = (char *)malloc(len+1);
if (!NTLoginName) return;
strlcpy(NTLoginName, env, len + 1);
NTLoginName[len] = '\0';
NTLoginName = strdup(env);
}
static void init_stdhandle(void);
@ -1056,10 +1053,9 @@ insert(const char *path, VALUE vinfo)
if (!tmpcurr) return -1;
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;
@ -1373,7 +1369,7 @@ rb_w32_cmdvector(const char *cmd, char ***vec)
ptr = buffer + (elements+1) * sizeof(char *);
while (curr = cmdhead) {
strlcpy(ptr, curr->str, len - (elements + 1));
strlcpy(ptr, curr->str, curr->len + 1);
*vptr++ = ptr;
ptr += curr->len + 1;
cmdhead = curr->next;
@ -1861,7 +1857,7 @@ rb_w32_strerror(int e)
e = GetLastError();
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));
}
else
@ -3916,10 +3912,9 @@ 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++;
}
}