summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2017-06-05 09:03:15 +0900
committerLibravatar Junio C Hamano <gitster@pobox.com>2017-06-05 09:03:15 +0900
commite6f80aee299f530c9565b520aa76e6ff2e5649bc (patch)
treec66968077cfc4333c2fe703cdc090383d7a3711e
parentMerge branch 'jk/alternate-ref-optim' into maint (diff)
parentWindows: do not treat a path with backslashes as a remote's nick name (diff)
downloadtgif-e6f80aee299f530c9565b520aa76e6ff2e5649bc.tar.xz
Merge branch 'js/bs-is-a-dir-sep-on-windows' into maint
"foo\bar\baz" in "git fetch foo\bar\baz", even though there is no slashes in it, cannot be a nickname for a remote on Windows, as that is likely to be a pathname on a local filesystem. * js/bs-is-a-dir-sep-on-windows: Windows: do not treat a path with backslashes as a remote's nick name mingw.h: permit arguments with side effects for is_dir_sep
-rw-r--r--compat/mingw.h6
-rw-r--r--remote.c7
2 files changed, 11 insertions, 2 deletions
diff --git a/compat/mingw.h b/compat/mingw.h
index 3350169555..e03aecfe2e 100644
--- a/compat/mingw.h
+++ b/compat/mingw.h
@@ -398,7 +398,11 @@ HANDLE winansi_get_osfhandle(int fd);
(isalpha(*(path)) && (path)[1] == ':' ? 2 : 0)
int mingw_skip_dos_drive_prefix(char **path);
#define skip_dos_drive_prefix mingw_skip_dos_drive_prefix
-#define is_dir_sep(c) ((c) == '/' || (c) == '\\')
+static inline int mingw_is_dir_sep(int c)
+{
+ return c == '/' || c == '\\';
+}
+#define is_dir_sep mingw_is_dir_sep
static inline char *mingw_find_last_dir_sep(const char *path)
{
char *ret = NULL;
diff --git a/remote.c b/remote.c
index 72b4591b98..32f137e966 100644
--- a/remote.c
+++ b/remote.c
@@ -649,7 +649,12 @@ static int valid_remote_nick(const char *name)
{
if (!name[0] || is_dot_or_dotdot(name))
return 0;
- return !strchr(name, '/'); /* no slash */
+
+ /* remote nicknames cannot contain slashes */
+ while (*name)
+ if (is_dir_sep(*name++))
+ return 0;
+ return 1;
}
const char *remote_for_branch(struct branch *branch, int *explicit)