Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com From: "Mark Weaver" To: , "Cygwin" Subject: RE: environ problem Date: Mon, 17 Jul 2000 11:54:52 +0100 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0) In-Reply-To: <20000716115413.C11176@cygnus.com> X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700 Importance: Normal 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 AT sources DOT redhat DOT com [mailto:cygwin-owner AT sources DOT redhat DOT 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 >To: Cygwin >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 AT sourceware DOT cygnus DOT com -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com