mirror of
https://github.com/isc-projects/bind9.git
synced 2026-03-04 22:40:41 -05:00
[v9_10] disallow out-of-range descriptors in isc_socket_fdwatchcreate()
This commit is contained in:
parent
a17b07d466
commit
ae96d1f641
2 changed files with 7 additions and 2 deletions
|
|
@ -437,7 +437,8 @@ isc_socket_fdwatchcreate(isc_socketmgr_t *manager,
|
|||
*
|
||||
* Note:
|
||||
*
|
||||
*\li 'fd' is the already-opened file descriptor.
|
||||
*\li 'fd' is the already-opened file descriptor (must be less
|
||||
* than maxsockets).
|
||||
*\li This function is not available on Windows.
|
||||
*\li The callback function is called "in-line" - this means the function
|
||||
* needs to return as fast as possible, as all other I/O will be suspended
|
||||
|
|
@ -461,6 +462,7 @@ isc_socket_fdwatchcreate(isc_socketmgr_t *manager,
|
|||
*\li #ISC_R_NOMEMORY
|
||||
*\li #ISC_R_NORESOURCES
|
||||
*\li #ISC_R_UNEXPECTED
|
||||
*\li #ISC_R_RANGE
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
|
|
|
|||
|
|
@ -2245,7 +2245,7 @@ destroy(isc__socket_t **sockp) {
|
|||
INSIST(ISC_LIST_EMPTY(sock->recv_list));
|
||||
INSIST(ISC_LIST_EMPTY(sock->send_list));
|
||||
INSIST(sock->connect_ev == NULL);
|
||||
REQUIRE(sock->fd == -1 || sock->fd < (int)manager->maxsocks);
|
||||
INSIST(sock->fd >= -1 && sock->fd < (int)manager->maxsocks);
|
||||
|
||||
if (sock->fd >= 0) {
|
||||
fd = sock->fd;
|
||||
|
|
@ -3106,6 +3106,9 @@ isc__socket_fdwatchcreate(isc_socketmgr_t *manager0, int fd, int flags,
|
|||
REQUIRE(VALID_MANAGER(manager));
|
||||
REQUIRE(socketp != NULL && *socketp == NULL);
|
||||
|
||||
if (fd < 0 || (unsigned int)fd >= manager->maxsocks)
|
||||
return (ISC_R_RANGE);
|
||||
|
||||
result = allocate_socket(manager, isc_sockettype_fdwatch, &sock);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
|
|
|
|||
Loading…
Reference in a new issue