From 2323d7a1ef909f9deb3f21329cf30bd1173ee9cf Mon Sep 17 00:00:00 2001 From: Thomas Wolf Date: Tue, 24 Dec 2019 12:13:29 +0100 Subject: [PATCH] Hooks: avoid problems with backslashes in paths Calling sh -c with a script path containing backslashes may fail since the shell may try to process them as escape characters. Instead of calling sh.exe -c 'C:\path\script "$@"' 'C:\path\script' other args call sh.exe -c '$0 "$@"' 'C:\path\script' other args which avoids this escape processing. Note that this is not specific to Windows. If the path or the script name contain backslashes, this also occurs on Unix. Bug: 558577 Change-Id: I47d63db6f8644f956c55c42b07dbcad7d7f305aa Signed-off-by: Thomas Wolf --- org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java | 2 +- org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java index 7c170ac4e..5c2d8277c 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java @@ -261,7 +261,7 @@ public class FS_POSIX extends FS { List argv = new ArrayList<>(4 + args.length); argv.add("sh"); //$NON-NLS-1$ argv.add("-c"); //$NON-NLS-1$ - argv.add(cmd + " \"$@\""); //$NON-NLS-1$ + argv.add("$0 \"$@\""); //$NON-NLS-1$ argv.add(cmd); argv.addAll(Arrays.asList(args)); ProcessBuilder proc = new ProcessBuilder(); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java index 4efa9888f..ac3248cb6 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java @@ -149,7 +149,7 @@ public class FS_Win32_Cygwin extends FS_Win32 { List argv = new ArrayList<>(4 + args.length); argv.add("sh.exe"); //$NON-NLS-1$ argv.add("-c"); //$NON-NLS-1$ - argv.add(cmd + " \"$@\""); //$NON-NLS-1$ + argv.add("$0 \"$@\""); //$NON-NLS-1$ argv.add(cmd); argv.addAll(Arrays.asList(args)); ProcessBuilder proc = new ProcessBuilder();