OSDN Git Service

* path.cc (readlink): Check if buffer length is positive. Truncate output to
authorcgf <cgf>
Mon, 4 Sep 2000 17:52:42 +0000 (17:52 +0000)
committercgf <cgf>
Mon, 4 Sep 2000 17:52:42 +0000 (17:52 +0000)
buffer length.  Don't terminate buffer with '\0'.

14 files changed:
winsup/cygwin/ChangeLog
winsup/cygwin/dll_init.cc
winsup/cygwin/external.cc
winsup/cygwin/grp.cc
winsup/cygwin/init.cc
winsup/cygwin/passwd.cc
winsup/cygwin/path.cc
winsup/cygwin/pinfo.cc
winsup/cygwin/pipe.cc
winsup/cygwin/pthread.cc
winsup/cygwin/spawn.cc
winsup/cygwin/syscalls.cc
winsup/cygwin/termios.cc
winsup/cygwin/thread.cc

index 35845b3..bd008cf 100644 (file)
@@ -1,3 +1,9 @@
+2000-09-03  Egor Duda  <deo@logos-m.ru>
+
+       * path.cc (readlink): Check if buffer length is positive.
+       Truncate output to buffer length. Don't terminate buffer
+       with '\0'.
+
 Sun Sep  3 00:38:40 2000  Christopher Faylor <cgf@cygnus.com>
 
        * environ.cc (environ_init): Don't free the new environment table after
index e7a5526..7e94fa9 100644 (file)
@@ -41,7 +41,7 @@ per_module::run_ctors ()
       int i;
       for (i = 1; pfunc[i]; i++);
 
-      for (int j = i - 1; j > 0; j-- )
+      for (int j = i - 1; j > 0; j--)
        (pfunc[j]) ();
     }
 }
index 16303f5..bfc4f1b 100644 (file)
@@ -36,7 +36,7 @@ fillout_pinfo (pid_t pid, int winpid)
     i = 0;
 
   memset (&ep, 0, sizeof ep);
-  for (; i < pids.npids; )
+  for (; i < pids.npids;)
     {
       DWORD thispid = pids[i++];
       if (!thispid)
index a4af840..9c4f379 100644 (file)
@@ -266,7 +266,7 @@ getgroups (int gidsetsize, gid_t *grouplist, gid_t gid, const char *username)
   return cnt;
 
 error:
-  set_errno ( EINVAL );
+  set_errno (EINVAL);
   return -1;
 }
 
