diff --git a/usr/local/www/system_certmanager.php b/usr/local/www/system_certmanager.php index e6c7551b48..efd13bff12 100644 --- a/usr/local/www/system_certmanager.php +++ b/usr/local/www/system_certmanager.php @@ -100,10 +100,9 @@ if ($act == "del") { exit; } - $name = $a_cert[$id]['descr']; unset($a_cert[$id]); write_config(); - $savemsg = sprintf(gettext("Certificate %s successfully deleted"), $name) . "
"; + $savemsg = sprintf(gettext("Certificate %s successfully deleted"), htmlspecialchars($a_cert[$id]['descr'])) . "
"; pfSenseHeader("system_certmanager.php"); exit; } @@ -296,6 +295,11 @@ if ($_POST) { } /* Make sure we do not have invalid characters in the fields for the certificate */ + + if (preg_match("/[\?\>\<\&\/\\\"\']/", $_POST['descr'])) { + array_push($input_errors, "The field 'Descriptive Name' contains invalid characters."); + } + for ($i = 0; $i < count($reqdfields); $i++) { if (preg_match('/email/', $reqdfields[$i])){ /* dn_email or csr_dn_name */ if (preg_match("/[\!\#\$\%\^\(\)\~\?\>\<\&\/\\\,\"\']/", $_POST[$reqdfields[$i]])) @@ -422,6 +426,10 @@ if ($_POST) { do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors); + if (preg_match("/[\?\>\<\&\/\\\"\']/", $_POST['descr'])) { + array_push($input_errors, "The field 'Descriptive Name' contains invalid characters."); + } + // old way /* make sure this csr and certificate subjects match */ // $subj_csr = csr_get_subject($pconfig['csr'], false); @@ -683,7 +691,7 @@ function internalca_change() { if ($pconfig['caref'] == $ca['refid']) $selected = " selected=\"selected\""; ?> - + @@ -994,7 +1002,7 @@ function internalca_change() { continue; $ca = lookup_ca($cert['caref']); if ($ca) - $caname = " (CA: {$ca['descr']})"; + $caname = " (CA: " . htmlspecialchars($ca['descr']) . ")"; if ($pconfig['certref'] == $cert['refid']) $selected = " selected=\"selected\""; if (cert_in_use($cert['refid'])) @@ -1002,7 +1010,7 @@ function internalca_change() { if (is_cert_revoked($cert)) $revoked = " *Revoked"; ?> - + @@ -1110,7 +1118,7 @@ function internalca_change() { $ca = lookup_ca($cert['caref']); if ($ca) - $caname = $ca['descr']; + $caname = htmlspecialchars($ca['descr']); if($cert['prv']) $certimg = "/themes/{$g['theme']}/images/icons/icon_frmfld_cert.png";