b6cdd12394e1538c15fbec9bc51c1afe65a53cf1
[ 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
Description
No description provided