Commit Graph

5105 Commits

Author SHA1 Message Date
Edwin Wong
7dde61e17e [automerger skipped] Merge "[RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability." into pi-dev am: 9452ee5a55 -s ours am: 18fe74f4d9 -s ours am: de20725d1a -s ours am: 794a05c0ec -s ours am: bc5d15d4f3 -s ours am: 2cb2a3ef00 -s ours
am skip reason: subject contains skip directive

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

Change-Id: I5bf450a2ce079ca6d880fa925a668a7efc587b10
2021-07-13 22:43:09 +00:00
Edwin Wong
6ff7f938fd [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: 1bd967f9a8 -s ours am: 7752248af7 -s ours am: c4600c0f7d -s ours am: 9d02914fd7 -s ours am: 2cdf1cf43e -s ours am: bd4018a652 -s ours am: 83ba088584 -s ours
am skip reason: subject contains skip directive

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

Change-Id: I73db555e50d2bbf770839d1073966295243fab6b
2021-07-13 22:42:42 +00:00
Edwin Wong
4ff2690813 [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: 0558edfb31 -s ours am: ee4815ae80 -s ours am: 5e2f09293c -s ours am: 56860bc3dc -s ours am: 34196e65a2 -s ours am: f54bc3c1aa -s ours
am skip reason: subject contains skip directive

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

Change-Id: I29c470c1fb990e6661277838227f1955f67ed953
2021-07-13 22:42:34 +00:00
Edwin Wong
2cb2a3ef00 [automerger skipped] Merge "[RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability." into pi-dev am: 9452ee5a55 -s ours am: 18fe74f4d9 -s ours am: de20725d1a -s ours am: 794a05c0ec -s ours am: bc5d15d4f3 -s ours
am skip reason: subject contains skip directive

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

Change-Id: Ida8d31805a738cc6ee713ed9deece05c87cfa832
2021-07-13 22:29:13 +00:00
Edwin Wong
83ba088584 [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: 1bd967f9a8 -s ours am: 7752248af7 -s ours am: c4600c0f7d -s ours am: 9d02914fd7 -s ours am: 2cdf1cf43e -s ours am: bd4018a652 -s ours
am skip reason: subject contains skip directive

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

Change-Id: Ic6b29f06712b6a864f3cfe093e1d2feeff0af981
2021-07-13 22:28:49 +00:00
Edwin Wong
f54bc3c1aa [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: 0558edfb31 -s ours am: ee4815ae80 -s ours am: 5e2f09293c -s ours am: 56860bc3dc -s ours am: 34196e65a2 -s ours
am skip reason: subject contains skip directive

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

Change-Id: Icf0120e67821fe5c416ec2ec034d6cc570a64396
2021-07-13 22:28:41 +00:00
Edwin Wong
bc5d15d4f3 [automerger skipped] Merge "[RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability." into pi-dev am: 9452ee5a55 -s ours am: 18fe74f4d9 -s ours am: de20725d1a -s ours am: 794a05c0ec -s ours
am skip reason: subject contains skip directive

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

Change-Id: I5d911496a4be72223c5d2220ae2e869824237d94
2021-07-13 22:17:34 +00:00
Edwin Wong
bd4018a652 [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: 1bd967f9a8 -s ours am: 7752248af7 -s ours am: c4600c0f7d -s ours am: 9d02914fd7 -s ours am: 2cdf1cf43e -s ours
am skip reason: subject contains skip directive

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

Change-Id: I1bb073701960bea117000f6d52f00d6085679b1e
2021-07-13 22:17:15 +00:00
Edwin Wong
34196e65a2 [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: 0558edfb31 -s ours am: ee4815ae80 -s ours am: 5e2f09293c -s ours am: 56860bc3dc -s ours
am skip reason: subject contains skip directive

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

Change-Id: I0d24b75653a4710f860f67d2ed43fa1ad6b90b73
2021-07-13 22:17:08 +00:00
Edwin Wong
794a05c0ec [automerger skipped] Merge "[RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability." into pi-dev am: 9452ee5a55 -s ours am: 18fe74f4d9 -s ours am: de20725d1a -s ours
am skip reason: subject contains skip directive

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

Change-Id: I244235360cd057feb8986d07feaa05cf6d4eac27
2021-07-13 22:03:42 +00:00
Edwin Wong
2cdf1cf43e [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: 1bd967f9a8 -s ours am: 7752248af7 -s ours am: c4600c0f7d -s ours am: 9d02914fd7 -s ours
am skip reason: subject contains skip directive

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

Change-Id: I4fbbd469369c9bc8e4eb7c6c06797b5680506ff8
2021-07-13 22:03:21 +00:00
Edwin Wong
56860bc3dc [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: 0558edfb31 -s ours am: ee4815ae80 -s ours am: 5e2f09293c -s ours
am skip reason: subject contains skip directive

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

Change-Id: I1cab6c1519ff1092ef54a7614a9a1b7a9aba8f01
2021-07-13 22:03:13 +00:00
Edwin Wong
de20725d1a [automerger skipped] Merge "[RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability." into pi-dev am: 9452ee5a55 -s ours am: 18fe74f4d9 -s ours
am skip reason: subject contains skip directive

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

Change-Id: Ie112ddf160809e9dfd919c9c3e6f5cc071033801
2021-07-13 21:45:12 +00:00
Edwin Wong
9d02914fd7 [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: 1bd967f9a8 -s ours am: 7752248af7 -s ours am: c4600c0f7d -s ours
am skip reason: subject contains skip directive

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

Change-Id: I688ac733506263c800ae5161e6218b0c954a111c
2021-07-13 21:44:59 +00:00
Edwin Wong
5e2f09293c [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: 0558edfb31 -s ours am: ee4815ae80 -s ours
am skip reason: subject contains skip directive

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

Change-Id: I552dc31fba2d6813e9bb7fa94f29e4a47618ff8c
2021-07-13 21:44:50 +00:00
Edwin Wong
18fe74f4d9 [automerger skipped] Merge "[RESTRICT AUTOMERGE] Fix WVCryptoPlugin use after free vulnerability." into pi-dev am: 9452ee5a55 -s ours
am skip reason: subject contains skip directive

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

Change-Id: I1c775fc2a6e4c094e003078c167a1256d0d7c776
2021-07-13 21:28:53 +00:00
Edwin Wong
c4600c0f7d [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: 1bd967f9a8 -s ours am: 7752248af7 -s ours
am skip reason: subject contains skip directive

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

Change-Id: I80f78b99b7afc28ff06270f114fd3e7929c3a7c7
2021-07-13 21:28:38 +00:00
Edwin Wong
ee4815ae80 [automerger skipped] [RESTRICT AUTOMERGE] Fix potential decrypt destPtr overflow. am: 0558edfb31 -s ours
am skip reason: subject contains skip directive

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

Change-Id: I9c8b8f3b2ca9d4891d89a5327f3fca39613989af
2021-07-13 21:28:31 +00:00
Robert Shih
127b7c6e13 Add 1.3 widevine hidl target am: 20b7762982
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/15191998

Change-Id: I241adc8ceaf7cb839fc889086c0d914cf73c76e6
2021-07-07 20:03:28 +00:00
Robert Shih
20b7762982 Add 1.3 widevine hidl target
libwvhidl picked from the following builds:
+--------+---------+
| arch   | build   |
+--------+---------+
| arm    | 7520386 |
| arm64  | 7511028 |
| x86    | 7511028 |
| x86_64 | 7511028 |
+--------+---------+

Ran patchelf to set DT_SONAME to libwvhidl@1.3.so

Bug: 191881462
Test: atest MediaDrmTest#testOemCryptoVersion
Change-Id: I0f6c6750124d89145ef54c47d7dc8c95a7207063
2021-07-02 23:24:38 -07:00
Alex Dale
b7aa89024e Added write protection for session to engine map. am: b6cdd12394
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/15180882

Change-Id: Ic1c256fdee0f52a3d56879782c83f5b01f93788c
2021-07-02 16:59:32 +00:00
Alex Dale
b6cdd12394 Added write protection for session to engine map.
[ Merge of http://go/wvgerrit/128325 ]

There were a few cases where |cdm_by_session_id_| was being iterated
over and the CDM did not acquire any write-protection locks to prevent
other threads from changing the map simultaneously.

In particular, it was possible that while cleaning up a CDM, and
removing all the associated session in |cdm_by_session_id_| another
CDM could have been opening a session and creating a new association
in |cdm_by_session_id_| at the same time.

Cases where |cdms_| and/or |cdm_by_session_id_| is being written to or
iteratively read from should require a lock.  The iterator of
std::map maintains a "view" into the map's tree structure.  Modifying
the map (inserting or deleting elements) can potentially change the
structure of the map and the underlying assumptions built into an
iterator's view (ex, the iterator thinking there is an element to the
left or right).

Modifying the value within the map can potentially cause problems, but
is not applicable in our case (we modify the object pointed to by the
map element, but not the pointer itself).

Bug: 190405462
Test: build_and_run_all_unit_tests.sh and MediaDrmTest
Change-Id: I043e238570dac9a0db990f8fe66be271062b965c
2021-07-01 18:37:18 -07:00
TreeHugger Robot
bb62a534bf Merge "[RESTRICT AUTOMERGE] Fix L3 clock loading issue" into sc-v2-dev 2021-07-01 23:34:58 +00:00
Rahul Frias
5f2fd5a07f Merge "Disable expiration for legacy DRM certificates" into sc-dev am: a3657ab200
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/15144680

Change-Id: Iaffb18bcff400cf00a31f95ee9368d94f55d93ff
2021-07-01 21:09:44 +00:00
Rahul Frias
a3657ab200 Merge "Disable expiration for legacy DRM certificates" into sc-dev 2021-07-01 21:00:14 +00:00
Rahul Frias
44cde1757a Merge "Correct an error reported when a license is restored and then released" into sc-dev am: d30c5043d1
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/15150547

Change-Id: I6417a1091f4d69055c2ecbed6e79bcc61b80f109
2021-07-01 19:29:43 +00:00
Rahul Frias
151d0b15d3 Disable expiration for legacy DRM certificates
[ Merge of http://go/wvgerrit/128163 ]

In android S, we added a feature b/169740403 [Limited lifespan DRM
certificates with license preservation]

Due to uncertainties of when the provisioning service will
launch, we are disabling expiration for legacy DRM certificates.
If the feature does not launch in time, existing DRM certificates
will expire and be replaced. Offline licenses associated with these
expired DRM certificates will fail to load.

Expiration of legacy certificates will be reenabled at a later time.
The main portion of feature, the issuing of new DRM certificates with
expiration time will still be supported.

Bug: 192428783
Bug: 169740403
Test: WV unit/integration tests
Change-Id: I1d1184249848f215953a837f369528d3b74c9618
2021-07-01 19:24:02 +00:00
Rahul Frias
d30c5043d1 Merge "Correct an error reported when a license is restored and then released" into sc-dev 2021-07-01 19:17:21 +00:00
Alex Dale
4ed10d691f Merge "PST and non PST can handle unlimited license durations." into sc-dev am: 1229aedcea
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/15159035

Change-Id: I4c6493fd8a2abfdddcaa6b6b694122b814c27118
2021-07-01 06:57:30 +00:00
Alex Dale
1229aedcea Merge "PST and non PST can handle unlimited license durations." into sc-dev 2021-07-01 06:45:07 +00:00
Alex Dale
da0d78bf0b Merge "Updated integration test to handle unlimited license durations." into sc-dev am: 16a0ab2309
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/15136759

Change-Id: I975afd30a91155770f9e21e48db5184ef63440f4
2021-07-01 05:51:31 +00:00
Alex Dale
16a0ab2309 Merge "Updated integration test to handle unlimited license durations." into sc-dev 2021-07-01 05:35:29 +00:00
Fred Gylys-Colwell
1c82e33cb8 Merge "Cache security level" into sc-dev am: 47324cc6fe
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/15085899

Change-Id: Ie95935d67d2959db0877f6425d83d0d23246e51a
2021-07-01 04:42:50 +00:00
TreeHugger Robot
a1dd61ba6d Merge "Add extra RSA private keys to unit tests" into sc-dev am: 853ab51cb3
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/15136762

Change-Id: I6bf6290d1c8605536d47d502171fef3d790edd18
2021-07-01 04:42:45 +00:00
TreeHugger Robot
6b10fae469 [automerger skipped] Merge "Sync oemcrypto reference code" into sc-dev am: 6d1898f20f -s ours
am skip reason: skipped by user fredgc

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

Change-Id: Ie88d33bb1b80487b2da1c237051cab65a9c4fc1a
2021-07-01 04:42:39 +00:00
Fred Gylys-Colwell
47324cc6fe Merge "Cache security level" into sc-dev 2021-06-30 21:35:36 +00:00
TreeHugger Robot
853ab51cb3 Merge "Add extra RSA private keys to unit tests" into sc-dev 2021-06-30 21:32:01 +00:00
TreeHugger Robot
6d1898f20f Merge "Sync oemcrypto reference code" into sc-dev 2021-06-30 21:20:58 +00:00
TreeHugger Robot
0daff1c13d Merge "Allow delayed error code in generic crypto" into sc-dev am: 99c4d463d9
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/15008617

Change-Id: I57414ecc7b7e99f4ce2714a96d4b550798ce8071
2021-06-30 21:15:47 +00:00
TreeHugger Robot
99c4d463d9 Merge "Allow delayed error code in generic crypto" into sc-dev 2021-06-30 21:06:17 +00:00
TreeHugger Robot
88c6500ba2 Merge "Update OEMCrypto buffer offset tests" into sc-dev am: 41d7b74558
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/15055162

Change-Id: I7f3f64bec9748f6045cc33b67b9f8c7dbe0ded15
2021-06-30 21:02:07 +00:00
TreeHugger Robot
41d7b74558 Merge "Update OEMCrypto buffer offset tests" into sc-dev 2021-06-30 20:49:57 +00:00
Rahul Frias
725f3d9e18 Merge "Address unit test failures" into sc-dev am: 5271d95ce4
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/14940264

Change-Id: Ic5924bf04b90398d41863f95f7a2d43b732d60f2
2021-06-30 19:42:13 +00:00
Rahul Frias
5271d95ce4 Merge "Address unit test failures" into sc-dev 2021-06-30 19:30:22 +00:00
Fred Gylys-Colwell
2d9bdfea58 Update OEMCrypto buffer offset tests
Merge from Widevine repo of http://go/wvgerrit/127524

Some unit tests used the response buffer size before the size had been
computed. This CL updates the tests.

Bug: 183440999
Bug: 184866351
Test: Ran unit tests on Prov 3.0 device.
Change-Id: I0b23dc7b0dafa9b9eab3cdbd7f29074898e4709b
2021-06-30 17:46:18 +00:00
Alex Dale
14bd15a08c PST and non PST can handle unlimited license durations.
[ Merge of http://go/wvgerrit/128183  ]

As was the case with WvCdmStreamingUsageReportTest.ReportTest, the
following tests were also updated to handle the case where "license
duration" is unlimited:
- WvCdmStreamingNoPstTest.UsageTest
- WvCdmStreamingPstTest.UsageTest
- WvCdmOfflineUsageReportTest.UsageTest

This is due to the new license duration model used for V16 licenses.

Bug: 163542905
Test: cdm_extended_duration_test
Change-Id: I24d3fc17fcf19129a19ed39a5c6c1ddd59ed073d
2021-06-30 10:41:07 -07:00
Rahul Frias
c882bd8230 Correct an error reported when a license is restored and then released
[ Merge of http://go/wvgerrit/128143 ]

Now reports LICENSE_STATE_ERROR rather than ERROR_DRM_GENERIC_PLUGIN
to make the cause of failure and suggested action more clear for app
developers. Also added an additional error log.

Bug: 190645000
Test: WV unit/integration tests
Change-Id: Ib23ca628c590316f90f497d8fdfbab24fd644d6f
2021-06-29 20:21:06 -07:00
Fred Gylys-Colwell
052016eb57 Add extra RSA private keys to unit tests
Merge from Widevine repo of http://go/wvgerrit/128047

There have been some failures with various RSA private keys. We add
them to the unit tests to make sure that OEMCrypto is able to load
these types of keys:
* Shorter: than normal private exponents. This seems to occur
  occasionally even with Euler totients. But it occurs more with
  Carmichael totients.
* 0-leading-byte: private exponents. This also occurs naturally for
  both Euler and Carmichael totients.
* Carmichael: vs Euler totients. I think we may already have tests for
  this. But just in case.

Bug: 190450051
Test: ran unit tests on bonito (and they passed!)
Change-Id: Id64ec738479eb8a0f77e253bace319cebe918d3f
2021-06-29 16:47:20 +00:00
Fred Gylys-Colwell
58c1ea1fa2 Cache security level
Merge from Widevine repo of http://go/wvgerrit/127743

There was some confusion about who owned the OEMCrypto security level
string in a multithreaded environment. This is solved by caching the
security level at initialization time.

Bug: 188706160
Test: ran unit tests on bonito
Change-Id: I93af3bb2e5a8bf190627ee568f752b5ea9543306
2021-06-29 05:42:41 +00:00
Alex Dale
a9e26bdc2b Updated integration test to handle unlimited license durations.
[ Merge of http://go/wvgerrit/128046 ]

Test case WvCdmStreamingUsageReportTest.WvCdmStreamingUsageReportTest
was failing comparing "license duration" values returned when querying
for key information for licenses with unlimited "rental duration".

This is due to the new license duration model used for V16 licenses.

From the Widevine MediaDrm doc for "LicenseDurationRemaining":

  For OEMCrypto v16+ (Android 11 and later), license duration is no
  longer being enforced. If rental duration is set to never expire,
  ”9223372036854775807” (LLONG_MAX) will be returned.

Similarly, the test has been updated for "playback duration" queries
of the same case.

Bug: 163542905
Test: cdm_extended_duration_test

Change-Id: I57e0e435631a151fac45c963d865de256a773644
2021-06-28 22:35:52 -07:00