mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-27 12:13:20 -04:00
[9.20] fix: dev: Ensure file descriptors 0-2 are in use
libuv expect file descriptors <= STDERR_FILENO are in use. otherwise, it may abort when closing a file descriptor it opened. Closes #5226 Backport of MR !10582 Merge branch 'backport-main-9.20' into 'bind-9.20' See merge request isc-projects/bind9!10908
This commit is contained in:
commit
35dee6eb90
3 changed files with 57 additions and 0 deletions
24
bin/tests/system/tools/tests.sh
Normal file
24
bin/tests/system/tools/tests.sh
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
#!/usr/sh
|
||||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
set -e
|
||||
|
||||
. ../conf.sh
|
||||
|
||||
echo_i "tools must not crash if stdio is closed"
|
||||
"$NSUPDATE" 0>&-
|
||||
"$NSUPDATE" 0>&- 1>&-
|
||||
"$NSUPDATE" 0>&- 1>&- 2>&-
|
||||
"$NSUPDATE" 0>&- 2>&-
|
||||
"$NSUPDATE" 1>&-
|
||||
"$NSUPDATE" 1>&- 2>&-
|
||||
"$NSUPDATE" 2>&-
|
||||
18
bin/tests/system/tools/tests_sh_tools.py
Normal file
18
bin/tests/system/tools/tests_sh_tools.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
import pytest
|
||||
|
||||
pytestmark = pytest.mark.extra_artifacts([])
|
||||
|
||||
|
||||
def test_tools(run_tests_sh):
|
||||
run_tests_sh()
|
||||
15
lib/isc/uv.c
15
lib/isc/uv.c
|
|
@ -130,6 +130,21 @@ isc__uv_free(void *ptr) {
|
|||
|
||||
void
|
||||
isc__uv_initialize(void) {
|
||||
/*
|
||||
* Ensure the first 3 file descriptors are open
|
||||
* otherwise, libuv may use one and trigger abort
|
||||
* when closing it.
|
||||
*
|
||||
* See https://github.com/libuv/libuv/pull/4559
|
||||
*/
|
||||
do {
|
||||
int fd = open("/dev/null", O_RDWR, 0);
|
||||
RUNTIME_CHECK(fd >= 0);
|
||||
if (fd > STDERR_FILENO) {
|
||||
close(fd);
|
||||
break;
|
||||
}
|
||||
} while (true);
|
||||
#if UV_VERSION_HEX >= UV_VERSION(1, 38, 0)
|
||||
int r;
|
||||
isc_mem_create(&isc__uv_mctx);
|
||||
|
|
|
|||
Loading…
Reference in a new issue