From ce7f605ba7d119d7aae336117a306167ede44916 Mon Sep 17 00:00:00 2001 From: "Thomas Bushnell, BSG" Date: Tue, 8 Oct 1996 18:38:08 +0000 Subject: *** empty log message *** Tue Oct 8 13:58:31 1996 Thomas Bushnell, n/BSG * hurd/ports-get.c (_hurd_ports_get): If the requested port is null, don't attempt mach_port_mod_refs. --- hurd/alloc-fd.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'hurd/alloc-fd.c') diff --git a/hurd/alloc-fd.c b/hurd/alloc-fd.c index f21d5bb8e1..dc6e64f3b7 100644 --- a/hurd/alloc-fd.c +++ b/hurd/alloc-fd.c @@ -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); -- cgit 1.4.1