Clear sessionId regardless of what closeSession returns
After succeeding openSessionCommon(), when the call to getSecurityLevel() fails, the code calls closeSession() and only clears the sessionId if closeSession() fails. We should always clear sessionId in this case. Also, make it clearer that the status returned by getSecurityLevel() does not overwrite the value from openSessionCommon(). Merged from http://go/wvgerrit/95845 Test: unit test adb shell LD_LIBRARY_PATH="/vendor/lib64" /data/nativetest/libwvdrmdrmplugin_hidl_test Bug: 151364587 Change-Id: I3a9106ffa44c654d3e072a0b0597398d410fc84f
This commit is contained in:
@@ -334,11 +334,13 @@ Return<void> WVDrmPlugin::openSession_1_1(
|
||||
hidl_vec<uint8_t> hSessionId = toHidlVec(sessionId);
|
||||
if (Status::OK == status) {
|
||||
SecurityLevel currentSecurityLevel = SecurityLevel::UNKNOWN;
|
||||
Return<void> hResult = getSecurityLevel(hSessionId, [&](Status status, SecurityLevel hSecurityLevel) {
|
||||
Return<void> hResult = getSecurityLevel(
|
||||
hSessionId, [&](Status gslStatus, SecurityLevel hSecurityLevel) {
|
||||
currentSecurityLevel = hSecurityLevel;
|
||||
if (Status::OK != status || requestedLevel != hSecurityLevel) {
|
||||
if (Status::OK != gslStatus || requestedLevel != hSecurityLevel) {
|
||||
ALOGE("Failed to open session with the requested security level=%d", requestedLevel);
|
||||
if (Status::OK != closeSession(hSessionId)) sessionId.clear();
|
||||
closeSession(hSessionId);
|
||||
sessionId.clear();
|
||||
}
|
||||
});
|
||||
if (!hResult.isOk() || (requestedLevel != currentSecurityLevel)) {
|
||||
|
||||
Reference in New Issue
Block a user