diff options
| author | Carl Hetherington <cth@carlh.net> | 2023-11-29 22:50:34 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2023-11-29 22:50:34 +0100 |
| commit | 3160c7051b0edb06acc9333016bbf8ade4a467e1 (patch) | |
| tree | e3853edfa9d7c9be9ece72076ae17db2e42b42c1 | |
| parent | c77ca38aedcdba1de4abf5e80cf424ab5d117883 (diff) | |
Fix segfault when creating KDMs with certificates and project folders (not DKDMs).
| -rw-r--r-- | src/lib/screen.cc | 2 | ||||
| -rw-r--r-- | test/kdm_cli_test.cc | 33 |
2 files changed, 34 insertions, 1 deletions
diff --git a/src/lib/screen.cc b/src/lib/screen.cc index 7e2918018..febf9085c 100644 --- a/src/lib/screen.cc +++ b/src/lib/screen.cc @@ -93,7 +93,7 @@ kdm_for_screen ( dcp::LocalTime const begin(valid_from, dcp::UTCOffset(cinema ? cinema->utc_offset_hour() : 0, cinema ? cinema->utc_offset_minute() : 0)); dcp::LocalTime const end (valid_to, dcp::UTCOffset(cinema ? cinema->utc_offset_hour() : 0, cinema ? cinema->utc_offset_minute() : 0)); - period_checks.push_back(check_kdm_and_certificate_validity_periods(cinema->name, screen->name, screen->recipient.get(), begin, end)); + period_checks.push_back(check_kdm_and_certificate_validity_periods(cinema ? cinema->name : "", screen->name, screen->recipient.get(), begin, end)); auto signer = Config::instance()->signer_chain(); if (!signer->valid()) { diff --git a/test/kdm_cli_test.cc b/test/kdm_cli_test.cc index 4114cebd4..e79e37b2d 100644 --- a/test/kdm_cli_test.cc +++ b/test/kdm_cli_test.cc @@ -21,6 +21,8 @@ #include "lib/cinema.h" #include "lib/config.h" +#include "lib/content_factory.h" +#include "lib/film.h" #include "lib/kdm_cli.h" #include "lib/screen.h" #include "lib/trusted_device.h" @@ -195,3 +197,34 @@ BOOST_AUTO_TEST_CASE(kdm_cli_specify_cinemas_file) BOOST_CHECK_EQUAL(output[2], "Great ()"); } + +BOOST_AUTO_TEST_CASE(kdm_cli_specify_cert) +{ + boost::filesystem::path kdm_filename = "build/test/KDM_KDMCLI__.xml"; + + boost::system::error_code ec; + boost::filesystem::remove(kdm_filename, ec); + + auto film = new_test_film2("kdm_cli_specify_cert", content_factory("test/data/flat_red.png")); + film->set_encrypted(true); + film->set_name("KDMCLI"); + film->set_use_isdcf_name(false); + make_and_verify_dcp(film); + + vector<string> args = { + "kdm_cli", + "--valid-from", "2024-01-01 10:10:10", + "--valid-duration", "2 weeks", + "-C", "test/data/cert.pem", + "-o", "build/test", + "build/test/kdm_cli_specify_cert" + }; + + vector<string> output; + auto error = run(args, output); + BOOST_CHECK(!error); + + BOOST_CHECK(output.empty()); + BOOST_CHECK(boost::filesystem::exists(kdm_filename)); +} + |
