ruby-changes:14454
From: knu <ko1@a...>
Date: Mon, 11 Jan 2010 22:59:18 +0900 (JST)
Subject: [ruby-changes:14454] Ruby:r26286 (trunk): * hash.c (ruby_setenv): Improve the emulatation of setenv(3) on
knu 2010-01-11 22:58:59 +0900 (Mon, 11 Jan 2010) New Revision: 26286 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=26286 Log: * hash.c (ruby_setenv): Improve the emulatation of setenv(3) on environments where putenv(3) is used. Raise EINVAL If a variable name contains an '='. Modified files: trunk/ChangeLog trunk/hash.c Index: ChangeLog =================================================================== --- ChangeLog (revision 26285) +++ ChangeLog (revision 26286) @@ -1,3 +1,9 @@ +Mon Jan 11 22:45:08 2010 Akinori MUSHA <knu@i...> + + * hash.c (ruby_setenv): Improve the emulatation of setenv(3) on + environments where putenv(3) is used. Raise EINVAL If a + variable name contains an '='. + Mon Jan 11 18:16:38 2010 wanabe <s.wanabe@g...> * vm_insnhelper.h (GET_BLOCK_PTR): return 0 when in class frame. Index: hash.c =================================================================== --- hash.c (revision 26285) +++ hash.c (revision 26286) @@ -2045,6 +2045,10 @@ #if defined(_WIN32) int len; char *buf; + if (strchr(name, '=')) { + errno = EINVAL; + rb_sys_fail("ruby_setenv"); + } if (value) { len = strlen(name) + 1 + strlen(value) + 1; buf = ALLOCA_N(char, len); @@ -2072,8 +2076,13 @@ rb_sys_fail("unsetenv"); } #elif defined __sun__ - size_t len = strlen(name); + size_t len; char **env_ptr, *str; + if (strchr(name, '=')) { + errno = EINVAL; + rb_sys_fail("ruby_setenv"); + } + len = strlen(name); for (env_ptr = GET_ENVIRON(environ); (str = *env_ptr) != 0; ++env_ptr) { if (!strncmp(str, name, len) && str[len] == '=') { if (!in_origenv(str)) free(str); @@ -2089,7 +2098,12 @@ } #else /* WIN32 */ size_t len; - int i=envix(name); /* where does it go? */ + int i; + if (strchr(name, '=')) { + errno = EINVAL; + rb_sys_fail("ruby_setenv"); + } + i=envix(name); /* where does it go? */ if (environ == origenviron) { /* need we copy environment? */ int j; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/