summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormurray <murray@FreeBSD.org>2001-09-30 00:43:32 +0000
committermurray <murray@FreeBSD.org>2001-09-30 00:43:32 +0000
commitc605847554205a074c69591402a21d9edb6d06a7 (patch)
treeebcce6d46c875a8300f2e91f5d25d91e05774639
parent20a6cccd28a63eba55eb299343b04b3ebce5e811 (diff)
downloadFreeBSD-src-c605847554205a074c69591402a21d9edb6d06a7.zip
FreeBSD-src-c605847554205a074c69591402a21d9edb6d06a7.tar.gz
Close all open file descriptors before restarting sysinstall.
PR: bin/30737 Submitted by: Alexey V. Neyman <alex.neyman@auriga.ru>
-rw-r--r--usr.sbin/sade/devices.c2
-rw-r--r--usr.sbin/sade/system.c7
-rw-r--r--usr.sbin/sysinstall/devices.c2
-rw-r--r--usr.sbin/sysinstall/system.c7
4 files changed, 16 insertions, 2 deletions
diff --git a/usr.sbin/sade/devices.c b/usr.sbin/sade/devices.c
index 3099376..169d020 100644
--- a/usr.sbin/sade/devices.c
+++ b/usr.sbin/sade/devices.c
@@ -273,6 +273,7 @@ deviceGetAll(void)
if (ioctl(s, SIOCGIFCONF, (char *) &ifc) < 0)
goto skipif; /* Jump over network iface probing */
+ close(s);
ifflags = ifc.ifc_req->ifr_flags;
end = (struct ifreq *) (ifc.ifc_buf + ifc.ifc_len);
for (ifptr = ifc.ifc_req; ifptr < end; ifptr++) {
@@ -319,6 +320,7 @@ deviceGetAll(void)
loopend:
if (ifptr->ifr_addr.sa_len) /* I'm not sure why this is here - it's inherited */
ifptr = (struct ifreq *)((caddr_t)ifptr + ifptr->ifr_addr.sa_len - sizeof(struct sockaddr));
+ close(s);
}
skipif:
diff --git a/usr.sbin/sade/system.c b/usr.sbin/sade/system.c
index b1c2e8e..deb9e9f 100644
--- a/usr.sbin/sade/system.c
+++ b/usr.sbin/sade/system.c
@@ -56,8 +56,13 @@ intr_reboot(dialogMenuItem *self)
static int
intr_restart(dialogMenuItem *self)
{
- int ret;
+ int ret, fd, fdmax;
+
+ mediaClose();
free_variables();
+ fdmax = getdtablesize();
+ for (fd = 3; fd < fdmax; fd++)
+ close(fd);
ret = execl(StartName, StartName, (char *)NULL);
msgDebug("execl failed (%s)\n", strerror(errno));
/* NOTREACHED */
diff --git a/usr.sbin/sysinstall/devices.c b/usr.sbin/sysinstall/devices.c
index 3099376..169d020 100644
--- a/usr.sbin/sysinstall/devices.c
+++ b/usr.sbin/sysinstall/devices.c
@@ -273,6 +273,7 @@ deviceGetAll(void)
if (ioctl(s, SIOCGIFCONF, (char *) &ifc) < 0)
goto skipif; /* Jump over network iface probing */
+ close(s);
ifflags = ifc.ifc_req->ifr_flags;
end = (struct ifreq *) (ifc.ifc_buf + ifc.ifc_len);
for (ifptr = ifc.ifc_req; ifptr < end; ifptr++) {
@@ -319,6 +320,7 @@ deviceGetAll(void)
loopend:
if (ifptr->ifr_addr.sa_len) /* I'm not sure why this is here - it's inherited */
ifptr = (struct ifreq *)((caddr_t)ifptr + ifptr->ifr_addr.sa_len - sizeof(struct sockaddr));
+ close(s);
}
skipif:
diff --git a/usr.sbin/sysinstall/system.c b/usr.sbin/sysinstall/system.c
index b1c2e8e..deb9e9f 100644
--- a/usr.sbin/sysinstall/system.c
+++ b/usr.sbin/sysinstall/system.c
@@ -56,8 +56,13 @@ intr_reboot(dialogMenuItem *self)
static int
intr_restart(dialogMenuItem *self)
{
- int ret;
+ int ret, fd, fdmax;
+
+ mediaClose();
free_variables();
+ fdmax = getdtablesize();
+ for (fd = 3; fd < fdmax; fd++)
+ close(fd);
ret = execl(StartName, StartName, (char *)NULL);
msgDebug("execl failed (%s)\n", strerror(errno));
/* NOTREACHED */
OpenPOWER on IntegriCloud