summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-09-15 19:40:24 +0100
committerCarl Hetherington <cth@carlh.net>2015-09-15 19:40:24 +0100
commitc4bf7a7fca387c7fbbea612d7abbb0d5732b8c5c (patch)
treed7948c63485582ad79bcd41af0b1e2e785e77644 /src
parent3ec374b8d07a5faf7eea1945ab5aeaead78d8c71 (diff)
Fix crash when re-making certificates after deleting existing ones (#690).
Diffstat (limited to 'src')
-rw-r--r--src/wx/config_dialog.cc31
1 files changed, 25 insertions, 6 deletions
diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc
index 81fffbbbc..15d64b902 100644
--- a/src/wx/config_dialog.cc
+++ b/src/wx/config_dialog.cc
@@ -794,9 +794,28 @@ private:
{
shared_ptr<const dcp::CertificateChain> chain = _get ();
+ string subject_organization_name;
+ string subject_organizational_unit_name;
+ string root_common_name;
string intermediate_common_name;
- if (chain->root_to_leaf().size() >= 3) {
- dcp::CertificateChain::List all = chain->root_to_leaf ();
+ string leaf_common_name;
+
+ dcp::CertificateChain::List all = chain->root_to_leaf ();
+
+ if (all.size() >= 1) {
+ /* Have a root */
+ subject_organization_name = chain->root().subject_organization_name ();
+ subject_organizational_unit_name = chain->root().subject_organizational_unit_name ();
+ root_common_name = chain->root().subject_common_name ();
+ }
+
+ if (all.size() >= 2) {
+ /* Have a leaf */
+ leaf_common_name = chain->leaf().subject_common_name ();
+ }
+
+ if (all.size() >= 3) {
+ /* Have an intermediate */
dcp::CertificateChain::List::iterator i = all.begin ();
++i;
intermediate_common_name = i->subject_common_name ();
@@ -804,11 +823,11 @@ private:
MakeChainDialog* d = new MakeChainDialog (
this,
- chain->root().subject_organization_name (),
- chain->root().subject_organizational_unit_name (),
- chain->root().subject_common_name (),
+ subject_organization_name,
+ subject_organizational_unit_name,
+ root_common_name,
intermediate_common_name,
- chain->leaf().subject_common_name ()
+ leaf_common_name
);
if (d->ShowModal () == wxID_OK) {