From 0d58ef9daca5f27a8a8bb46c1836ea0d28967bd2 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Tue, 17 Jun 2003 16:52:18 +0000 Subject: [PATCH] * path.cc (mount): Do more strict checking on posix path arguments. --- winsup/cygwin/ChangeLog | 4 ++++ winsup/cygwin/path.cc | 13 +++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 441da04e5..e1706ec4a 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,7 @@ +2003-06-17 Christopher Faylor + + * path.cc (mount): Do more strict checking on posix path arguments. + 2003-06-15 Christopher Faylor Throughout, remove "include " from files which already include diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 3f6c1e79b..d0648192d 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -1894,10 +1894,16 @@ mount_info::from_registry () /* FIXME: Need a mutex to avoid collisions with other tasks. */ int -mount_info::add_reg_mount (const char * native_path, const char * posix_path, unsigned mountflags) +mount_info::add_reg_mount (const char *native_path, const char *posix_path, unsigned mountflags) { int res = 0; + if (strchr (posix_path, '\\')) + { + set_errno (EINVAL); + goto err1; + } + /* Add the mount to the right registry location, depending on whether MOUNT_SYSTEM is set in the mount flags. */ if (!(mountflags & MOUNT_SYSTEM)) /* current_user mount */ @@ -1948,6 +1954,7 @@ mount_info::add_reg_mount (const char * native_path, const char * posix_path, un return 0; /* Success */ err: __seterrno_from_win_error (res); + err1: return -1; } @@ -2497,7 +2504,9 @@ mount (const char *win32_path, const char *posix_path, unsigned flags) { int res = -1; - if (flags & MOUNT_CYGDRIVE) /* normal mount */ + if (strpbrk (posix_path, "\\:")) + set_errno (EINVAL); + else if (flags & MOUNT_CYGDRIVE) /* normal mount */ { /* When flags include MOUNT_CYGDRIVE, take this to mean that we actually want to change the cygdrive prefix and flags -- 2.43.5