diff --git a/app/calls_active/calls_active_inc.php b/app/calls_active/calls_active_inc.php
index 6eb0cdddb6..309248f5d8 100644
--- a/app/calls_active/calls_active_inc.php
+++ b/app/calls_active/calls_active_inc.php
@@ -202,8 +202,8 @@
echo "
".$domain_name." | \n";
}
echo "".$tmp_number." | \n";
- echo "".$cid_name." | \n";
- echo "".$cid_num." | \n";
+ echo "".escape($cid_name)." | \n";
+ echo "".escape($cid_num)." | \n";
echo "".$dest." | \n";
echo "".((strlen($application) > 0) ? $application.":".$application_data : null)." | \n";
echo "".$read_codec.":".$read_rate." / ".$write_codec.":".$write_rate." | \n";
diff --git a/resources/install/scripts/app/fax/resources/scripts/hangup_rx.lua b/resources/install/scripts/app/fax/resources/scripts/hangup_rx.lua
index 9ebde58893..154bb7baad 100644
--- a/resources/install/scripts/app/fax/resources/scripts/hangup_rx.lua
+++ b/resources/install/scripts/app/fax/resources/scripts/hangup_rx.lua
@@ -57,6 +57,13 @@
return s
end
+-- escape shell arguments to prevent command injection
+
+ local function shell_esc(x)
+ return ("'"..x:gsub('\\', '\\\\')
+ :gsub('\'', '\\\'').."'")
+ end
+
-- set channel variables to lua variables
domain_uuid = env:getHeader("domain_uuid");
domain_name = env:getHeader("domain_name");
@@ -219,6 +226,8 @@
else
cmd = cmd .. "fax_prefix=false ";
end
+
+ cmd=shell_esc(cmd);
freeswitch.consoleLog("notice", "[fax] command: " .. cmd .. "\n");
result = api:execute("system", cmd);