delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2014/10/10/11:39:46

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:date:from:to:subject:message-id:reply-to
:references:mime-version:content-type:in-reply-to; q=dns; s=
default; b=vKoIEWgHktsWB3dO1tnrKUndPYBYhRx7pmwEpEavIVdT3GrY7oeVx
s4STWgktju1ba7wlX0bCedIzHX180/R/ilpy/Np2IzEJ9y1XOgxPXryxynCPpHZU
49WRVqYfXfa8knBVhQUUWiLPTtGpsvDs4t3GKXRyloDCEpSyBjGyGw=
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:date:from:to:subject:message-id:reply-to
:references:mime-version:content-type:in-reply-to; s=default;
bh=I58epr/OPxML4+32Nqqf6fl0xcg=; b=e8TT3Tn0JLn9HMH55l3jkp5LQu3b
bs4+TCYRfS0kZc/hF5GPEXg1qU91eozKDgEJGA8JnrgdPcxQcAsLGuUk1BB5nF+0
A2RRQV9OcOkMwUEh8F3D33cCAeNRAiDxNkf5WCQ3KkN1Y41rYLQbSPE6bTuLdFJk
FIdGSqQMEmmWFpw=
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=-5.0 required=5.0 tests=AWL,BAYES_40 autolearn=ham version=3.3.2
X-HELO: calimero.vinschen.de
Date: Fri, 10 Oct 2014 17:39:25 +0200
From: Corinna Vinschen <corinna-cygwin AT cygwin DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: Cannot exec() program outside of /bin if PATH is unset
Message-ID: <20141010153925.GL2681@calimero.vinschen.de>
Reply-To: cygwin AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
References: <5435714D DOT 6060206 AT t-online DOT de> <20141009100317 DOT GI29235 AT calimero DOT vinschen DOT de> <54369ADE DOT 7060201 AT redhat DOT com> <20141009162906 DOT GA25389 AT calimero DOT vinschen DOT de> <571726 DOT 85545 DOT bm AT smtp112 DOT sbc DOT mail DOT ne1 DOT yahoo DOT com> <20141010103446 DOT GJ2681 AT calimero DOT vinschen DOT de> <CAO1jNwt5UyB9CDKJdotXUND--mg1sY-5Fu+-ZHf2atM5_=HArA AT mail DOT gmail DOT com> <CAMCbSMrar1Zu4p6gN=gc8-XqE-8RUTmP3er0ujeN--CHKzCNAQ AT mail DOT gmail DOT com> <816144 DOT 8551 DOT bm AT smtp119 DOT sbc DOT mail DOT ne1 DOT yahoo DOT com> <CAMCbSMpWKbSVhVu85_02fN3sgWXiFBkUzjOOAJ6+Jxot8X6E=Q AT mail DOT gmail DOT com>
MIME-Version: 1.0
In-Reply-To: <CAMCbSMpWKbSVhVu85_02fN3sgWXiFBkUzjOOAJ6+Jxot8X6E=Q@mail.gmail.com>
User-Agent: Mutt/1.5.23 (2014-03-12)

