summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorErik Fonnesbeck <efonnes@gmail.com>2011-03-22 01:28:23 -0600
committerErik Fonnesbeck <efonnes@gmail.com>2011-03-22 01:28:23 -0600
commit548be1fd6697ab115cbb29d61bc5507744488094 (patch)
tree86482a6e815a4fa6f7a2f347001feddee82d2d65 /etc
parentfc2c320e2cddb09764f5fb34b5043452654520be (diff)
downloadpfsense-548be1fd6697ab115cbb29d61bc5507744488094.zip
pfsense-548be1fd6697ab115cbb29d61bc5507744488094.tar.gz
Workaround for conf_mount_rw/ro during boot to only allow it to change at the start and end. Fixes #1279
Diffstat (limited to 'etc')
-rw-r--r--etc/inc/config.lib.inc13
-rwxr-xr-xetc/rc.bootup4
-rwxr-xr-xetc/sshd6
3 files changed, 13 insertions, 10 deletions
diff --git a/etc/inc/config.lib.inc b/etc/inc/config.lib.inc
index 11e1ec3..586d687 100644
--- a/etc/inc/config.lib.inc
+++ b/etc/inc/config.lib.inc
@@ -301,13 +301,16 @@ EOD;
* null
******/
/* mount flash card read/write */
-function conf_mount_rw() {
+function conf_mount_rw($nobootcheck = false) {
global $g;
/* do not mount on cdrom platform */
if($g['platform'] == "cdrom" or $g['platform'] == "pfSense")
return;
+ if($g['booting'] && !$nobootcheck)
+ return;
+
if (refcount_reference(1000) > 1)
return;
@@ -321,7 +324,7 @@ function conf_mount_rw() {
/* if the platform is soekris or wrap or pfSense, lets mount the
* compact flash cards root.
- */
+ */
$status = mwexec("/sbin/mount -u -w -o sync,noatime /");
/* we could not mount this correctly. kick off fsck */
if($status <> 0) {
@@ -339,14 +342,14 @@ function conf_mount_rw() {
* RESULT
* null
******/
-function conf_mount_ro() {
+function conf_mount_ro($nobootcheck = false) {
global $g;
/* do not umount on cdrom or pfSense platforms */
if($g['platform'] == "cdrom" or $g['platform'] == "pfSense")
return;
- if($g['booting'])
+ if($g['booting'] && !$nobootcheck)
return;
if (refcount_unreference(1000) > 0)
@@ -852,4 +855,4 @@ function set_device_perms() {
}
}
-?>
+?> \ No newline at end of file
diff --git a/etc/rc.bootup b/etc/rc.bootup
index 6cff6ac..b7a632e 100755
--- a/etc/rc.bootup
+++ b/etc/rc.bootup
@@ -129,7 +129,7 @@ $memory = get_memory();
$avail = $memory[0];
echo " done.\n";
-conf_mount_rw();
+conf_mount_rw(true);
/* save dmesg output to file */
system_dmesg_save();
@@ -400,6 +400,6 @@ unset($g['booting']);
led_normalize();
-conf_mount_ro();
+conf_mount_ro(true);
?>
diff --git a/etc/sshd b/etc/sshd
index 28c8e55..67fbe00 100755
--- a/etc/sshd
+++ b/etc/sshd
@@ -42,7 +42,7 @@
exit;
}
- conf_mount_rw();
+ conf_mount_rw(true);
function file_size($file) {
$size = filesize($file);
@@ -138,7 +138,7 @@
/* are we already running? if so exit */
if(is_subsystem_dirty('sshdkeys')) {
- conf_mount_ro();
+ conf_mount_ro(true);
exit;
}
@@ -185,6 +185,6 @@
exec("mkdir /conf/sshd");
exec("/bin/cp -p /etc/ssh/ssh_host* /conf/sshd");
}
- conf_mount_ro();
+ conf_mount_ro(true);
?>
OpenPOWER on IntegriCloud