index 18342e0..f0c5a1c 100644 (file)
@@ -28,7 +28,7 @@ WINAPI dll_entry (HANDLE h, DWORD reason, void *static_load)
     case DLL_THREAD_ATTACH:
       if (user_data->threadinterface)
        {
-         if ( !TlsSetValue(user_data->threadinterface->reent_index,
+         if (!TlsSetValue(user_data->threadinterface->reent_index,
                    &user_data->threadinterface->reents))
            api_fatal("Sig proc MT init failed\n");
        }
index 98ea7b0..a29a8a4 100644 (file)
@@ -178,8 +178,8 @@ search_for (uid_t uid, const char *name)
   /* Return default passwd entry if passwd is emulated or it's a
      request for the current user. */
   if (passwd_state != loaded
-      || (! name && uid == myself->uid)
-      || (  name && strcasematch(name, myself->username)))
+      || (!name && uid == myself->uid)
+      || (name && strcasematch(name, myself->username)))
     return default_pw;
 
   return NULL;
index 6400699..29df7b3 100644 (file)
@@ -2436,6 +2436,13 @@ int
 readlink (const char *path, char *buf, int buflen)
 {
   extern suffix_info stat_suffixes[];
+
+  if (buflen < 0)
+    {
+      set_errno (ENAMETOOLONG);
+      return -1;
+    }
+
   path_conv pathbuf (path, PC_SYM_CONTENTS, stat_suffixes);
 
   if (pathbuf.error)
@@ -2452,14 +2459,8 @@ readlink (const char *path, char *buf, int buflen)
       return -1;
     }
 
-  int len = strlen (pathbuf.get_win32 ());
-  if (len > (buflen - 1))
-    {
-      set_errno (ENAMETOOLONG);
-      return -1;
-    }
+  int len = max (buflen, (int) strlen (pathbuf.get_win32 ()));
   memcpy (buf, pathbuf.get_win32 (), len);
-  buf[len] = '\0';
 
   /* errno set by symlink.check if error */
   return len;
index 9ccb867..37a2808 100644 (file)
@@ -96,7 +96,7 @@ struct sigaction&
 _pinfo::getsig(int sig)
 {
 #ifdef _MT_SAFE
-  if ( thread2signal )
+  if (thread2signal)
     return thread2signal->sigs[sig];
   return sigs[sig];
 #else
@@ -108,7 +108,7 @@ sigset_t&
 _pinfo::getsigmask ()
 {
 #ifdef _MT_SAFE
-  if ( thread2signal )
+  if (thread2signal)
     return *thread2signal->sigmask;
   return sig_mask;
 #else
@@ -120,7 +120,7 @@ void
 _pinfo::setsigmask (sigset_t _mask)
 {
 #ifdef _MT_SAFE
-  if ( thread2signal )
+  if (thread2signal)
        *(thread2signal->sigmask) = _mask;
   sig_mask=_mask;
 #else
@@ -132,7 +132,7 @@ LONG *
 _pinfo::getsigtodo(int sig)
 {
 #ifdef _MT_SAFE
-  if ( thread2signal )
+  if (thread2signal)
     return thread2signal->sigtodo + __SIGOFFSET + sig;
   return _sigtodo + __SIGOFFSET + sig;
 #else
@@ -146,7 +146,7 @@ HANDLE
 _pinfo::getthread2signal()
 {
 #ifdef _MT_SAFE
-  if ( thread2signal )
+  if (thread2signal)
     return thread2signal->win32_obj_id;
   return hMainThread;
 #else
index 0031aff..3a103e1 100644 (file)
@@ -29,7 +29,7 @@ make_pipe (int fildes[2], unsigned int psize, int mode)
   if ((fdr = fdtab.find_unused_handle ()) < 0)
     set_errno (ENMFILE);
   else if ((fdw = fdtab.find_unused_handle (fdr + 1)) < 0)
-    set_errno ( ENMFILE);
+    set_errno (ENMFILE);
   else if (!CreatePipe (&r, &w, sa, psize))
     __seterrno ();
   else
index 2a2287b..82200e4 100644 (file)
@@ -137,7 +137,7 @@ pthread_self ()
 int
 pthread_equal (pthread_t t1, pthread_t t2)
 {
-  return __pthread_equal ( &t1, &t2);
+  return __pthread_equal (&t1, &t2);
 }
 
 /* Mutexes  */
index 770fea4..39e2b39 100644 (file)
@@ -513,7 +513,7 @@ spawn_guts (HANDLE hToken, const char * prog_arg, const char *const *argv,
   ciresrv.moreinfo->environ = (char **) cmalloc (HEAP_ARGV, envsize (envp, 1));
   char **c;
   const char * const *e;
-  for (c = ciresrv.moreinfo->environ, e = envp; *e; )
+  for (c = ciresrv.moreinfo->environ, e = envp; *e;)
     *c++ = cstrdup (*e++);
   *c = NULL;
   if (mode != _P_OVERLAY ||
index 876ed4c..c95eef3 100644 (file)
@@ -601,8 +601,7 @@ _link (const char *a, const char *b)
            &dwBytesWritten,
            TRUE,               // abort
            FALSE,              // don't process security
-           &lpContext
-           );
+           &lpContext);
        }
       else
        syscall_printf ("cannot write streamId, %E");
@@ -1635,7 +1634,7 @@ get_osfhandle (int fd)
 
   if (fdtab.not_open (fd))
     {
-      set_errno ( EBADF);
+      set_errno (EBADF);
     }
   else
     {
index e30bb60..52fe489 100644 (file)
@@ -42,7 +42,7 @@ tcsendbreak (int fd, int duration)
     }
 
 out:
-  syscall_printf ("%d = tcsendbreak (%d, %d )", res, fd, duration);
+  syscall_printf ("%d = tcsendbreak (%d, %d)", res, fd, duration);
   return res;
 }
 
index d685ef3..49e5223 100644 (file)
@@ -241,13 +241,13 @@ MTinterface::SetItem (int _index, MTitem * _item, MTList * _list)
 int
 CmpPthreadObj (void *_i, void *_value)
 {
-  return ( (MTitem *) _i)->Id () == * (int *) _value;
+  return ((MTitem *) _i)->Id () == *(int *) _value;
 };
 
 int
 CmpThreadId (void *_i, void *_id)
 {
-  return ( (ThreadItem *) _i)->thread_id == * (DWORD *) _id;
+  return ((ThreadItem *) _i)->thread_id == * (DWORD *) _id;
 };
 
 void