Fri Oct 4 17:30:22 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
authorthomas <thomas>
Tue, 8 Oct 1996 15:21:18 +0000 (15:21 +0000)
committerthomas <thomas>
Tue, 8 Oct 1996 15:21:18 +0000 (15:21 +0000)
* hurd/hurdsig.c (signal_allowed): Add SIGWINCH to the list that
controlling terminals are allowed to send.

* hurd/alloc-fd.c (_hurd_alloc_fd): If SIZE is so big that the
table is larger than the allowable address size, then return
failure.

hurd/alloc-fd.c
hurd/hurdsig.c

index f21d5bb..dc6e64f 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
 This file is part of the GNU C Library.
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -97,6 +97,13 @@ _hurd_alloc_fd (int *fd, int first_fd)
          else if (size <= first_fd)
            size = first_fd + 1;
 
+         if (size * sizeof (*_hurd_dtable) < size)
+           {
+             /* Integer overflow! */
+             errno = ENOMEM;
+             goto out;
+           }
+
          /* If we fail to allocate that, decrement the desired size
             until we succeed in allocating it.  */
          do
@@ -117,6 +124,8 @@ _hurd_alloc_fd (int *fd, int first_fd)
              /* Go back to the loop to initialize the first new slot.  */
              goto search;
            }
+         else
+           errno = ENOMEM;
        }
       else
        errno = EMFILE;
@@ -124,6 +133,7 @@ _hurd_alloc_fd (int *fd, int first_fd)
   else
     errno = EINVAL;            /* Bogus FIRST_FD value.  */
 
+ out:
   __mutex_unlock (&_hurd_dtable_lock);
   _hurd_critical_section_unlock (crit);
 
index 1da3fa5..1f58d13 100644 (file)
@@ -1024,6 +1024,7 @@ signal_allowed (int signo, mach_port_t refport)
     case SIGINFO:
     case SIGTTIN:
     case SIGTTOU:
+    case SIGWINCH:
       /* Job control signals can be sent by the controlling terminal.  */
       if (__USEPORT (CTTYID, port == refport))
        goto win;