246 |
246 |
break;
|
247 |
247 |
case 'edit':
|
248 |
248 |
case 'import':
|
|
249 |
/* Make sure we do not have invalid characters in the fields for the certificate */
|
|
250 |
if (preg_match("/[\?\>\<\&\/\\\"\']/", $_POST['descr'])) {
|
|
251 |
$input_errors[] = gettext("The field 'Descriptive Name' contains invalid characters.");
|
|
252 |
}
|
249 |
253 |
$pkcs12_data = '';
|
250 |
254 |
if ($_POST['import_type'] == 'x509') {
|
251 |
255 |
$reqdfields = explode(" ",
|
... | ... | |
448 |
452 |
$ucert = lookup_cert($pconfig['certref']);
|
449 |
453 |
if ($ucert && $a_user) {
|
450 |
454 |
$a_user[$userid]['cert'][] = $ucert['refid'];
|
451 |
|
$savemsg = sprintf(gettext("Added certificate %s to user %s"), $ucert['descr'], $a_user[$userid]['name']);
|
|
455 |
$savemsg = sprintf(gettext("Added certificate %s to user %s"), htmlspecialchars($ucert['descr']), $a_user[$userid]['name']);
|
452 |
456 |
}
|
453 |
457 |
unset($cert);
|
454 |
458 |
break;
|
... | ... | |
484 |
488 |
}
|
485 |
489 |
// Add it to the config file
|
486 |
490 |
$config['cert'][] = $newcert;
|
487 |
|
$savemsg = sprintf(gettext("Signed certificate %s"), $newcert['descr']);
|
|
491 |
$savemsg = sprintf(gettext("Signed certificate %s"), htmlspecialchars($newcert['descr']));
|
|
492 |
unset($act);
|
488 |
493 |
}
|
489 |
494 |
unset($cert);
|
490 |
495 |
break;
|
491 |
496 |
case 'edit':
|
492 |
497 |
cert_import($cert, $pconfig['cert'], $pconfig['key']);
|
493 |
|
$savemsg = sprintf(gettext("Edited certificate %s"), $cert['descr']);
|
|
498 |
$savemsg = sprintf(gettext("Edited certificate %s"), htmlspecialchars($cert['descr']));
|
|
499 |
unset($act);
|
494 |
500 |
break;
|
495 |
501 |
case 'import':
|
496 |
502 |
/* Import an external certificate+key */
|
... | ... | |
510 |
516 |
}
|
511 |
517 |
}
|
512 |
518 |
cert_import($cert, $pconfig['cert'], $pconfig['key']);
|
513 |
|
$savemsg = sprintf(gettext("Imported certificate %s"), $cert['descr']);
|
|
519 |
$savemsg = sprintf(gettext("Imported certificate %s"), htmlspecialchars($cert['descr']));
|
|
520 |
unset($act);
|
514 |
521 |
break;
|
515 |
522 |
case 'internal':
|
516 |
523 |
/* Create an internal certificate */
|
... | ... | |
554 |
561 |
}
|
555 |
562 |
}
|
556 |
563 |
}
|
557 |
|
$savemsg = sprintf(gettext("Created internal certificate %s"), $cert['descr']);
|
|
564 |
$savemsg = sprintf(gettext("Created internal certificate %s"), htmlspecialchars($cert['descr']));
|
|
565 |
unset($act);
|
558 |
566 |
break;
|
559 |
567 |
case 'external':
|
560 |
568 |
/* Create a certificate signing request */
|
... | ... | |
598 |
606 |
}
|
599 |
607 |
}
|
600 |
608 |
}
|
601 |
|
$savemsg = sprintf(gettext("Created certificate signing request %s"), $cert['descr']);
|
|
609 |
$savemsg = sprintf(gettext("Created certificate signing request %s"), htmlspecialchars($cert['descr']));
|
|
610 |
unset($act);
|
602 |
611 |
break;
|
603 |
612 |
default:
|
604 |
613 |
break;
|
... | ... | |
656 |
665 |
$cert['descr'] = $pconfig['descr'];
|
657 |
666 |
csr_complete($cert, $pconfig['cert']);
|
658 |
667 |
$thiscert = $cert;
|
659 |
|
$savemsg = sprintf(gettext("Updated certificate signing request %s"), $pconfig['descr']);
|
|
668 |
$savemsg = sprintf(gettext("Updated certificate signing request %s"), htmlspecialchars($pconfig['descr']));
|
660 |
669 |
write_config($savemsg);
|
661 |
670 |
pfSenseHeader("system_certmanager.php");
|
662 |
671 |
}
|
... | ... | |
708 |
717 |
));
|
709 |
718 |
}
|
710 |
719 |
|
|
720 |
if ($act) {
|
|
721 |
$form->addGlobal(new Form_Input(
|
|
722 |
'act',
|
|
723 |
null,
|
|
724 |
'hidden',
|
|
725 |
$act
|
|
726 |
));
|
|
727 |
}
|
|
728 |
|
711 |
729 |
switch ($act) {
|
712 |
730 |
case 'edit':
|
713 |
731 |
$maintitle = gettext('Edit an Existing Certificate');
|
... | ... | |
1402 |
1420 |
|
1403 |
1421 |
$ca = lookup_ca($cert['caref']);
|
1404 |
1422 |
if ($ca) {
|
1405 |
|
$caname = $ca['descr'];
|
|
1423 |
$caname = htmlspecialchars($ca['descr']);
|
1406 |
1424 |
}
|
1407 |
1425 |
?>
|
1408 |
1426 |
<tr>
|
CA/Cert descr validation fixes. Fixes #13387
Validate description on save when editing and in other situations that
were not yet covered.
While here, ensure that errors when editing a cert leave the user on the
cert edit screen properly, but successful cases return to the cert list.
Also encode some output just in case a bad value was already present
before the validation was fixed.
(cherry picked from commit 2fe0e0fab528be3e297ed14ddd9d9e73c99cc1c4)