]> git.eshelyaron.com Git - emacs.git/commitdiff
(sys_pipe): Protect against file descriptor overflow.
authorJason Rumney <jasonr@gnu.org>
Wed, 27 Aug 2003 22:57:54 +0000 (22:57 +0000)
committerJason Rumney <jasonr@gnu.org>
Wed, 27 Aug 2003 22:57:54 +0000 (22:57 +0000)
src/w32.c

index 744cc5931339437a8ce0983f76605c55c111f813..f97399994788b8773c68469ebf3aac16d2e59e90 100644 (file)
--- a/src/w32.c
+++ b/src/w32.c
@@ -3450,11 +3450,22 @@ sys_pipe (int * phandles)
 
   if (rc == 0)
     {
-      flags = FILE_PIPE | FILE_READ | FILE_BINARY;
-      fd_info[phandles[0]].flags = flags;
+      /* Protect against overflow, since Windows can open more handles than
+        our fd_info array has room for.  */
+      if (phandles[0] >= MAXDESC || phandles[1] >= MAXDESC)
+       {
+         _close (phandles[0]);
+         _close (phandles[1]);
+         rc = -1;
+       }
+      else
+       {
+         flags = FILE_PIPE | FILE_READ | FILE_BINARY;
+         fd_info[phandles[0]].flags = flags;
 
-      flags = FILE_PIPE | FILE_WRITE | FILE_BINARY;
-      fd_info[phandles[1]].flags = flags;
+         flags = FILE_PIPE | FILE_WRITE | FILE_BINARY;
+         fd_info[phandles[1]].flags = flags;
+       }
     }
 
   return rc;