summaryrefslogtreecommitdiff
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
parent3ec374b8d07a5faf7eea1945ab5aeaead78d8c71 (diff)
Fix crash when re-making certificates after deleting existing ones (#690).
-rw-r--r--ChangeLog5
-rw-r--r--cscript4
-rw-r--r--src/wx/config_dialog.cc31
3 files changed, 32 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 569ea9e8d..916d84038 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/cscript b/cscript
index 143cf45e1..4adf08eab 100644
--- a/cscript
+++ b/cscript
@@ -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) {