Clearkey plugin didn't handle negative test cases
Part of VTS tests for drm
Change-Id: Ia89aa51ec9018e633fd8b04bfeceb5fe4e631daa
related-to-bug: 32815560
diff --git a/drm/mediadrm/plugins/clearkey/DrmPlugin.cpp b/drm/mediadrm/plugins/clearkey/DrmPlugin.cpp
index 8cc5ee9..5fdac5c 100644
--- a/drm/mediadrm/plugins/clearkey/DrmPlugin.cpp
+++ b/drm/mediadrm/plugins/clearkey/DrmPlugin.cpp
@@ -37,6 +37,9 @@
status_t DrmPlugin::closeSession(const Vector<uint8_t>& sessionId) {
sp<Session> session = mSessionLibrary->findSession(sessionId);
+ if (sessionId.size() == 0) {
+ return android::BAD_VALUE;
+ }
if (session.get()) {
mSessionLibrary->destroySession(session);
return android::OK;
@@ -54,6 +57,9 @@
String8& defaultUrl,
DrmPlugin::KeyRequestType *keyRequestType) {
UNUSED(optionalParameters);
+ if (scope.size() == 0) {
+ return android::BAD_VALUE;
+ }
if (keyType != kKeyType_Streaming) {
return android::ERROR_DRM_CANNOT_HANDLE;
}
@@ -70,6 +76,9 @@
const Vector<uint8_t>& scope,
const Vector<uint8_t>& response,
Vector<uint8_t>& keySetId) {
+ if (scope.size() == 0 || response.size() == 0) {
+ return android::BAD_VALUE;
+ }
sp<Session> session = mSessionLibrary->findSession(scope);
if (!session.get()) {
return android::ERROR_DRM_SESSION_NOT_OPENED;
diff --git a/drm/mediadrm/plugins/clearkey/DrmPlugin.h b/drm/mediadrm/plugins/clearkey/DrmPlugin.h
index c4d934e..d5a47ca 100644
--- a/drm/mediadrm/plugins/clearkey/DrmPlugin.h
+++ b/drm/mediadrm/plugins/clearkey/DrmPlugin.h
@@ -99,9 +99,12 @@
const Vector<uint8_t>& response,
Vector<uint8_t>& certificate,
Vector<uint8_t>& wrappedKey) {
- UNUSED(response);
UNUSED(certificate);
UNUSED(wrappedKey);
+ if (response.size() == 0) {
+ // empty response
+ return android::BAD_VALUE;
+ }
return android::ERROR_DRM_CANNOT_HANDLE;
}
@@ -111,13 +114,18 @@
}
virtual status_t getSecureStop(Vector<uint8_t> const &ssid, Vector<uint8_t> &secureStop) {
- UNUSED(ssid);
+ if (ssid.size() == 0) {
+ return android::BAD_VALUE;
+ }
+
UNUSED(secureStop);
return android::ERROR_DRM_CANNOT_HANDLE;
}
virtual status_t releaseSecureStops(const Vector<uint8_t>& ssRelease) {
- UNUSED(ssRelease);
+ if (ssRelease.size() == 0) {
+ return android::BAD_VALUE;
+ }
return android::ERROR_DRM_CANNOT_HANDLE;
}
@@ -151,15 +159,17 @@
virtual status_t setCipherAlgorithm(
const Vector<uint8_t>& sessionId, const String8& algorithm) {
- UNUSED(sessionId);
- UNUSED(algorithm);
+ if (sessionId.size() == 0 || algorithm.size() == 0) {
+ return android::BAD_VALUE;
+ }
return android::ERROR_DRM_CANNOT_HANDLE;
}
virtual status_t setMacAlgorithm(
const Vector<uint8_t>& sessionId, const String8& algorithm) {
- UNUSED(sessionId);
- UNUSED(algorithm);
+ if (sessionId.size() == 0 || algorithm.size() == 0) {
+ return android::BAD_VALUE;
+ }
return android::ERROR_DRM_CANNOT_HANDLE;
}