4567. [port] Call getprotobyname and getservbyname prior to calling

chroot so that shared libraries get loaded. [RT #44537]

(cherry picked from commit c550e75ade)
This commit is contained in:
Mark Andrews
2017-02-03 14:22:03 +11:00
parent 0ce865f8b2
commit 4901f2c10b
2 changed files with 12 additions and 0 deletions

View File

@@ -22,6 +22,7 @@
#include <isc/dir.h>
#include <isc/magic.h>
#include <isc/netdb.h>
#include <isc/string.h>
#include <isc/util.h>
@@ -163,6 +164,14 @@ isc_dir_chroot(const char *dirname) {
REQUIRE(dirname != NULL);
#ifdef HAVE_CHROOT
/*
* Try to use getservbyname and getprotobyname before chroot.
* If WKS records are used in a zone under chroot, Name Service Switch
* may fail to load library in chroot.
* Do not report errors if it fails, we do not need any result now.
*/
getprotobyname("udp") && getservbyname("domain", "udp");
if (chroot(dirname) < 0 || chdir("/") < 0)
return (isc__errno2result(errno));