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
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2000-10-10 23:24:32 +0400
committerChristopher Faylor <me@cgf.cx>2000-10-10 23:24:32 +0400
commite62ae31192a7528f178d2a6ee38b065d459b33c7 (patch)
tree0c1532c909e365066c7a8e3e94ad83683da04609
parenta8018ef3361ec589af8f655032946db2ed3a9f45 (diff)
* path.cc (cwdstuff::get): Set EINVAL when length is zero.
-rw-r--r--winsup/cygwin/ChangeLog4
-rw-r--r--winsup/cygwin/path.cc15
2 files changed, 16 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index c6315d32e..140984e46 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,7 @@
+Tue Oct 10 15:21:10 2000 Christopher Faylor <cgf@cygnus.com>
+
+ * path.cc (cwdstuff::get): Set EINVAL when length is zero.
+
Mon Oct 9 14:07:04 2000 Christopher Faylor <cgf@cygnus.com>
* path.cc (mount_info::cygdrive_posix_path): Handle e:foo construction
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index cc339973c..3b8ff7d56 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -2937,6 +2937,13 @@ char *
cwdstuff::get (char *buf, int need_posix, int with_chroot, unsigned ulen)
{
MALLOC_CHECK;
+
+ if (ulen == 0)
+ {
+ set_errno (EINVAL);
+ goto out;
+ }
+
if (!get_initial ()) /* Get initial cwd and set cwd lock */
return NULL;
@@ -2955,7 +2962,7 @@ cwdstuff::get (char *buf, int need_posix, int with_chroot, unsigned ulen)
}
else
{
- if (need_posix && !buf)
+ if (!buf)
buf = (char *) malloc (strlen (tocopy) + 1);
strcpy (buf, tocopy);
if (!buf[0]) /* Should only happen when chroot */
@@ -2963,8 +2970,10 @@ cwdstuff::get (char *buf, int need_posix, int with_chroot, unsigned ulen)
}
lock->release ();
- syscall_printf ("(%s) = cwdstuff::get (%p, %d, %d, %d)",
- buf, buf, ulen, need_posix, with_chroot);
+
+out:
+ syscall_printf ("(%s) = cwdstuff::get (%p, %d, %d, %d), errno %d",
+ buf, buf, ulen, need_posix, with_chroot, errno);
MALLOC_CHECK;
return buf;
}