On Fri, Jul 13, 2007 at 02:39:30PM -0500, Sean C. Farley wrote: > FreeBSD 6 will also dump if the length of the value was less than or > equal to "/bin" since it reuses this string. This will core dump: > > nenv[0] = "PATH=/bin"; > nenv[1] = NULL; > environ = nenv; > setenv("PATH", "/bin", 1); 1) I care in first hand about unsetenv() as my example states. There nowhere said in the specs that unsetenv() may modify environ _content_, manpage says about pointers only. 2) That example not fail under FreeBSD 6 but fail under new code: nenv[0] = "PATH=/bin"; nenv[1] = NULL; environ = nenv; setenv("HOME", "/xxx", 1); (that is because new code will touch "PATH=/bin" string in anycase while old ones looks for "HOME" only). The most safest way is do not touch environ content outside of scope of requested modification. That means I agree that nenv[0] = "PATH=/bin"; setenv("PATH", "/bin", 1); may fail, but not about the cases 1) and 2) -- http://ache.pp.ru/Received on Fri Jul 13 2007 - 18:24:36 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:14 UTC