interface/lib/classes/validate_ftpuser.inc.php | ●●●●● patch | view | raw | blame | history | |
interface/web/sites/ftp_user_edit.php | ●●●●● patch | view | raw | blame | history |
interface/lib/classes/validate_ftpuser.inc.php
@@ -47,7 +47,7 @@ $ftp_data = $app->db->queryOneRecord("SELECT parent_domain_id FROM ftp_user WHERE ftp_user_id = '".$app->db->quote($app->tform->primary_id)."'"); if(!$ftp_data["parent_domain_id"]) { if(!is_array($ftp_data) || $ftp_data["parent_domain_id"] < 1) { $errmsg = $validator['errmsg']; if(isset($app->tform->wordbook[$errmsg])) { return $app->tform->wordbook[$errmsg]."<br>\r\n"; @@ -57,7 +57,7 @@ } $domain_data = $app->db->queryOneRecord("SELECT domain_id, document_root FROM web_domain WHERE domain_id = '".$app->db->quote($ftp_data["parent_domain_id"])."'"); if(!$domain_data["domain_id"]) { if(!is_array($domain_data) || $domain_data["domain_id"] < 1) { $errmsg = $validator['errmsg']; if(isset($app->tform->wordbook[$errmsg])) { return $app->tform->wordbook[$errmsg]."<br>\r\n"; @@ -75,6 +75,9 @@ if(stristr($field_value,'..') or stristr($field_value,'./') or stristr($field_value,'/.')) $is_ok = false; //* Final check if docroot path of website is >= 5 chars if(strlen($doc_root) < 5) $is_ok = false; if($is_ok == false) { $errmsg = $validator['errmsg']; if(isset($app->tform->wordbook[$errmsg])) { interface/web/sites/ftp_user_edit.php
@@ -177,6 +177,23 @@ $app->db->query($sql); } //* 2. check to ensure that the FTP user path is not changed to a path outside of the docroot by a normal user if(isset($this->dataRecord['dir']) && $this->dataRecord['dir'] != $this->oldDataRecord['dir'] && !$app->auth->is_admin()) { $vd = new validate_ftpuser; $error_message = $vd->ftp_dir('dir', $this->dataRecord['dir'], ''); //* This check should normally never be triggered //* Set the path to a safe path (web doc root). if($error_message != '') { $ftp_data = $app->db->queryOneRecord("SELECT parent_domain_id FROM ftp_user WHERE ftp_user_id = '".$app->db->quote($app->tform->primary_id)."'"); $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($ftp_data["parent_domain_id"])); $dir = $web["document_root"]; $sql = "UPDATE ftp_user SET dir = '$dir' WHERE ftp_user_id = ".$this->id; $app->db->query($sql); $app->log("Error in FTP path settings of FTP user ".$this->dataRecord['username'], 1); } } } }