This is the mail archive of the cygwin@sources.redhat.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: environ problem


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?

Thanks,

Mark

-----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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]