--XaUbO9McV5wPQijU
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Oct 10 14:13, Arjen Markus wrote:
> 2014-10-10 13:22 GMT+02:00  <tednolan>:
> >>2014-10-10 13:24 GMT+02:00 Jan Nijtmans <...>:
> >>> 2014-10-10 12:34 GMT+02:00 Corinna Vinschen <...>:
> >>>> On Oct  9 11:46, tednolan.net wrote:
> >>>>> I'm pretty sure I've got some programs loading Tcl extensions that
> >>>>> cd into the directory with the extension dlls, load the extension a=
nd then
> >>>>> change back to where ever they were.
> >>>>
> >>>> Hmm.  If so, it's quite a weird way to handle this, rather than
> >>>> loading the modules with full path.
> >>>>
> >>>> Is that a Tcl "feature", or is it how certain Tcl apps are implement=
ed?
> >>>> I can't really believe the former...
> >>>
> >>> This is certainly not a Tcl "feature"!  The standard Tcl extension
> >>> mechanism always uses the full path simply because Tcl
> >>> cannot depend on platform-specific ways to search for
> >>> such libraries elsewhere.
> >>>
> >>> I'm willing to test this;I don't believe such a change
> >>> will break anything in my Tcl environment.
> >>>
> >>> Regards,
> >>>        Jan Nijtmans
> >
> > Hmm,
> >
> > It's been a while, but I think it is something like the extension is
> > a DLL, but it depends on another DLL.  Consider for instance, mysqltcl.
> > If you want to deploy that, you need the mysqltcl.dll and the mysql dll,
> > so you either have to be in the same dir when you load the extension,
> > or put that dir in PATH.
> >
> > Unfortunately, I can't run a test release on my work machine, or take
> > my work progs home.
>=20
> Right, that makes sense. There is indeed no way for the package
> manager to handle that scenario without external help, such as a PATH
> variable that includes the various directories these extra DLLs reside
> in.

There might be a potential workaround.  Given that Cygwin Tcl calls
dlopen to load DLLs, we have this somewhat under control.

The default DLL search algorithm searches the application dir for
dependent DLLs.  But there's a LoadLibraryEx flag called
LOAD_WITH_ALTERED_SEARCH_PATH.  When using this flag, and the DLL is
given with full path, the application dir in the DLL search path is
replaced by the directory of the DLL.  Thus, dependent DLLs will be
searched in the same dir the original DLL has been loaded from.

This could be utilized in dlopen.  If the DLL is given with no path, and
if LoadLibrary failes, create the full path to the DLL and call
LoadLibraryEx (full_path, LOAD_WITH_ALTERED_SEARCH_PATH).  DLLs in /bin
are taken care of by the SetDllDirectory call we're talking about here.

This is no 100% safe bet, I guess.  It would fail to load DLLs in
scenarios where DLLs depend on other DLLs from the current dir as well
as from the application dir, and the application dir is not /bin.  Just
how realistic is this scenario in a Cygwin environment?


Corinna

--=20
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

--XaUbO9McV5wPQijU
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAEBAgAGBQJUN/2tAAoJEPU2Bp2uRE+gVxsQAJgkEt2avpYxXvVpysGOycB8
EXTLg8Q2GZBgOFPDzYRVTXminLW4/OAmb0Prpjm3Ma57R7XaFsgepHqdLLtHvz+y
2BkSl0N/ng4RU1SqHm9z0h2LnE5SPk3dOqQHiUONc3xxMftvbBHd3K/fteCFZjGu
foVTQW4MD24qw1WCo2ij+y409OdZVtnoLYY6/DLi0kRxFVAtfXaKJzlO4m/7nRab
cNeZEF1m17K9d1WzvmUDTtOxgYwoxnNZJZHPf1ThsX/D857fKeVxAGk/IoOJtKDJ
ag/mXBjdSneX0FoPVkbApdGNwGWip2Fs5UwN79zb89R+AU+7EIjZTw5gKgDrQOp6
uib7e2LW5OqpSbq6Bjnfua9V9XtHoTl7OpFrEccCPs1TZOOTuv8OIEGTTmWGnd9A
WhxDYRNjnZcvZs+op5XFQsu+8Vdrp2rnpK7TaoQZsJ/ub9qdn5uGhNFMU/ZDU1B0
l90tu726Jvp6D5hcGnpjYdYnRubW+ljqK1eMGKfacPJPNoc5emVQb3X/6iKlhOuT
w/7FIvE2TFZ3rbPSzYLlITJPMNr+VMA8s1vx5pt7c4Dlv0RtXyRZAGDB6Q7NfKvq
6v5oyux/UVjyr+qN7+YtPvkUb5p3csxXngDSjpWLwcaIU7tdWl4VN0mJKGH2l3VO
NdbRb8NeS/581wePpOI8
=JzkY
-----END PGP SIGNATURE-----

--XaUbO9McV5wPQijU--

- Raw text -


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