[0000313] Fixed multiply vulnerabilities.
[fa-stable.git] / reporting / prn_redirect.php
index a9f4d336f45092d330976b771a7a938b58896d83..d827aaa3e6a783e8422edcc8fe4500521ee1ec87 100644 (file)
@@ -17,10 +17,19 @@ $path_to_root = "..";
 $page_security = 'SA_OPEN';    // this level is later overriden in rep file
 include_once($path_to_root . "/includes/session.inc");
 
+if (isset($save_report_selections) && $save_report_selections > 0 && isset($_POST['REP_ID'])) {        // save parameters from Report Center
+       for($i=0; $i<10; $i++) { // 2010-10-06 Joe Hunt
+               if (isset($_POST['PARAM_'.$i]) && !is_array($_POST['PARAM_'.$i])) {
+                       $rep = $_POST['REP_ID'];
+                       setcookie("select[$rep][$i]", $_POST['PARAM_'.$i], time()+60*60*24*$save_report_selections); // days from $save_report_selections
+               }       
+       }
+}      
+
 if (isset($_GET['xls']))
 {
        $filename = $_GET['filename'];
-       $unique_name = $_GET['unique'];
+       $unique_name = preg_replace('/[^0-9a-z.]/i', '', $_GET['unique']);
        $path =  company_path(). '/pdf_files/';
        header("Content-type: application/vnd.ms-excel");
        header("Content-Disposition: attachment; filename=$filename" );
@@ -33,7 +42,7 @@ if (isset($_GET['xls']))
 elseif (isset($_GET['xml']))
 {
        $filename = $_GET['filename'];
-       $unique_name = $_GET['unique'];
+       $unique_name = preg_replace('/[^0-9a-z.]/i', '', $_GET['unique']);
        $path =  company_path(). '/pdf_files/';
        header("content-type: text/xml");
        header("Content-Disposition: attachment; filename=$filename");
@@ -53,13 +62,12 @@ if (!isset($_POST['REP_ID'])) {     // print link clicked
        }
 }
 
-$rep = $_POST['REP_ID'];
+$rep = preg_replace('/[^a-z_0-9]/i', '', $_POST['REP_ID']);
 
 $rep_file = find_custom_file("/reporting/rep$rep.php");
 
 if ($rep_file) {
-       chdir(dirname($rep_file));
-       require(basename($rep_file));
+       require($rep_file);
 } else
        display_error("Cannot find report file '$rep'");
 exit();