Fix Undefined Behavior Around Enums am: 7f028d25c8

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/12404605

Change-Id: If5509b1909d499ba484e6697895458957a03c923
This commit is contained in:
John W. Bruce
2020-08-19 19:11:33 +00:00
committed by Automerger Merge Worker
2 changed files with 25 additions and 22 deletions

View File

@@ -34,7 +34,7 @@ using CdmProvisioningResponse = std::string;
using CdmUsageTableHeader = std::string; using CdmUsageTableHeader = std::string;
using CdmUsageEntry = std::string; using CdmUsageEntry = std::string;
enum CdmKeyRequestType { enum CdmKeyRequestType : uint32_t {
kKeyRequestTypeUnknown, kKeyRequestTypeUnknown,
kKeyRequestTypeInitial, kKeyRequestTypeInitial,
kKeyRequestTypeRenewal, kKeyRequestTypeRenewal,
@@ -43,13 +43,13 @@ enum CdmKeyRequestType {
kKeyRequestTypeUpdate, kKeyRequestTypeUpdate,
}; };
enum CdmOfflineLicenseState { enum CdmOfflineLicenseState : int32_t {
kLicenseStateActive, kLicenseStateActive,
kLicenseStateReleasing, kLicenseStateReleasing,
kLicenseStateUnknown, kLicenseStateUnknown,
}; };
enum CdmResponseType { enum CdmResponseType : int32_t {
NO_ERROR = 0, NO_ERROR = 0,
UNKNOWN_ERROR = 1, UNKNOWN_ERROR = 1,
KEY_ADDED = 2, KEY_ADDED = 2,
@@ -421,7 +421,7 @@ enum CdmResponseType {
// * android/include_hidl/mapErrors-inl.h // * android/include_hidl/mapErrors-inl.h
}; };
enum CdmKeyStatus { enum CdmKeyStatus : int32_t {
kKeyStatusKeyUnknown, kKeyStatusKeyUnknown,
kKeyStatusUsable, kKeyStatusUsable,
kKeyStatusExpired, kKeyStatusExpired,
@@ -432,7 +432,7 @@ enum CdmKeyStatus {
}; };
using CdmKeyStatusMap = std::map<KeyId, CdmKeyStatus>; using CdmKeyStatusMap = std::map<KeyId, CdmKeyStatus>;
enum CdmLicenseType { enum CdmLicenseType : int32_t {
kLicenseTypeOffline, kLicenseTypeOffline,
kLicenseTypeStreaming, kLicenseTypeStreaming,
kLicenseTypeRelease, kLicenseTypeRelease,
@@ -446,48 +446,51 @@ enum CdmLicenseType {
// on code review comments from go/wvgerrit/41860 this license type should not // on code review comments from go/wvgerrit/41860 this license type should not
// be added. This type can be removed once it is no longer needed by // be added. This type can be removed once it is no longer needed by
// GenerateKeyRequest. // GenerateKeyRequest.
kLicenseTypeEmbeddedKeyData kLicenseTypeEmbeddedKeyData,
}; };
enum CdmLicenseKeyType { kLicenseKeyTypeContent, kLicenseKeyTypeEntitlement }; enum CdmLicenseKeyType : int32_t {
kLicenseKeyTypeContent,
kLicenseKeyTypeEntitlement,
};
enum SecurityLevel { kLevelDefault, kLevel3 }; enum SecurityLevel : uint32_t { kLevelDefault, kLevel3 };
enum CdmSecurityLevel { enum CdmSecurityLevel : int32_t {
kSecurityLevelUninitialized, kSecurityLevelUninitialized,
kSecurityLevelL1, kSecurityLevelL1,
kSecurityLevelL2, kSecurityLevelL2,
kSecurityLevelL3, kSecurityLevelL3,
kSecurityLevelUnknown kSecurityLevelUnknown,
}; };
enum CdmCertificateType { enum CdmCertificateType : int32_t {
kCertificateWidevine, kCertificateWidevine,
kCertificateX509, kCertificateX509,
}; };
enum CdmHlsMethod { enum CdmHlsMethod : int32_t {
kHlsMethodNone, kHlsMethodNone,
kHlsMethodAes128, kHlsMethodAes128,
kHlsMethodSampleAes, kHlsMethodSampleAes,
}; };
enum CdmCipherMode { enum CdmCipherMode : int32_t {
kCipherModeCtr, kCipherModeCtr,
kCipherModeCbc, kCipherModeCbc,
}; };
enum CdmEncryptionAlgorithm { enum CdmEncryptionAlgorithm : int32_t {
kEncryptionAlgorithmUnknown, kEncryptionAlgorithmUnknown,
kEncryptionAlgorithmAesCbc128 kEncryptionAlgorithmAesCbc128,
}; };
enum CdmSigningAlgorithm { enum CdmSigningAlgorithm : int32_t {
kSigningAlgorithmUnknown, kSigningAlgorithmUnknown,
kSigningAlgorithmHmacSha256 kSigningAlgorithmHmacSha256,
}; };
enum CdmClientTokenType { enum CdmClientTokenType : int32_t {
kClientTokenKeybox, kClientTokenKeybox,
kClientTokenDrmCert, kClientTokenDrmCert,
kClientTokenOemCert, kClientTokenOemCert,
@@ -500,13 +503,13 @@ enum CdmClientTokenType {
// persisted in non-secure storage but are loaded and unloaded from // persisted in non-secure storage but are loaded and unloaded from
// the TEE during use (OEMCrypto v13+) // the TEE during use (OEMCrypto v13+)
// kUnknownUsageSupport - usage support type is uninitialized or unavailable // kUnknownUsageSupport - usage support type is uninitialized or unavailable
enum CdmUsageSupportType { enum CdmUsageSupportType : int32_t {
kNonSecureUsageSupport, kNonSecureUsageSupport,
kUsageEntrySupport, kUsageEntrySupport,
kUnknownUsageSupport, kUnknownUsageSupport,
}; };
enum CdmUsageEntryStorageType { enum CdmUsageEntryStorageType : int32_t {
kStorageLicense, kStorageLicense,
kStorageUsageInfo, kStorageUsageInfo,
kStorageTypeUnknown, kStorageTypeUnknown,
@@ -546,7 +549,7 @@ struct CdmUsageEntryInfo {
} }
}; };
enum CdmKeySecurityLevel { enum CdmKeySecurityLevel : int32_t {
kKeySecurityLevelUnset, kKeySecurityLevelUnset,
kSoftwareSecureCrypto, kSoftwareSecureCrypto,
kSoftwareSecureDecode, kSoftwareSecureDecode,

View File

@@ -233,7 +233,7 @@ TEST_F(WvCdmEngineMetricsImplTest, GenerateKeyRequest) {
} }
TEST_F(WvCdmEngineMetricsImplTest, AddKey) { TEST_F(WvCdmEngineMetricsImplTest, AddKey) {
CdmLicenseType license_type; CdmLicenseType license_type = {};
CdmKeySetId key_set_id; CdmKeySetId key_set_id;
EXPECT_CALL(*test_cdm_metrics_engine_, EXPECT_CALL(*test_cdm_metrics_engine_,