environ problem

Chris Faylor cgf@cygnus.com
Mon Jul 17 09:33:00 GMT 2000


On Mon, Jul 17, 2000 at 11:54:52AM +0100, Mark Weaver wrote:
>I agree that it's an exceedingly weird thing to do, and I wouldn't have
>expected it to work, and I'm quite happy that putenv/getenv are supported
>under normal circumstances.
>However, the fact that a well established piece of software that runs on a
>number of different architectures uses code like this gives me a suspicion
>that it should work.  So my question is - where is the problem?  Sendmail
>doing something naughty or cygwin not supporting something it should?

I don't know.

cgf

>-----Original Message-----
>From: cygwin-owner@sources.redhat.com
>[ mailto:cygwin-owner@sources.redhat.com]On Behalf Of Chris Faylor
>Sent: Sunday, July 16, 2000 4:54 PM
>To: Cygwin
>Subject: Re: environ problem
>
>
>On Sat, Jul 15, 2000 at 11:50:35PM -0700, Dave Arnold wrote:
>>I don't know a darn thing about POSIX but I do know that I tried using
>>getenv() and also had access violations and other similar hangups.
>>
>>Do these functions work at all with cygwin?
>
>They are supposed to work.  Do you honestly think that we'd release code
>that intentionally gives access violations?
>
>Or, if you think that the environ stuff is trivially broken, then how
>do you suppose the various shells manage to manipulate their environment?
>
>If you have test cases that illustrate breakage in getenv/putenv then
>please post them and we'll make it a top priority to fix this problem,
>assuming that you're not doing something like the below which tries
>to do something exceedingly weird with the environ pointer.
>
>cgf
>
>>-----Original Message-----
>>From: Mark Weaver <mark@npsl.co.uk>
>>To: Cygwin <cygwin@sourceware.cygnus.com>
>>Date: Monday, July 10, 2000 8:12 AM
>>Subject: environ problem
>>
>>
>>>I am currently in the process of a sendmail port to NT, based on cygwin.
>I
>>>have discovered that sendmail internally modifies environ, and then uses
>>>putenv to modify the resulting environment (sample code that I abstracted
>>>attached below) - doing this causes cygwin compiled programs to crash (due
>>>in fact to an overwrite of the import address table).  (The crash might
>not
>>>be immediate; a number of putenv calls are sometimes required for the
>>>appropriate chunk of memory to be overwritten).
>>>
>>>Before I `fix' this behaviour, does POSIX allow for modifying environ?
>And
>>>even if it doesn't, then is the practice widespread enough for it to be
>>>worth supporting?  (i.e. should I fix cygwin or sendmail!)
>>>
>>>Thanks,
>>>
>>>Mark
>>>
>>>code snippet:
>>>
>>>int main()
>>>{
>>> char *emptyenviron[1];
>>> char** ExternalEnviron;
>>>
>>> emptyenviron[0] = NULL;
>>> ExternalEnviron = environ;
>>> environ = emptyenviron;
>>>
>>> putenv("AGENT=sendmail"); // access violation here
>>> return 1;
>>>}
>
>--
>Want to unsubscribe from this list?
>Send a message to cygwin-unsubscribe@sourceware.cygnus.com
>
>
>--
>Want to unsubscribe from this list?
>Send a message to cygwin-unsubscribe@sourceware.cygnus.com

-- 
cgf@cygnus.com                        Cygnus Solutions, a Red Hat company
http://sourceware.cygnus.com/         http://www.redhat.com/

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com



More information about the Cygwin mailing list