)]}'
{
  "log": [
    {
      "commit": "7d2c6e8be2c9a4f3c1364d243856a345f17f851e",
      "tree": "3aab41fe8acce7056a1e7b01ebc2e8882e416b9a",
      "parents": [
        "987ac7056040ed1594dc975c8a9d7cee463fa834"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Feb 16 16:14:59 2018 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Feb 16 17:04:00 2018 -0800"
      },
      "message": "Move mediadrm-related headers\n\nRelocate drm and crypto headers from media\nto mediadrm to have finer grained ownership\n\nbug:73556221\nChange-Id: I7d1b5944f261f9b1fdeed7605e4c0b4b4ca43e1a\n"
    },
    {
      "commit": "2442047f5c6d368f69fa81917f5aabc9b3c342a0",
      "tree": "46a63cbb73723b6f37fe6b8275c7045335ef4435",
      "parents": [
        "5231cc164fe040a3ab5fcb28baae4e0a4f9fdf4c"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Jan 11 17:46:16 2018 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Jan 12 07:45:26 2018 +0000"
      },
      "message": "Fix use of uninitialized value in libmediadrm\n\nbug:70526702\ntest:gts media tests\n\nChange-Id: I29a67dad01ca8c8f649ba12cf08cc86b7eb56523\n"
    },
    {
      "commit": "5231cc164fe040a3ab5fcb28baae4e0a4f9fdf4c",
      "tree": "31d50c9362c7f5e7c7c3c09f210a13a17a6ae200",
      "parents": [
        "028cf0973f928503e89124c3f6493a5226826ed9"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Jan 11 00:14:53 2018 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Jan 11 22:17:02 2018 -0800"
      },
      "message": "Fix potential buffer overflow in mediadrmserver\n\nbug:71389378\ntest: gts media tests\n\nChange-Id: Ic7d4b456bc874b92fbe202e3dafb7ceac747ebc7\n"
    },
    {
      "commit": "6dcab2bafd847be84c2c2230bbd04af9c45c491e",
      "tree": "51f39e6d2f1ac74fd546c8a2797c06745a757694",
      "parents": [
        "d07c92742fc5801cab8e99801f591365986acbe9"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Mar 28 14:18:27 2017 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Mar 29 10:40:49 2017 -0700"
      },
      "message": "DRM: more fixes for heap base mapping -- DO NOT MERGE\n\nHeap base for the same heap could be mapped to different values\nafter they go across binder to CryptoHal. So we can\u0027t use heapbase\nto index the heaps.\n\nSince each ACodec instance allocates all its shared memory buffers\nfrom the same memory dealer, we let CryptoHal assign a sequence\nnumber to the ACodec when it calls setHeap. In subsequent calls\nto CryptoHal::decrypt, reference the heap by the seq num, and ignore\nthe heap base address.\n\nBug: 36479980\nBug: 36209723\nBug: 36660223\n\nTest: the above bugs don\u0027t repro\n\nChange-Id: I2f519a689a5891447385d1bf9d6e668bb3b4dbe2\n\n(cherry-picked from bf628da1e231e2e4d6bf61f9884e120bae3f9156)\n"
    },
    {
      "commit": "d07c92742fc5801cab8e99801f591365986acbe9",
      "tree": "f2bb6af46cd67d6d40098bfa86794097b43d41c6",
      "parents": [
        "5f8beee0ea76ffe5cc40a517e8db43dbd64fbeff"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Mar 28 11:02:06 2017 -0700"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Wed Mar 29 10:40:13 2017 -0700"
      },
      "message": "Revert \"Revert \"Fix decoder instantiation during playback\"\" -- DO NOT MERGE\n\nThis reverts commit de7268d8e20b883ec88a7ff19ad560a665373484.\n\nBug: 36479980\nBug: 36209723\nBug: 36660223\n\nChange-Id: I8d83305a28dc35cee16f8f1068c90fdd0b9effff\n(cherry picked from commit 6aa5c0662c86c7f7b2890577a207086eeecbd177)\n"
    },
    {
      "commit": "93e29c0846e0f7583ae96edafbf5e8a3169711ee",
      "tree": "40c37d5ac407ba18be25817eb4a23a01ec828f14",
      "parents": [
        "4313e1c8877e31243b0c77a988d6246d886f8ce5",
        "de7268d8e20b883ec88a7ff19ad560a665373484"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Mar 22 00:05:17 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 22 00:05:18 2017 +0000"
      },
      "message": "Merge \"Revert \"Fix decoder instantiation during playback\"\""
    },
    {
      "commit": "de7268d8e20b883ec88a7ff19ad560a665373484",
      "tree": "5b1b48314857b676252e71b5c5bfd1a0eea8cadc",
      "parents": [
        "33327c7f0f04bcce3f8e8ee23953f87efc423037"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Mar 21 23:49:15 2017 +0000"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Mar 21 23:59:27 2017 +0000"
      },
      "message": "Revert \"Fix decoder instantiation during playback\"\n\nThis reverts commit 33327c7f0f04bcce3f8e8ee23953f87efc423037.\n\nBug: 36479980\nBug: 36209723\n\nChange-Id: I8ff9422086f5ba9ba5df60135d20b9d8bfc0be52\n"
    },
    {
      "commit": "7ec2a45e48f6c24a5e8fa96416d8793329b79d2f",
      "tree": "ec39afa290583d03bc5e34ccb34d97f89a4a1006",
      "parents": [
        "c78d3e0711849b22ba860653be4dc937af8cc0ea",
        "33327c7f0f04bcce3f8e8ee23953f87efc423037"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Mar 17 21:15:26 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 17 21:15:27 2017 +0000"
      },
      "message": "Merge \"Fix decoder instantiation during playback\""
    },
    {
      "commit": "33327c7f0f04bcce3f8e8ee23953f87efc423037",
      "tree": "2e3f8e0de5d2ad4a8d5e87c5ffa1d770e2041c49",
      "parents": [
        "d0cb831e7f14c43359aeb080d9564185d28c7a75"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Mar 15 23:41:23 2017 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Mar 17 11:33:24 2017 -0700"
      },
      "message": "Fix decoder instantiation during playback\n\nWhen a decoder is created while another decoder\nis in use and the two decoders share a common\ncrypto instance, decryption results would become\nindeterminate, which could cause the decoder to\nhang. This change adds a notification to the\ncrypto instance so it can update state when its\nownership changes.\n\nbug: 36209723\n\nTest: playbacktests-debug-androidTest.apk as\ndescribed in the bug.\n\nChange-Id: I453c260eace5543dd79a3569bf6a9592394c4113\n"
    },
    {
      "commit": "e424bc24ea6d3c49832436c9e400c6244f3b8c5d",
      "tree": "d3a9f53f0856ae29b35cb62021b99dc1df5085b1",
      "parents": [
        "4a71e75dc56415cda4cf33ea92d4efd914a44541",
        "0be134af061566c7d68c0c4f868a677daf85f550"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Mar 15 20:36:33 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 15 20:36:33 2017 +0000"
      },
      "message": "Merge \"Fix mediaserver crash due to NULL errorDetailMessage\""
    },
    {
      "commit": "9247e10531fa3128d5263e3ad605a0fecefcd2d0",
      "tree": "941a85cb000a579408dfdc13c97c9e48d8ab08bd",
      "parents": [
        "1ac2e2bdf0d232b4518020de7b923c0241b27137"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Mon Mar 13 16:38:20 2017 -0700"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Mar 14 14:08:04 2017 -0700"
      },
      "message": "Check opaque size in CREATE_PLUGIN.\n\nCheck opaque size to be not greater than an abitrary 100K\nand verify malloc succeeded.\n\nTest: Play Movies \u0026 TV\n\nTest: Netflix\n\nTest: ANDROID_BUILD_TOP\u003d ./android-gts/tools/gts-tradefed run gts\n -m GtsMediaTestCases --test\ncom.google.android.media.gts.WidevineH264PlaybackTests#testL1With480P60\n\nTest: Forcing opaque size to exceed limit and malloc to report failure;\n  both resulted in Netflix reporting an error and failing to play.\n  This is the expected result.\n\nbug: 30202440\nChange-Id: I9fdaf208471f2781ffbd656358b1bf1ef5b28ee8\n"
    },
    {
      "commit": "0be134af061566c7d68c0c4f868a677daf85f550",
      "tree": "126fab0ff10f8b5dc0582bf9325f326cf1022059",
      "parents": [
        "886deb506ea2938cfec40fc0dd2bff072850386b"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Mar 09 17:01:10 2017 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Mar 13 11:37:24 2017 -0700"
      },
      "message": "Fix mediaserver crash due to NULL errorDetailMessage\n\nbug: 33905340\nChange-Id: Icad86ad066a053f4aa9ca708a3c8690a68ec1856\n"
    },
    {
      "commit": "a53d6553fce1818bdf87833f93633c93ad1b5915",
      "tree": "8fbbb7b32d753c75a7350d748d6fa08d47402289",
      "parents": [
        "2a0c6d54dc34fdd8cca4e8ed7f39ad512133a878"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Jan 20 00:31:46 2017 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Jan 25 15:41:12 2017 -0800"
      },
      "message": "Implement client code to use Drm and Crypto HALs\n\nThis change adds DrmHal \u0026 CryptoHal classes that connect to the Treble\nHAL interfaces for drm.  These classes mirror the existing Drm and\nCrypto classes that connect to the DrmPlugin and CryptoPlugin\ninterfaces. Having both allows mediadrmserver to run in either mode\nwhile the HAL is stabilized.\n\nThe shared memory interfaces between mediaserver\u0027s ACodecBufferChannel\nand ICrypto had to be reworked to use the Treble HALs. Specifically,\nthe shared memory path for returning decrypted buffers in the\nnon-secure case had to become separate instead of piggy-backing on the\nsource shared memory buffer. A separate shared memory destination\nbuffer is now allocated on the buffer channel. An abstraction for a\ndecrypt destination buffer was also introduced to clarify ICrypto\u0027s\ndecrypt method.\n\nTests: Playback using Play Movies and ExoPlayer works on angler\nwith and without the treble hal enabled.\n\nbug: 32815560\nChange-Id: I5a3dc84f99902eb8cf8eabab9ad074d307744950\n"
    },
    {
      "commit": "75571e4bc76bd2defd4309c7154120840396329d",
      "tree": "6011d30e202e4e6c03fdeffda65a9ad98ff2c131",
      "parents": [
        "300379ab01ec4c5f9f538284dbb1e49ad012de29"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 07 16:34:52 2016 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Nov 07 16:34:52 2016 -0800"
      },
      "message": "Clean up mediadrm dependencies\n\nMove various things around so mediadrmserver doesn\u0027t need\nlibstagefright and libmedia\n\nTest: build/boot\nChange-Id: I48b713cd679b992cb6ad1262c20394a9892d7027\n"
    },
    {
      "commit": "d6137ab7865bec44c935a1ac2f52950f38f497c4",
      "tree": "3ebce9961bf0707314cc73c0bc5fd05df207620e",
      "parents": [
        "c245877ccf3753e2f2ffd0f7f08ec6810e9ed524",
        "1621bbd89140dbbaebb71fa964ae8154767ec098"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sun Sep 25 21:35:03 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sun Sep 25 21:35:03 2016 +0000"
      },
      "message": "Fix potential heap data leak in mediadrmserver am: d36832a813 am: d983c8319a\nam: 1621bbd891\n\nChange-Id: I648ed2892f5d15220b6ab577b0416bda846377c9\n"
    },
    {
      "commit": "0663786514a50a16b0430422ddd5fa1374267f30",
      "tree": "ec852bc915b816dc10d2bf606520f623d5483caa",
      "parents": [
        "a0f342e082d2e7820e5d073d34ce054fa05d9dd4",
        "964b71aba637bba183847394844f14a7cc1b773c"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sun Sep 25 21:34:29 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sun Sep 25 21:34:29 2016 +0000"
      },
      "message": "Fix L3 HLS decryption am: 2cc3afc8a5 am: b135fb9849\nam: 964b71aba6\n\nChange-Id: Ic846d622b373cfb3f0a5dda62ebf67ee75b860b6\n"
    },
    {
      "commit": "1621bbd89140dbbaebb71fa964ae8154767ec098",
      "tree": "2d7f861d0e1faf379bebd539ff7a0fd93d67d661",
      "parents": [
        "d5a5c18b1782a534d6996d7dc393e8bdb8f80ac1",
        "d983c8319a4632aeb64a165f38e7c3088616e7fd"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sat Sep 24 00:58:10 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Sep 24 00:58:10 2016 +0000"
      },
      "message": "Fix potential heap data leak in mediadrmserver am: d36832a813\nam: d983c8319a\n\nChange-Id: I78d690176d24c0a66cec78186d0f14c2c455baee\n"
    },
    {
      "commit": "d36832a813c8a1aadcc671e99808f475a160bc22",
      "tree": "928b6be98157f98291c253aeda0667f0c70be2ab",
      "parents": [
        "2cc3afc8a5d70910e2c0e4c04c41393ff1e7effc"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Sep 23 16:01:52 2016 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Sep 23 16:01:52 2016 -0700"
      },
      "message": "Fix potential heap data leak in mediadrmserver\n\nChange-Id: Ife4cecaeb5e301d702681c6dba9a17357232db40\nrelated-to-bug: 31657897\n"
    },
    {
      "commit": "964b71aba637bba183847394844f14a7cc1b773c",
      "tree": "60f5817256877c1573ef33b8e2edd9a7652c4cbb",
      "parents": [
        "760366445167cc7ae78ee777ce1257dd8f308595",
        "b135fb984938653d8c89c67f69d1eb56773f051c"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Sep 23 22:55:52 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 23 22:55:52 2016 +0000"
      },
      "message": "Fix L3 HLS decryption am: 2cc3afc8a5\nam: b135fb9849\n\nChange-Id: I635c87f2d11306152bb69a3504cad4718f61e693\n"
    },
    {
      "commit": "2cc3afc8a5d70910e2c0e4c04c41393ff1e7effc",
      "tree": "d1f5cb864fd306b9e9d4b3a03efca4d7fbd6f2ed",
      "parents": [
        "08e1f41731ad95a0019b3733b999958a07f705ac"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Sep 21 18:06:52 2016 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Sep 23 13:38:05 2016 -0700"
      },
      "message": "Fix L3 HLS decryption\n\nA recent change to avoid returning decrypted data\nover binder assumed that in-place decryption was\nsafe. That isn\u0027t true for the L3 HLS case. This\nchange eliminates the assumption that in-place\ndecryption is safe while still returning the\ndecrypted data via shared memory, instead of\ncopying it over binder.\n\nbug: 31657897\nChange-Id: I7e480a25d2f9b08e54a4844ecdf19ba3c8af79c2\n"
    },
    {
      "commit": "c48459f28fbcdf56887f41d7d1d619f75570b910",
      "tree": "554bd831a35fca979d3877b23fc6e8f3273161b8",
      "parents": [
        "46d4d42d87022f5d45f70c77b0a666b1beaa267b",
        "ddd8ab9dae557c4db8cd5b8cecfebece5af7452c"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Sep 20 09:18:55 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Sep 20 09:18:55 2016 +0000"
      },
      "message": "Avoid returning decrypted data over binder am: 3048485165 am: c06b784bff\nam: ddd8ab9dae\n\nChange-Id: I7283d526fbbe336768cc10cb0ac15947f3277735\n"
    },
    {
      "commit": "ddd8ab9dae557c4db8cd5b8cecfebece5af7452c",
      "tree": "91730a37aabaae48f714c0e5c755d63f4807e4fc",
      "parents": [
        "38f8318e4fe8eeafb57312d1ca9640400b2ff5de",
        "c06b784bff8f0ed3535d3f0a57acc1ede7aef4fb"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Sep 20 08:11:20 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Sep 20 08:11:20 2016 +0000"
      },
      "message": "Avoid returning decrypted data over binder am: 3048485165\nam: c06b784bff\n\nChange-Id: I025aa9b7028c7fc8a789e74ca0f7bcc91b583336\n"
    },
    {
      "commit": "3048485165ef692c77b30330054aaf299834fcba",
      "tree": "4dd16699101068dd74412565a232452c2ea7d25a",
      "parents": [
        "3b6c92f819442a56d72dc1764eb4fbc33a73ed7d"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Sep 02 18:18:39 2016 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Sep 19 19:52:38 2016 -0700"
      },
      "message": "Avoid returning decrypted data over binder\n\nUse shared memory instead\n\nb/29514618\n\nChange-Id: Iba82053f7c965c7bead816654827cbf94d3b2a9d\n"
    },
    {
      "commit": "4183d539fd9528d79d2c740769d01233b19017a1",
      "tree": "16cb45c31a56e8325c092d469c21d15517a54b6d",
      "parents": [
        "d5c8642dfba7e6465582701756f2c161aa14d9a3"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri May 20 17:19:31 2016 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri May 20 17:30:03 2016 -0700"
      },
      "message": "Fix Security Vulnerability in mediaserver\n\nCrash on new CryptoPlugin::SubSample[].  numSubSamples\nwasn\u0027t sanity checked, a malicious caller could pass\na very large number of subsamples causing the new\noperator to fail which would crash the server process.\nAdd a sanity check to numSubSamples, which is defined\nby the ISO-BMFF spec to be represented as unsigned 16\nbits.\n\nbug: 23718580\nChange-Id: I36e18e60f2515289d1873640a3408c01e40a1174\n"
    },
    {
      "commit": "47734c9509ecb472c2844cae46e2d916b9358321",
      "tree": "6b17e7f1540458e2f1abbe1c082353f920edc3df",
      "parents": [
        "20be7bf5ba6f3d4db36686d5af4316006cf9bb27",
        "98a9b2a491360c762e2ed46a9126f576693645a5"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon May 02 12:23:44 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon May 02 12:23:44 2016 -0700"
      },
      "message": "resolve merge conflicts of 98a9b2a to nyc-dev-plus-aosp\n\nChange-Id: Iae0a5cb698807d74ba28878d7ce1f69b6ba5219a\n"
    },
    {
      "commit": "090ef604f81447eab4aa0a5b45d6307482573560",
      "tree": "6eb6530aab79b1cdc543ef16650be519db449e37",
      "parents": [
        "cdf7931424583ff20a754999216041fb46287cb3"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Apr 27 10:39:54 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Apr 27 10:55:42 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings.\n\nBug: 28341362\nChange-Id: I625fbab25f16282c2ea929cd16283d9d146fa17b\n"
    },
    {
      "commit": "9ac86b3cae9a1e14b12bf97223ddde96142aae43",
      "tree": "47e31065ddbfe56deb8e9990bba2bb6a39fd979e",
      "parents": [
        "aef47bf801dcbcb88cec8426c03237c6313da1c2"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sat Jan 23 17:27:58 2016 -0800"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Tue Feb 16 22:36:37 2016 -0800"
      },
      "message": "stagefright: ICrypto: enable passing secure buffers in native_handle\n\nPreviously secure buffers were passed as opaque\nvoid * values, which no longer works since\nmediadrmserver is now a separate process from\nmediaserver.\n\nBug: 22990512\nChange-Id: I5c458ba19e78e20d1bd5a5899df0bce16f71bfd8\n"
    },
    {
      "commit": "18cb1eca504817b5b144a023ae2792d90e74c9a5",
      "tree": "4b39e8a99696709fb6d1c8197328f073cb21f66a",
      "parents": [
        "1ab2f2d0a6208ec9b6bb7e8b130efa9b70737f98"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Dec 18 11:55:22 2015 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Jan 11 17:01:07 2016 -0800"
      },
      "message": "Support AES-CBC sample encryption in MediaDrm\n\nbug:23719082\nChange-Id: I3028452f315122b65296881aed1fbf66c3ceeebc\n"
    },
    {
      "commit": "2afac0c7c42560ff5b8f133c6074b7e023279d6d",
      "tree": "f541f9d2de183b5b24c857bdf5995845b22efb2b",
      "parents": [
        "df9e6aaf716279baf0e27b99acf10005924245ed"
      ],
      "author": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Jan 07 12:13:07 2016 -0800"
      },
      "committer": {
        "name": "Wei Jia",
        "email": "wjia@google.com",
        "time": "Thu Jan 07 15:20:31 2016 -0800"
      },
      "message": "libmedia: check NULL pointer at binder receiver side.\n\nChange-Id: I464da96f3d6081dd8c3cc2fd977e2b96f5d477bb\n"
    },
    {
      "commit": "22f824feac43d5758f9a70b77f2aca840ba62c3b",
      "tree": "ddc4b6ec557aa96a5d54d6a9a48ccb240d118d3e",
      "parents": [
        "6d3f50d9c31544a3cb9ae76c9ac08f92eb83c449"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Dec 04 16:29:16 2015 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sat Dec 05 00:59:12 2015 +0000"
      },
      "message": "Fix security vulnerability in ICrypto DO NOT MERGE\n\nb/25800375\n\nChange-Id: I03c9395f7c7de4ac5813a1207452aac57aa39484\n"
    },
    {
      "commit": "bb4877d143c6c7ec9b42e3c490fed58af4f39dea",
      "tree": "2d2582f5822643fd28c20f2d35f2cc9d55da8f24",
      "parents": [
        "3f273d10817ddb2f792ae043de692efcdf1988ae"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Dec 04 16:29:16 2015 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Dec 04 16:29:16 2015 -0800"
      },
      "message": "Fix security vulnerability in ICrypto\n\nb/25800375\n\nChange-Id: I03c9395f7c7de4ac5813a1207452aac57aa39484\n"
    },
    {
      "commit": "3fd87605288d6d8e5abebadbddfa6071387fecdd",
      "tree": "04793f50cb6d958042a046c56c8ba26338dc4bb8",
      "parents": [
        "b946648cc63a4d328318b56215214ead575bc54a"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Sep 16 13:21:51 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Sep 16 15:29:58 2015 -0700"
      },
      "message": "DO NOT MERGE Fix vulnerability in mediaserver\n\nICrypto.cpp: ASLR bypass using DECRYPT IPC\n\nbug: 24074485\nChange-Id: I61cd77f0894140547f666a80526ebfe1ec3d2db6\n"
    },
    {
      "commit": "c6fc6a3ca618b0e72ee565ded2e4960797f53fa6",
      "tree": "400c0e8e818c0932d10a97308ff8f132e553e956",
      "parents": [
        "ed555d70d80964f40563d89a4e6d6a80f83f4b89"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Aug 26 20:22:39 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Thu Aug 27 15:23:03 2015 -0700"
      },
      "message": "Fix for security vulnerability in media server\n\nbug: 23540426\nChange-Id: Ifb12ac3350410a49ba7d81d1bde12822c3008cd5\n"
    },
    {
      "commit": "ed555d70d80964f40563d89a4e6d6a80f83f4b89",
      "tree": "5ba2d876caa6427dbc1ce3e3850b256d95ed797a",
      "parents": [
        "39ff8149466ee8e86c0336f706cd4dd3713f359f"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Aug 17 17:57:47 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Aug 17 17:57:47 2015 -0700"
      },
      "message": "Part of fix for libmedia OOB write anywhere\n\nClarify that decrypt destination is not a pointer for\nsecure case.\n\nb/23223325\n\nChange-Id: I642dcf790a9eb9e32175f3e0d8f040c82228e3ac\n"
    },
    {
      "commit": "ceffd8cc911bd2e685b525f838cd3d8198ab35cf",
      "tree": "8aa2467a1ce56b09aaa7725fb792d9dc551cd0d2",
      "parents": [
        "b408fa26c782c57272f11b46a235cca8c9ccb9be"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue May 05 15:09:14 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue May 05 15:09:14 2015 -0700"
      },
      "message": "Pass all DRM errors through ICrypto\n\nPreviously only the detailed messages for vendor-defined DRM\nerrors were being passed.  This change allows detailed messages\nto be passed for any DRM error, including the ones defined in\nthe framework.\n\nbug: 20857014\nChange-Id: I72aa85b31ac852fb1fb6ad0a93f3309100b52c9d\n"
    },
    {
      "commit": "1849570240443d1f75775c205fa658f7070849c6",
      "tree": "86ad28892b0e8b49c8666ad39e340234c610e709",
      "parents": [
        "2fb25c873e1a7f346bd8c7c072a85ca6a74b0e95"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Apr 10 04:10:59 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Apr 10 04:10:59 2015 -0700"
      },
      "message": "Add a method to associate MediaDrm session with MediaCrypto\n\nPreviously, to associate a MediaDrm session with MediaCrypto,\nthe MediaDrm sessionId was passed as initData to the MediaCrypto\nconstructor.  This is not ideal for two reasons: it\u0027s pretty\nobscure and you can\u0027t change the association without tearing\ndown the MediaCodec/MediaCrypto and starting all over.  Use\ncases like key rotation require being able to update the\nMediaDrm session post-construction.  This CL addresses both of\nthese issues.\n\nbug: 19570317\nChange-Id: Ieb32d04d61742fc1dee2105dd904690d44c46c7b\n"
    },
    {
      "commit": "c481b5012a5f6cf72e5e93b36f1ed4c9169916f2",
      "tree": "bbb7920204199b43cd24075d48b8fa387a43059f",
      "parents": [
        "e41b5f31148f9cfb7316295c900c7d3c695510b2"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Apr 06 18:21:05 2015 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Wed Apr 08 18:33:59 2015 -0700"
      },
      "message": "Pass crypto source data using a shared buffer\n\nMediaCodec was using a binder transaction buffer\nto pass encryption source data for protected content.\nOn some 4K content, the max binder transaction buffer\nsize was being exceeded.  This change uses a shared\nbuffer for the encryption source data instead of a\nbinder transaction buffer, which avoids the problem and\nmay be more efficient.\n\nbug: 20027687\nChange-Id: I36a24ebf600d7e1064b78e48b167fdc29b2c65e9\n"
    },
    {
      "commit": "2514d080c8a54ff603a45d7e336de668fe7329db",
      "tree": "c02e8521f99240935f7c672c9d79846addd785cb",
      "parents": [
        "3c1285e8f86bd497e14c14fb6df7b42072ef52bd"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Nov 03 13:29:35 2014 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Nov 03 18:39:23 2014 -0800"
      },
      "message": "Pass resolution to Crypto plugin on format change\n\nChange-Id: I56cd557ce3525fe625db8c312d2557d3c8b51101\nrelated-to-bug: 16034599\n"
    },
    {
      "commit": "bcca9e072c1f288a53ce6862936f57dc36488f96",
      "tree": "d705cbf92c0385ee82a2626e7bc8003df4fd6768",
      "parents": [
        "1a93f0cbb99fc5a59c92bd913f29409022ae236d"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Mon Jun 09 15:51:38 2014 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Jun 10 13:09:46 2014 -0700"
      },
      "message": "Remove dependency on Parcel::{read,write}IntPtr\n\nbug: 15424960\nbug: 15107693\n\nChange-Id: Ic3bf37f591e620985c37f345f9a5544fd20ec4a1\n"
    },
    {
      "commit": "bafb682ec7f51486e751fea954169deb91846063",
      "tree": "88d3be30ac8e26843929fcda2fb3d2535c313ea4",
      "parents": [
        "9e36b5a5c630c303b5007fdeb5c0df83b953adf4"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Mar 22 15:26:39 2013 -0700"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Fri Mar 22 15:26:39 2013 -0700"
      },
      "message": "Load crypto plugins from additional shared libraries\n\nCurrently crypto plugins are expected to be in libdrmdecrypt.so.\nWhen there are multiple plugins supporting different schemes,\nthis approach requires source code integration across\nvendors which is unmanagable.  Also, for integration with\nMediaDrm where the crypto keys are obtained from a drm server,\nthe MediaCrypto plugin needs to interoperate with the MediaDrm\nplugin. This change allows {MediaCrypto, MediaDrm} pairs that\nare logically related to be implemented in a common shared\nlibrary.\n\nChange-Id: I7f6638f29171f91609fc2d944396365568630b56\n"
    },
    {
      "commit": "fa2b8f243eb048fb2b8e5a14356190f69eb31a36",
      "tree": "d54232d4c61bf767677bcee2373069c4969301c1",
      "parents": [
        "4221e2813f7a307936036e62b6a63bbda23005ee"
      ],
      "author": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Tue Jul 10 20:01:13 2012 -0700"
      },
      "committer": {
        "name": "Edwin Wong",
        "email": "edwinwong@google.com",
        "time": "Fri Jul 13 13:05:56 2012 -0700"
      },
      "message": "Fixed sample video corrupted in MediaCodec mode.\n\nChange-Id: I50c5660072d40f6e297e58fd026ea04c89d6a70a\nrelated-to-bug: 6732061\n"
    },
    {
      "commit": "5b8987e7de9d04b09153f329c680d2316cdb44ec",
      "tree": "2b08e1f8abd0d4b869ce8923b1462530b916a7eb",
      "parents": [
        "fd9e14bc28f377065e43ec6833d754ca151b3941"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 12:52:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Apr 19 12:53:59 2012 -0700"
      },
      "message": "Allow propagation of error information and description from the CryptoPlugin to\n\nthe higher layers.\n\nChange-Id: I9f434ad55cdf575803c208bedf47b607baff2330\nrelated-to-bug: 6365261\n"
    },
    {
      "commit": "705868c0f2a6e85a39addefe4db9f2130627c219",
      "tree": "bf8bc411b75def4b2a70589290cb3343bf8189e8",
      "parents": [
        "e5becb51c64cb8a3f6bbd8a417f54510567f37dd"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 11 15:41:45 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Apr 11 15:41:45 2012 -0700"
      },
      "message": "Make it possible to pass empty opaque data as (NULL, 0) to ICrypto.\n\nChange-Id: Ifee1744890b645e008c9aff3783625a7bfbcff27\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "4b75a9c8b93a90749bc5d22912ad0d96c12f4ecf",
      "tree": "ae217f5c50a37349dce944c5d8a065a8740c88a9",
      "parents": [
        "3f502bfc6d04d08369cf147284c5c4c2ac7c9a0e"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 06 11:06:28 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Apr 06 12:16:27 2012 -0700"
      },
      "message": "New API to support submitting encrypted buffers to the decoder.\n\nChange-Id: I69dd60e43078c4211c6123cf6e0ce90e676bf873\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "1bd139a2a68690e80398b70b27ca59550fea0e65",
      "tree": "e3be78f22aa021c4e372409128775c2093d46dae",
      "parents": [
        "d22da88fd555f1262357c7dcdeface8445e3a012"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 03 14:19:20 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Apr 03 14:19:20 2012 -0700"
      },
      "message": "New Crypto services talking to the new crypto \"HAL\".\n\nChange-Id: I69ed31e7a8b4d69d1209d2d516f94d258f072566\nrelated-to-bug: 6275919\n"
    },
    {
      "commit": "ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6",
      "tree": "99d5bb3a2f48f9a3ba3eaaf17e630b589e97bef1",
      "parents": [
        "cc1110dc92e53e9cc0afbb043e6ef8295bd9c5d5"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:13:27 2012 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Mar 26 11:24:04 2012 -0700"
      },
      "message": "Provisional support for secure decryption of media streams.\n\nChange-Id: Ib3982a9c960bfdb0cb7e1b174440b141b194cfbe\n"
    }
  ]
}
