diff --git a/htdocs/core/lib/barcode.lib.php b/htdocs/core/lib/barcode.lib.php
index f83ea5f433c..67b51748d3e 100644
--- a/htdocs/core/lib/barcode.lib.php
+++ b/htdocs/core/lib/barcode.lib.php
@@ -74,11 +74,11 @@ function barcode_print($code, $encoding="ANY", $scale = 2 ,$mode = "png")
dol_syslog("barcode.lib.php::barcode_print $code $encoding $scale $mode");
$bars=barcode_encode($code,$encoding);
-
- if (! $bars)
+ if (! $bars || ! empty($bars['error']))
{
// DOLCHANGE LDR Return error message instead of array
- $error='Bad Value '.$code.' for encoding '.$encoding;
+ if (empty($bars['error'])) $error='Bad Value '.$code.' for encoding '.$encoding;
+ else $error=$bars['error'];
dol_syslog('barcode.lib.php::barcode_print '.$error, LOG_ERR);
return $error;
}
@@ -133,7 +133,7 @@ function barcode_encode($code,$encoding)
dol_syslog("barcode.lib.php::barcode_encode Use barcode_encode_ean");
$bars=barcode_encode_ean($code, $encoding);
}
- else if (file_exists($genbarcode_loc))
+ else if (file_exists($genbarcode_loc)) // For example C39
{
/* use genbarcode */
dol_syslog("barcode.lib.php::barcode_encode Use genbarcode ".$genbarcode_loc." code=".$code." encoding=".$encoding);
@@ -252,10 +252,11 @@ function barcode_encode_genbarcode($code,$encoding)
$code=preg_replace("/[\\\|]/", "_", $code);
$command=escapeshellarg($genbarcode_loc);
- $paramclear=" \"".str_replace("\"", "\\\"",$code)."\" \"".str_replace("\"", "\\\"",strtoupper($encoding))."\"";
-
+ //$paramclear=" \"".str_replace("\"", "\\\"",$code)."\" \"".str_replace("\"", "\\\"",strtoupper($encoding))."\"";
+ $paramclear=" ".escapeshellarg($code)." ".escapeshellarg(strtoupper($encoding));
+
$fullcommandclear=$command." ".$paramclear." 2>&1";
- //print $fullcommandclear."
\n";
+ //print $fullcommandclear."
\n";exit;
dol_syslog("Run command ".$fullcommandclear);
$fp=popen($fullcommandclear, "r");
@@ -273,14 +274,20 @@ function barcode_encode_genbarcode($code,$encoding)
}
//var_dump($bars);
$ret=array(
- "encoding" => trim($encoding),
"bars" => trim($bars),
- "text" => trim($text)
+ "text" => trim($text),
+ "encoding" => trim($encoding),
+ "error" => ""
);
//var_dump($ret);
- if (!$ret['encoding']) return false;
+ if (preg_match('/permission denied/i',$ret['bars']))
+ {
+ $ret['error']=$ret['bars']; $ret['bars']='';
+ return $ret;
+ }
if (!$ret['bars']) return false;
if (!$ret['text']) return false;
+ if (!$ret['encoding']) return false;
return $ret;
}
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index 784762907d3..2fc96042895 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -2194,10 +2194,10 @@ function dol_print_error($db='',$error='')
$out.="".$langs->trans("PHP").": ".phpversion()."
\n";
//phpinfo(); // This is to show location of php.ini file
}
- $out.="".$langs->trans("Server").": ".$_SERVER["SERVER_SOFTWARE"]."
\n";;
+ $out.="".$langs->trans("Server").": ".$_SERVER["SERVER_SOFTWARE"]."
\n";
$out.="
\n";
- $out.="".$langs->trans("RequestedUrl").": ".$_SERVER["REQUEST_URI"]."
\n";;
- $out.="".$langs->trans("Referer").": ".(isset($_SERVER["HTTP_REFERER"])?$_SERVER["HTTP_REFERER"]:'')."
\n";;
+ $out.="".$langs->trans("RequestedUrl").": ".dol_htmlentities($_SERVER["REQUEST_URI"],ENT_COMPAT,'UTF-8')."
\n";
+ $out.="".$langs->trans("Referer").": ".(isset($_SERVER["HTTP_REFERER"])?dol_htmlentities($_SERVER["HTTP_REFERER"],ENT_COMPAT,'UTF-8'):'')."
\n";
$out.="".$langs->trans("MenuManager").": ".(isset($conf->standard_menu)?$conf->standard_menu:'')."
\n";
$out.="
\n";
$syslog.="url=".$_SERVER["REQUEST_URI"];