diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-09-15 19:40:24 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-09-15 19:40:24 +0100 |
| commit | c4bf7a7fca387c7fbbea612d7abbb0d5732b8c5c (patch) | |
| tree | d7948c63485582ad79bcd41af0b1e2e785e77644 | |
| parent | 3ec374b8d07a5faf7eea1945ab5aeaead78d8c71 (diff) | |
Fix crash when re-making certificates after deleting existing ones (#690).
| -rw-r--r-- | ChangeLog | 5 | ||||
| -rw-r--r-- | cscript | 4 | ||||
| -rw-r--r-- | src/wx/config_dialog.cc | 31 |
3 files changed, 32 insertions, 8 deletions
@@ -1,3 +1,8 @@ +2015-09-15 Carl Hetherington <cth@carlh.net> + + * Fix crash on re-making certificate chains + after removing all existing certificates (#690). + 2015-09-15 c.hetherington <cth@carlh.net> * Fix failure to display audio analysis @@ -246,8 +246,8 @@ def dependencies(target): ffmpeg_options = {} return (('ffmpeg-cdist', '0e27b2b', ffmpeg_options), - ('libdcp', 'v1.2.4'), - ('libsub', 'v1.1.5')) + ('libdcp', '0c8b5b4'), + ('libsub', 'd3f7e0c')) def configure_options(target): opt = '' 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) { |
