Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/winsup
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2000-04-20 17:52:41 +0400
committerCorinna Vinschen <corinna@vinschen.de>2000-04-20 17:52:41 +0400
commitbf921462e7397c150e1e45d739f0728989eaef82 (patch)
treebedb74eafe0d8b51a4fda28a84fdd58c57a464a3 /winsup
parentd7aac2acf575eeb41356fa33bae86037e1f9a6ea (diff)
* syscalls.cc (_link): Check new link path for trailing dot.
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog4
-rw-r--r--winsup/cygwin/syscalls.cc16
2 files changed, 13 insertions, 7 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 777724f08..1f0b29d00 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,7 @@
+Thu Apr 20 11:26:00 2000 Corinna Vinschen <corinna@vinschen.de>
+
+ * syscalls.cc (_link): Check new link path for trailing dot.
+
Thu Apr 20 00:32:03 2000 Christopher Faylor <cgf@cygnus.com>
* fhandler.h (fhandler_base::hclose): New virtual method.
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc
index 23faca911..45978bc91 100644
--- a/winsup/cygwin/syscalls.cc
+++ b/winsup/cygwin/syscalls.cc
@@ -484,21 +484,23 @@ _link (const char *a, const char *b)
{
int res = -1;
path_conv real_a (a, SYMLINK_NOFOLLOW);
+ path_conv real_b (b, SYMLINK_NOFOLLOW);
if (real_a.error)
{
set_errno (real_a.error);
- syscall_printf ("-1 = link (%s, %s)", a, b);
- return -1;
+ goto done;
}
-
- path_conv real_b (b, SYMLINK_NOFOLLOW);
-
if (real_b.error)
{
set_errno (real_b.error);
- syscall_printf ("-1 = link (%s, %s)", a, b);
- return -1;
+ goto done;
+ }
+ if (real_b.get_win32 ()[strlen (real_b.get_win32 ()) - 1] == '.')
+ {
+ syscall_printf ("trailing dot, bailing out");
+ set_errno (EINVAL);
+ goto done;
}
/* Try to make hard link first on Windows NT */