This is the mail archive of the cygwin-cvs@cygwin.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]
Other format: [Raw text]

[newlib-cygwin] Avoid name change if script is called via symlink from execvp et al.


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=8f00fa7f36af6d35cd5f1f3c910b9215d7cb3e41

commit 8f00fa7f36af6d35cd5f1f3c910b9215d7cb3e41
Author: Corinna Vinschen <vinschen@redhat.com>
Date:   Tue Mar 17 11:40:12 2015 +0100

    Avoid name change if script is called via symlink from execvp et al.
    
    	* spawn.cc (find_exec): Fix a name change in case of a symlink which
    	can be opened as is.
    
    Signed-off-by: Corinna Vinschen <vinschen@redhat.com>

Diff:
---
 winsup/cygwin/ChangeLog      |  5 +++++
 winsup/cygwin/release/1.7.36 |  3 +++
 winsup/cygwin/spawn.cc       | 12 ++++++------
 3 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 18dcc25..97b8104 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-17  Corinna Vinschen  <corinna@vinschen.de>
+
+	* spawn.cc (find_exec): Fix a name change in case of a symlink which
+	can be opened as is.
+
 2015-03-12  Jon TURNEY  <jon.turney@dronecode.org.uk>
 
 	* exceptions.cc (stack_info): Add sigstackptr member.
diff --git a/winsup/cygwin/release/1.7.36 b/winsup/cygwin/release/1.7.36
index 1f89a97..2879777 100644
--- a/winsup/cygwin/release/1.7.36
+++ b/winsup/cygwin/release/1.7.36
@@ -15,3 +15,6 @@ Bug Fixes
 
 - Fix potential premature SIGHUP in pty code.
   Addresses: https://cygwin.com/ml/cygwin/2015-03/msg00070.html
+
+- Fix a name change from symlink to target name in calls to execvp, system, etc.
+  Addresses: https://cygwin.com/ml/cygwin/2015-03/msg00270.html
diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc
index 720a943..1cc5cf3 100644
--- a/winsup/cygwin/spawn.cc
+++ b/winsup/cygwin/spawn.cc
@@ -104,13 +104,13 @@ find_exec (const char *name, path_conv& buf, const char *search,
   if ((has_slash || opt & FE_CWD)
       && (suffix = perhaps_suffix (name, buf, err, opt)) != NULL)
     {
+      /* Overwrite potential symlink target with original path.
+	 See comment preceeding this method. */
+      tmp_path = tmp;
       if (!has_slash)
-	{
-	  /* Overwrite potential symlink target with original path.
-	     See comment preceeding this method. */
-	  stpcpy (stpcpy (tmp, "./"), name);
-	  buf.set_posix (tmp);
-	}
+	tmp_path = stpcpy (tmp, "./");
+      stpcpy (tmp_path, name);
+      buf.set_posix (tmp);
       retval = buf.get_posix ();
       goto out;
     }


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