delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2014/10/24/16:16:49

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:message-id:date:from:mime-version:to:subject
:references:in-reply-to:content-type:content-transfer-encoding;
q=dns; s=default; b=sBEPTsr3/xMrAVNW10XEOaVVcCXnJbb/Y+6hkCytFA4
P+gNATFnecv5rVvBxumaKgKMhRP0kFhqTDOCIZ6cnmU1csXiaguwmWisOEboRd6k
m2eTOB6BJOq0ukc0+AyTl5VvDzfQlBNBh7jVX5mJAvWrC4sIl4g8JE/U9s/gL7j4
=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:message-id:date:from:mime-version:to:subject
:references:in-reply-to:content-type:content-transfer-encoding;
s=default; bh=brKhXkcU4+Ate7770uo1nJzGX1c=; b=niYzSO6byy//ooVtI
+aS5aPAwBigrP8XOtRpQ9/lHIcsr1vDThZ8dTHpNLUCGAkrQ3naZJOBcAfZcqQGM
1fk9c3a01s67R6/PmDS1gyNO3ItyjDxr8c7OPxhzfOk/u/wsNhUBDZQ8KTAl8d09
RTbpSmYZamuvO6NQmIvPsxN/hM=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Authentication-Results: sourceware.org; auth=none
X-Virus-Found: No
X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,RP_MATCHES_RCVD autolearn=ham version=3.3.2
X-HELO: mailout08.t-online.de
Message-ID: <544AB396.5060300@t-online.de>
Date: Fri, 24 Oct 2014 22:16:22 +0200
From: Christian Franke <Christian DOT Franke AT t-online DOT de>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0 SeaMonkey/2.26.1
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: [ANNOUNCEMENT] TEST RELEASE: Cygwin 1.7.33-0.1
References: <announce DOT 20141022092323 DOT GH32374 AT calimero DOT vinschen DOT de> <A0FD00D9-6DFB-4E3D-9FDE-44BC1CAAEEDC AT Denis-Excoffier DOT org> <20141024110209 DOT GJ20607 AT calimero DOT vinschen DOT de> <25D5C8B8-57B7-449C-95C6-CD9055816B6B AT Denis-Excoffier DOT org> <20141024193638 DOT GO20607 AT calimero DOT vinschen DOT de>
In-Reply-To: <20141024193638.GO20607@calimero.vinschen.de>
X-IsSubscribed: yes

Corinna Vinschen wrote:
> [Christian, please chime in]
>
> On Oct 24 20:41, Denis Excoffier wrote:
>>>  From Cygwin's POV {/usr}/bin is a system dir.  For security reasons it
>>> makes sense that the system DLLs in /bin cannot be overridden, unless
>>> it's an installation issue which should be covered by looking into the
>>> application installation dir first.
>> Instead of adding the lookup of /usr/bin before the PATH, you could add
>> it afterwards?
> No.  You don't expect this kind of flexibility in the Win32 API, do you?

[The *LIBPATH variables from MS OS/2 (1987) never made it to Win API :-]


> The way it works is, there's a call SetDllDirectory which replaces the "."
> in the DLL search path with the directory given as argument.  The search
> order is always this:
>
>    application dir
>    dir given in SetDllDirecory (Cygwin's bin)
>    system dirs
>    $PATH
>
>> Or do you mean that my use is bad practice for security
>> reasons? That there might be some unexpected DLL somewhere in the PATH?
>> IIRC, in linux/solaris, LD_LIBRARY_PATH is not honored when you are root,
>> not otherwise.
> Not quite.  LD_LIBRARY_PATH is only ignored if the excutable is a
> suid/sgid executable.  Unfortunately we don't have LD_LIBRARY_PATH at
> all when running execve (but we have in dlopen).
>
>>> Having said that, moving your DLLs into the application dir is really
>>> not an option?
>> Oh yes, i use it all the time. It is the job of 'make install' to also
>> install the appropriate DLLs. The point here is for 'make check'.
> Yeah.
>
> Sigh.
>
> I don't like the idea either that this simple change breaks existing
> scenarios.  I'm inclined to revert this change.
>
> Christian, would you mind terribly to re-add the tweak to postfix
> to set $PATH?
>

No problem.

Another possible solution:
Check for e.g. CYGWIN_DLLPATH environment variable before calling 
SetDllDirectory().

If unset or empty, call SetDllDirectory("X:\path_to_cygwin\bin");
else if set to ".", do nothing.
else call SetDllDirectory(CYGWIN_DLLPATH);

The above 'make check' should then work again as 'CYGWIN_DLLPATH=. make 
check'.

Possible enhancement: If AddDllDirectory() is available (>= Win8), 
accept a real search path in CYGWIN_DLLPATH.

Christian


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019