diff --git a/libwvdrmengine/cdm/core/src/system_id_extractor.cpp b/libwvdrmengine/cdm/core/src/system_id_extractor.cpp index 85d0859f..33da5757 100644 --- a/libwvdrmengine/cdm/core/src/system_id_extractor.cpp +++ b/libwvdrmengine/cdm/core/src/system_id_extractor.cpp @@ -60,8 +60,12 @@ bool SystemIdExtractor::ExtractSystemId(uint32_t* system_id) { bool success = false; switch (type) { case kClientTokenDrmCert: - LOGE("Cannot get a system ID from a DRM certificate"); - return false; + LOGW( + "Cannot get a system ID from a DRM certificate, " + "using null system ID: security_level = %s", + RequestedSecurityLevelToString(security_level_)); + *system_id = NULL_SYSTEM_ID; + return true; case kClientTokenKeybox: success = ExtractSystemIdProv20(system_id); break; diff --git a/libwvdrmengine/cdm/core/test/system_id_extractor_unittest.cpp b/libwvdrmengine/cdm/core/test/system_id_extractor_unittest.cpp index e08ff529..93635479 100644 --- a/libwvdrmengine/cdm/core/test/system_id_extractor_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/system_id_extractor_unittest.cpp @@ -390,13 +390,22 @@ TEST_F(SystemIdExtractorTest, GetProvisioningMethod_Failed) { } TEST_F(SystemIdExtractorTest, GetProvisioningMethod_Unsupported) { - ExpectProvisioningType(kClientTokenDrmCert); + ExpectProvisioningType(static_cast(9999)); auto extractor = CreateExtractor(kLevelDefault); ASSERT_TRUE(extractor); uint32_t system_id; EXPECT_FALSE(extractor->ExtractSystemId(&system_id)); } +TEST_F(SystemIdExtractorTest, DrmCertDevice_NullSystemId) { + ExpectProvisioningType(kClientTokenDrmCert); + auto extractor = CreateExtractor(kLevelDefault); + ASSERT_TRUE(extractor); + uint32_t system_id; + EXPECT_TRUE(extractor->ExtractSystemId(&system_id)); + EXPECT_EQ(system_id, NULL_SYSTEM_ID); +} + TEST_F(SystemIdExtractorTest, KeyboxDevice_Success) { ExpectProvisioningType(kClientTokenKeybox); EXPECT_CALL(*crypto_session_, GetTokenFromKeybox(kLevelDefault, NotNull()))