)]}'
{
  "log": [
    {
      "commit": "9db8f2bc8758432b5d7ae5975e14311dc1601ebe",
      "tree": "f47e2ce76ff58b06d06f8467238efc737ed57cab",
      "parents": [
        "98115b7494a96dd0b8e6ece7ff5e50704038c906"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Tue Jul 20 15:43:37 2021 +0100"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Tue Jul 27 13:00:23 2021 +0100"
      },
      "message": "Fix GWP hooks not being restored, leading to crashes.\n\nIf the DispatchReset fails, the subsequent iteration has the wrong\nidea of what the \"original\" table is, and if a subsequent DispatchReset\nsucceeds it unhooks them.\n\nRepro in https://r.android.com/1767868.\n\nBug: 193012939\nBug: 189776979\nChange-Id: Ie0644412291d3b53dcf89cdd056e542d32822975\n"
    },
    {
      "commit": "2ef1cd3f4430d344d88f1275b850119dc963cfa1",
      "tree": "681b4b52627e62b5d9bcb1d4b868ec9eb32db2ae",
      "parents": [
        "7332139c65ef2361f2e9c90f4cff386cf4735b65",
        "48bf46b968c37cbd76ecd33c98c0f163134beadf"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 02 17:58:43 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 02 17:58:43 2021 +0000"
      },
      "message": "Merge \"Allow the kernel to upgrade ASYNC mode processes to SYNC mode.\""
    },
    {
      "commit": "48bf46b968c37cbd76ecd33c98c0f163134beadf",
      "tree": "9990b32772203f1424eb4360bc8c814c9587609a",
      "parents": [
        "921b3a4642c2d24e7580ae542ff10e0319a2453d"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Jul 01 15:16:40 2021 -0700"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Jul 01 15:39:32 2021 -0700"
      },
      "message": "Allow the kernel to upgrade ASYNC mode processes to SYNC mode.\n\nOn devices where the performance of ASYNC mode is similar to SYNC\nmode on certain CPUs, OEMs may choose to configure the kernel to\nprefer SYNC mode on those CPUs by writing the value \"sync\" to the\nsysfs node: /sys/devices/system/cpu/cpu\u003cN\u003e/mte_tcf_preferred\n\nThe kernel will only respect the per-CPU preference if the user program\nallows this by specifying the preferred mode as a member of a set of\nallowed modes. Since only kernels with r.android.com/1754670 support\nspecifying multiple modes, fall back to trying to specify a single\nmode if that doesn\u0027t work.\n\nBug: 189966263\nChange-Id: Ie7ada3b073178b7967f0819cbdadc2d8e3a2c648\n"
    },
    {
      "commit": "79dbdc3c22d924540c86ed4ea5a7a6945392760b",
      "tree": "75b1760093a436b58f804a0a7535e0d94d740e4c",
      "parents": [
        "58679c8d6aefb9ce7663665cbc1a676a0a976139"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 25 09:16:18 2021 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 25 09:16:18 2021 -0700"
      },
      "message": "Document more clearly that we don\u0027t plan on using faccessat2(2).\n\nTest: treehugger\nChange-Id: Idea76ab97865bf26c1f6b16200ba2c7d1fe50ee8\n"
    },
    {
      "commit": "be1c01328082b2dcde5c5ef022db0decddb6e1f5",
      "tree": "dcfde44bbdabd6314c5717a4b3d3fe26e341743f",
      "parents": [
        "33b86cc6c1f98b0f13adbc47e878227bb6924123",
        "26d83ba7abcbfa725794c144411214d16f64b75a"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Wed Jun 09 01:14:29 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 09 01:14:29 2021 +0000"
      },
      "message": "Merge \"Disable return PAC in __pthread_start.\""
    },
    {
      "commit": "26d83ba7abcbfa725794c144411214d16f64b75a",
      "tree": "8195cbabb3da6b6bfb4c59072b5e9fc47ceb120b",
      "parents": [
        "921b3a4642c2d24e7580ae542ff10e0319a2453d"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Jun 04 14:35:13 2021 -0700"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Jun 08 16:03:41 2021 -0700"
      },
      "message": "Disable return PAC in __pthread_start.\n\nThis function doesn\u0027t return, but it does appear in stack traces. Avoid\nusing return PAC in this function because we may end up resetting IA,\nwhich may confuse unwinders due to mismatching keys.\n\nBug: 189808795\nChange-Id: I953da9078acd1d43eb7a47fb11f75caa0099fa12\n"
    },
    {
      "commit": "85c7838bd9cb40949c08d957499357547c7cd687",
      "tree": "15d12ca61ac831cde7292077d09fc70747e83e34",
      "parents": [
        "64be12fbc964bfe0247f69e5c00249f8043d480d"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Wed Jun 02 14:43:29 2021 +0100"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Wed Jun 02 14:48:53 2021 +0100"
      },
      "message": "Fix dangling pointer in heapprofd API.\n\nWe would dlopen heapprofd_client.so, which has a static initializer [1]\nthat passes a pointer to of its functions to heapprofd_client_api.so.\nIf we dlclose heapprofd_client.so, this pointer is dangling.\n\n[1]: https://cs.android.com/android/platform/superproject/+/master:external/perfetto/src/profiling/memory/malloc_interceptor_bionic_hooks.cc?q\u003dsymbol:g_heap_id\n\nBug: 189332777\nChange-Id: Ia4a9d9dd7c89eceec86c6fac5f4b66de85d7604e\n"
    },
    {
      "commit": "5a7f3ef9a8ac3f4548a4739df9910d0905691b98",
      "tree": "8906311572b91744fc3446ec660e0a7bc313eaec",
      "parents": [
        "48166a4eaf2f845d5377ed8869cb87d81fc01121"
      ],
      "author": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Fri Apr 30 15:52:27 2021 +0200"
      },
      "committer": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Fri Apr 30 15:52:27 2021 +0200"
      },
      "message": "Enable RTM_GETLINK restrictions on all apps\n\nExtend existing restrictions targeting only apps with API level \u003e\u003d 30 to\nall apps.\n\nActual enforcement happens in SELinux. This change just prevents\nlogspam.\n\nTo be merged when automerge to sc-dev ends.\n\nBug: 170188668\nTest: atest bionic-unit-tests-static\nTest: atest NetworkInterfaceTest\nTest: Connect to Wi-Fi network\nTest: atest CtsSelinuxTargetSdk27TestCases\nTest: atest CtsSelinuxTargetSdk28TestCasesTest: atest\nCtsSelinuxTargetSdk29TestCases\nTest: atest CtsSelinuxTargetSdkCurrentTestCases\n\nChange-Id: If1761354216b23a1e55e6b9606de452899afff0c\n"
    },
    {
      "commit": "dcbacd676f302e94f2d8e571f195d0492c686457",
      "tree": "9508b4b0d735fed76adb303a1f52891494fc57ea",
      "parents": [
        "9cf8871dd98bf69fe46bba056fa05c3c6bf2222d"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Apr 22 12:13:40 2021 -0700"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Apr 22 12:17:01 2021 -0700"
      },
      "message": "Avoid prctl(PR_PAC_RESET_KEYS) on devices without PAC support.\n\nProcesses loaded from vendor partitions may have their own sandboxes\nthat would reject the prctl. Because no devices launched with PAC\nenabled before S, we can avoid issues on upgrading devices by checking\nfor PAC support before issuing the prctl.\n\nBug: 186117046\nChange-Id: I9905b963df01c9007d9fb4527273062ea87a5075\n"
    },
    {
      "commit": "f2bb4e6cec9f28bf2ac849696c2fb66a4ba4d2d1",
      "tree": "33ca80709fab8b881b4bcc10dc3cea7bb083e2ca",
      "parents": [
        "44ec9c325235b73ba2ca1bc4b57fb1352c534849",
        "bca8a4474b6110b34e31ed80b1bdf481ba41d208"
      ],
      "author": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Fri Apr 09 07:56:36 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 09 07:56:36 2021 +0000"
      },
      "message": "Merge \"Revert \"Reland: Soft-enable MAC address restrictions with allowlist.\"\""
    },
    {
      "commit": "44ec9c325235b73ba2ca1bc4b57fb1352c534849",
      "tree": "0907d60fdc6fbec6c0916725d597ebd473c8838e",
      "parents": [
        "7d06b37270124ef734fa918cd5141827dd9f87a6",
        "dcc97c0887c57844c832f4497866320697811e88"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Apr 09 01:08:52 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 09 01:08:52 2021 +0000"
      },
      "message": "Merge \"Disable fdtrack post-fork.\""
    },
    {
      "commit": "bca8a4474b6110b34e31ed80b1bdf481ba41d208",
      "tree": "786ecbadea86186821e63900905becf8ae9cde53",
      "parents": [
        "99d11ebe83b38837990bb485247d80a5d8659f10"
      ],
      "author": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Thu Apr 08 09:34:36 2021 +0000"
      },
      "committer": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Thu Apr 08 11:39:33 2021 +0200"
      },
      "message": "Revert \"Reland: Soft-enable MAC address restrictions with allowlist.\"\n\nRevert \"Updates CTS tests for MAC address restrictions.\"\n\nRevert submission 1528409-mac-softrestrict\n\nReason for revert: App compatibility\nReverted Changes:\nI74a50b990:Return anonymized MAC for apps targeting SDK \u003c 30\nI8738f7912:Reland: Soft-enable MAC address restrictions with ...\nId13670747:Updates CTS tests for MAC address restrictions.\n\nChange-Id: I64e17cb04acf2862bc657e60694067a456b4f936\n"
    },
    {
      "commit": "dcc97c0887c57844c832f4497866320697811e88",
      "tree": "6f15dcf66c1b9b4b5e6e6d4b7642f555bf2a6ee6",
      "parents": [
        "87a205eefa2e12597f6d7a05db05fefbe498a292"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Dec 09 14:01:13 2020 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 07 19:00:45 2021 -0700"
      },
      "message": "Disable fdtrack post-fork.\n\nAlso delete some fdsan code that attempts to check for the post-fork\nstate, but never will, because we update the cached pid upon fork.\n\nBug: http://b/174542867\nTest: /data/nativetest64/bionic-unit-tests/bionic-unit-tests\nTest: treehugger\nChange-Id: I9b748dac9de9b4c741897d93e64d31737e52bf8e\n"
    },
    {
      "commit": "2b9719e3612149aa0a2124e135bc8ed2d5b911dd",
      "tree": "9402bf2f36482396b2ee0a1548c9b1d589658b91",
      "parents": [
        "e71143e8c0016137a5fe005d7c39fbb03922f1f4",
        "811d180e892f757d052cf9d6c6b7494a8c4a8c2f"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Apr 06 23:02:29 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 06 23:02:29 2021 +0000"
      },
      "message": "Merge \"Reset PAC keys on thread creation instead of on zygote fork.\""
    },
    {
      "commit": "811d180e892f757d052cf9d6c6b7494a8c4a8c2f",
      "tree": "538306b08c5a363558c49c103266d6eeec62b2a7",
      "parents": [
        "eb33b5b7a8852003756fcd645c238dae193410d6"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Mar 25 11:46:44 2021 -0700"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Mar 25 14:07:33 2021 -0700"
      },
      "message": "Reset PAC keys on thread creation instead of on zygote fork.\n\nResetting PAC keys on fork appears to lead to a number of problems. One\nproblem is that we are constrained in where we can run C++ code after\nforking, and with ART those places are implementation-defined. For\nexample, in app zygotes, ART turns out to insert \"interpreter frames\"\nin the stack trace. Returning into these interpreter frames may lead\nto crashes due to failing the ROP protection check on return.\n\nIt seems better to reset keys on thread creation instead. We only need\nto reset IA because only this key needs to be reset for reverse-edge\nPAC, and resetting the other keys may be incompatible with future ABIs.\n\nChrome (and potentially other applications) has a sandbox that prevents\nthe use of the prctl, so we restrict its use to applications targeting\nS and above.\n\nBug: 183024045\nChange-Id: I1e6502a7d7df319d424e2b0f653aad9a343ae71b\n"
    },
    {
      "commit": "13a761032f251f3b7b29df208320bc322addd95c",
      "tree": "d25bbe4c2a5252d5cfbd6818ffea2695683f6242",
      "parents": [
        "eb33b5b7a8852003756fcd645c238dae193410d6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 16 16:19:16 2021 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 16 16:20:38 2021 -0700"
      },
      "message": "scandir: remove dead code.\n\nThis is the second or third time I\u0027ve scratched my head wondering why\nthis destructor has no coverage. I was tempted to leave it in with a\ncomment saying it should never be called, but that seemed sillier than\njust replacing it with an assertion.\n\nTest: treehugger\nChange-Id: I3442d9f8a391fae668e77c6888a4457ededee494\n"
    },
    {
      "commit": "03e961e392b5d0761eb604ef2d8e9e8387ff40c9",
      "tree": "1bafe08951b9b918ceb523b046e5d53a3dd19063",
      "parents": [
        "6d8515ffd0551d17c056678222a4a27a5541517c",
        "2753fc8ee5668b05a94dc3bc029ab9c67bc1af5a"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Mar 11 01:15:49 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 11 01:15:49 2021 +0000"
      },
      "message": "Merge \"Teach debuggerd to pass the secondary ring buffer to __scudo_get_error_info().\""
    },
    {
      "commit": "6ba27e04dff8ddf9573ded7a176052aff5273ebd",
      "tree": "6c6eabfdde44037e96f5dfaafef3e1b1ea3574d4",
      "parents": [
        "9f46c9e2919dfe0c936e659eb8d247541c6f009a",
        "2659d7b6c221402b9fc58709fdab4d0790c47b4f"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Mar 09 01:15:54 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 09 01:15:54 2021 +0000"
      },
      "message": "Merge \"Add some slack at the end of large allocations when target SDK level \u003c S.\""
    },
    {
      "commit": "b82f5cfeb2a88bdfcb8d2b27c8183c163e9d3bd8",
      "tree": "72e8cd929bd89c6ce8b79ca39168a44343ff4a92",
      "parents": [
        "1ef8d418be8e4630125c599b0af5c1ec96a512d3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 08 14:09:43 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 08 14:09:43 2021 -0800"
      },
      "message": "Improve \u003csys/xattr.h\u003e coverage.\n\nAlso fix a comment copy \u0026 paste mistake and some formatting.\n\nTest: treehugger\nChange-Id: I0af3ab2eb4f180f86b0ab7d2af260f0f30692fdd\n"
    },
    {
      "commit": "2659d7b6c221402b9fc58709fdab4d0790c47b4f",
      "tree": "35a268ac00847c20d5f109a10f75a44703dfe695",
      "parents": [
        "15ade069b10f7f5291e48c01db2da4852dae04b7"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Mar 05 13:31:41 2021 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Mar 05 14:29:17 2021 -0800"
      },
      "message": "Add some slack at the end of large allocations when target SDK level \u003c S.\n\nThis works around buggy applications that read a few bytes past the\nend of their allocation, which would otherwise cause a segfault with\nthe concurrent Scudo change that aligns large allocations to the right.\n\nBecause the implementation of\nandroid_set_application_target_sdk_version() lives in the linker,\nwe need to introduce a hook so that libc is notified when the target\nSDK version changes.\n\nBug: 181344545\nChange-Id: Id4be6645b94fad3f64ae48afd16c0154f1de448f\n"
    },
    {
      "commit": "f443817ab6ff8d280d4c0c852891c1d3cfceb08a",
      "tree": "6084d79aaf6064c26c531876dd6d360d31441986",
      "parents": [
        "d407d2f32914979d36f8850a73b83d9aaff79d1c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 03 14:31:35 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 03 14:31:35 2021 -0800"
      },
      "message": "Remove unused (and empty) file.\n\nSpotted while looking at our shiny new coverage numbers. Though how the\nchange that removed the code from this file without removing the file\nmade it through code review... Clearly I wasn\u0027t paying attention that\nday!\n\nTest: treehugger\nChange-Id: Id61bb48bae60660d2e5ba9b26f00a68e51157c6d\n"
    },
    {
      "commit": "974721431d8263da01de63bb61f797eda272ab32",
      "tree": "2338d2e7e9f6b1cad16aaa14ce2c821fd365b3de",
      "parents": [
        "dddf75f9904d634db29adf15a2ceb63880db2cb0",
        "3de19151e508e14654a2d3204d9981c514f1c93a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Mar 01 21:06:17 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 01 21:06:17 2021 +0000"
      },
      "message": "Merge \"Add wrappers for pidfd_{open,getfd,send_signal}.\""
    },
    {
      "commit": "dddf75f9904d634db29adf15a2ceb63880db2cb0",
      "tree": "153e6678f79b514ecbbc3e9dbc7b40874eecf08d",
      "parents": [
        "47b5c5d752a45c9d8e8b28aef5d4c121744b4685",
        "82c3d89758dab4780e909f165d45e90a0a3b3f3a"
      ],
      "author": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Fri Feb 26 16:42:37 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 26 16:42:37 2021 +0000"
      },
      "message": "Merge \"Add additional app to netlink appcompat allowlist.\""
    },
    {
      "commit": "82c3d89758dab4780e909f165d45e90a0a3b3f3a",
      "tree": "c387a1f7c79d5eb1de2552b997646a59f62fc0c6",
      "parents": [
        "14851abce9d6b46140760d9e73c43a8b045bc24e"
      ],
      "author": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Fri Feb 26 13:08:43 2021 +0100"
      },
      "committer": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Fri Feb 26 13:26:21 2021 +0000"
      },
      "message": "Add additional app to netlink appcompat allowlist.\n\nBug: 180726036\nTest: Confirm app no longer errors at start\nChange-Id: I9f1c99a13bbfb8dbdf977d52c67a64d400fd9821\n"
    },
    {
      "commit": "3de19151e508e14654a2d3204d9981c514f1c93a",
      "tree": "0b3131941af3ac9b58af130097a92774d1cdcd0b",
      "parents": [
        "14851abce9d6b46140760d9e73c43a8b045bc24e"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Feb 22 18:09:48 2021 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Feb 25 13:55:12 2021 -0800"
      },
      "message": "Add wrappers for pidfd_{open,getfd,send_signal}.\n\nBug: http://b/172518739\nTest: `/data/nativetest64/bionic-unit-tests/bionic-unit-tests --gtest_filter\u003d\"*pidfd*\"` on blueline\nChange-Id: Ibae32bbedbcf26535a80a5cbfb55ce180906b610\n"
    },
    {
      "commit": "6161970fa29ea6792f4f2922c010e6adcb50243d",
      "tree": "3e08a027ab7b96cc71ae8c9b466eb5887f774f79",
      "parents": [
        "14851abce9d6b46140760d9e73c43a8b045bc24e",
        "bf917866f530ffdce19df1e1fe4c7b258c27a15e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 24 00:26:50 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 24 00:26:50 2021 +0000"
      },
      "message": "Merge \"Make __libc_init_scudo() weak for native bridge.\""
    },
    {
      "commit": "bf917866f530ffdce19df1e1fe4c7b258c27a15e",
      "tree": "8634f1f5b06ef0cc2e88d0a1555c777cd208d3c1",
      "parents": [
        "15ade069b10f7f5291e48c01db2da4852dae04b7"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Feb 23 13:18:03 2021 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Feb 23 13:18:03 2021 -0800"
      },
      "message": "Make __libc_init_scudo() weak for native bridge.\n\n__libc_init_scudo() calls directly into the allocator, bypassing the\nnormal guest to host transition in the native bridge. Therefore we\nneed to let the native bridge override it with a no-op.\n\nBug: 159352723\nChange-Id: I642c7a058e483cc09335290f66b9c053150fca06\n"
    },
    {
      "commit": "20c023fdb26fabdec1d49e36eefd62efe9c6ef8b",
      "tree": "40cbf48da639b1586a6bb8bddace0c90189184e2",
      "parents": [
        "ef0ec82684ea52ee3a13db8df9103ca314ea17aa"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 18 10:37:22 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 18 10:37:22 2021 -0800"
      },
      "message": "iconv(3): ignore src_bytes_left if src_bytes is null.\n\nThis is undefined behavior, but glibc and macOS are both lenient, and\nsomeone hit this in the wild, so we may as well be lenient too. (The\nonly cost is that it\u0027s now slightly easier to write code that works on\neverything except old versions of Android.)\n\nBug: https://issuetracker.google.com/180598400\nTest: treehugger\nChange-Id: Ia217169ea6283cc53f4fbf71e5abfa08356c2049\n"
    },
    {
      "commit": "2753fc8ee5668b05a94dc3bc029ab9c67bc1af5a",
      "tree": "32fff96bab2a62f23540a1b63334fa8496191ff6",
      "parents": [
        "15ade069b10f7f5291e48c01db2da4852dae04b7"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Wed Jan 06 21:02:19 2021 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Feb 12 12:30:52 2021 -0800"
      },
      "message": "Teach debuggerd to pass the secondary ring buffer to __scudo_get_error_info().\n\nWith this change we can report memory errors involving secondary\nallocations. Update the existing crasher tests to also test\nUAF/overflow/underflow on allocations with sizes sufficient to trigger\nthe secondary allocator.\n\nBug: 135772972\nChange-Id: Ic8925c1f18621a8f272e26d5630e5d11d6d34d38\n"
    },
    {
      "commit": "bfa368860619279b606c316487f7d40e99e18601",
      "tree": "c2efcded7667306680284efaf774fa1814ed8ab7",
      "parents": [
        "d8154a813d745ab23adf0414d31325de6b962926",
        "9cad8424ff7b0fa63b53cb9919eae31539b8561a"
      ],
      "author": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Mon Feb 01 23:32:24 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 01 23:32:24 2021 +0000"
      },
      "message": "Merge \"[MemInit] Remove old API, introduce new MemInit API.\""
    },
    {
      "commit": "9cad8424ff7b0fa63b53cb9919eae31539b8561a",
      "tree": "f7998255ede5ce02dc6406f7e40f9ac70b4c37ed",
      "parents": [
        "d65b31fad659b806401201adb3cd1dcbf38e61e3"
      ],
      "author": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Wed Jan 20 16:03:27 2021 -0800"
      },
      "committer": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Mon Jan 25 15:19:31 2021 -0800"
      },
      "message": "[MemInit] Remove old API, introduce new MemInit API.\n\nIntroduces new heap-zero-init API. We\u0027ve realised that it\u0027s better to be\nable to individually control MTE and heap zero-init. Having\nheap-zero-init not be controllable without affecting MTE affects our\nability to turn off heap-zero-init in zygote-forked applications.\n\nBug: 135772972\nTest: On FVP: atest -s localhost:5555 malloc#zero_init \\\nTest: malloc#disable_mte heap_tagging_level\nChange-Id: I8c6722502733259934c699f4f1269eaf1641a09f\n"
    },
    {
      "commit": "347b01b58324516941b338614dec33cc59c6e018",
      "tree": "b67214d52098360a8ac78e3056bf32654cf19aa2",
      "parents": [
        "d65b31fad659b806401201adb3cd1dcbf38e61e3"
      ],
      "author": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Wed Jan 20 11:25:11 2021 -0800"
      },
      "committer": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Wed Jan 20 12:45:07 2021 -0800"
      },
      "message": "[MTE] Change scudo init order to get correct PROT_MTE pages.\n\nscudo_malloc_* for fill contents in __libc_init_scudo calls scudo\u0027s\ninitializers. We haven\u0027t told Scudo whether we want MTE-capable (i.e.\nmapped with PROT_MTE) size class regions yet, which happens in\nSetDefaultHeapTaggingLevel. This can lead to inconsistent mappings,\nwhere processes without ELF notes get the base region with PROT_MTE\n(which is undesirable because the performance implications are not\nknown).\n\nMake sure that scudo is informed of whether regions need to be mapped\nPROT_MTE or not by hoising the tagging level up.\n\nBug: 135772972\nBug: 172365548\nTest: On FVP - \u0027adb shell MEMTAG_OPTIONS\u003doff sanitizer-status\u0027 should\nhave no PROT_MTE mappings (validation by looking for no \u0027mt\u0027 under\n\u0027VmFlags:\u0027 in /proc/smaps\u0027).\n\nChange-Id: Idad64479c4a9459cb40dd211fe942437f8ca16fd\n"
    },
    {
      "commit": "73366636e1b516dceaef72999b2401a76eb8f41e",
      "tree": "b05330d1dc03000e77adeb97aa71daffe847d8e8",
      "parents": [
        "9f72aae9e33f2a2b30de0b666c164d3ce1edb9f3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 15 18:08:25 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 15 18:08:25 2021 -0800"
      },
      "message": "Remove the now-unnecessary android_mallopt() options.\n\nThese are available from mallopt() now, and all callers have been\nswitched over.\n\nBug: http://b/135772972\nTest: treehugger\nChange-Id: I90c7a7573b261c27001a2dfd4589b23861ad613b\n"
    },
    {
      "commit": "e925485acdfdbef0894bf26e1d0595002b83c696",
      "tree": "4849947e9733fa1fbb97686ea77ed18eda47b3ee",
      "parents": [
        "caf32c7697a444a49457619b86d87e265d14971b",
        "446b4dde724ee64a336a78188c3c9a15aebca87c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 15 00:49:45 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 15 00:49:45 2021 +0000"
      },
      "message": "Merge \"Make \"disable memory mitigations\" and \"set heap tagging level\" more available.\""
    },
    {
      "commit": "446b4dde724ee64a336a78188c3c9a15aebca87c",
      "tree": "4a91430432ee114aa75a82cc8c29e049ee7cce8b",
      "parents": [
        "b4fd07297606de111c10d0f9a000fdb1e2280387"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 14 13:34:20 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 14 13:34:20 2021 -0800"
      },
      "message": "Make \"disable memory mitigations\" and \"set heap tagging level\" more available.\n\nThese were only available internally via android_mallopt(), but they\u0027re\nlikely to be needed by more code in future, so move them into mallopt().\n\nThis change leaves the android_mallopt() options for now, but I plan on\ncoming back to remove them after I\u0027ve switched the handful of callers\nover to mallopt() instead.\n\nBug: http://b/135772972\nTest: treehugger\nChange-Id: Ia154614069a7623c6aca85975a91e6a156f04759\n"
    },
    {
      "commit": "4cded9729ba95ffe1549cd4efeed49edde250da1",
      "tree": "312cb10416da627077db6591654ded5dd7bae0bd",
      "parents": [
        "b1ba762e34850582a1156ac56d280c8ce1980b28"
      ],
      "author": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Thu Jan 07 17:32:00 2021 -0800"
      },
      "committer": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Thu Jan 14 13:13:17 2021 -0800"
      },
      "message": "[MTE] Add MEMTAG_OPTIONS and arm64.memtag.process.* sysprop parsing.\n\nThese two options allow for ARM MTE to be enabled dynamically (instead\nof at compile time via the ELF note). They are settable from a non-root\nshell to allow device owners to test system binaries with MTE.\n\nThe following values may be set:\n  1. \u0027off\u0027 -\u003e No MTE, uses TBI on compatible devices.\n  2. \u0027sync\u0027 -\u003e SYNC MTE.\n  3. \u0027async\u0027 -\u003e ASYNC MTE.\n\nThe following methods can be used to launch a process (sanitizer-status)\nwith configurable values:\n  1. adb shell MEMTAG_OPTIONS\u003dasync sanitizer-status\n  2. adb shell setprop arm64.memtag.process.sanitizer-status async \u0026\u0026 \\\n     adb shell sanitizer-status\n\nNote: The system server will require some special handing in the zygote\npre-fork to check the sysprops. The zygote should always have the ELF\nnote. TODO in a subsequent patch.\n\nBug: 135772972\nBug: 172365548\nTest: Launching sanitizer-status above using both the settings.\nChange-Id: Ic1dbf3985a3f23521ec86725ec482c8f6739c182\n"
    },
    {
      "commit": "b1ba762e34850582a1156ac56d280c8ce1980b28",
      "tree": "de44db41b56528dbed9fc07329cac817143c55f8",
      "parents": [
        "4e67866510aa27445e9d699ed40d55163b66e95f",
        "e1dc4f62eb0475244f69b04f77eeaba18ea179a8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 11 21:50:40 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 11 21:50:40 2021 +0000"
      },
      "message": "Merge \"Fewer copies of ALIGN()/ALIGNBYTES.\""
    },
    {
      "commit": "4e67866510aa27445e9d699ed40d55163b66e95f",
      "tree": "be29d3005912db1337ccaeec0ec31de976483f01",
      "parents": [
        "08959d98b1d695ba00b683b6d473f20a7daac0ff",
        "7e20117a36c6cf7d3fbdee9b2ed4426c72185346"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Mon Jan 11 20:42:44 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 11 20:42:44 2021 +0000"
      },
      "message": "Merge \"Remove ANDROID_EXPERIMENTAL_MTE.\""
    },
    {
      "commit": "e1dc4f62eb0475244f69b04f77eeaba18ea179a8",
      "tree": "cf222070f5e73bd961aa20f8e7350443f12e55d8",
      "parents": [
        "08959d98b1d695ba00b683b6d473f20a7daac0ff"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 11 11:51:29 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 11 11:51:29 2021 -0800"
      },
      "message": "Fewer copies of ALIGN()/ALIGNBYTES.\n\nNoticed while updating fts.c.\n\nBug: http://b/177003648\nTest: treehugger\nChange-Id: Ic3625c1c3af47c4dafb8ad686bbbddbc82b69b70\n"
    },
    {
      "commit": "08959d98b1d695ba00b683b6d473f20a7daac0ff",
      "tree": "0a858a46d14d801fd1891f26721f15e9ec91df1f",
      "parents": [
        "b19fc79350aef43afc7b8370aa67eb5211fb6cf5",
        "03ac158cabd53d15ebfc7699b2a789f4d00db29a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 11 19:19:22 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 11 19:19:22 2021 +0000"
      },
      "message": "Merge \"Sync upstream fts.c.\""
    },
    {
      "commit": "7e20117a36c6cf7d3fbdee9b2ed4426c72185346",
      "tree": "100f96c73a64901a062ec4e0519bc278c2034827",
      "parents": [
        "e09fc24a94c1a196b8930f8f26c6f5f8c1a47d06"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Mon Dec 21 14:08:38 2020 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Mon Jan 11 10:55:51 2021 -0800"
      },
      "message": "Remove ANDROID_EXPERIMENTAL_MTE.\n\nNow that the feature guarded by this flag has landed in Linux 5.10\nwe no longer need the flag, so we can remove it.\n\nBug: 135772972\nChange-Id: I02fa50848cbd0486c23c8a229bb8f1ab5dd5a56f\n"
    },
    {
      "commit": "03ac158cabd53d15ebfc7699b2a789f4d00db29a",
      "tree": "57551ae352a90b157ded66ae2fc79ae1d0707a6b",
      "parents": [
        "771af5efc6954f7dfb1420328faeef961378c196"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 08 14:19:27 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 11 08:43:48 2021 -0800"
      },
      "message": "Sync upstream fts.c.\n\nI realize that we can probably clean up more of our half-forked code by\nreusing the same *-compat.h headers we use for the clean upstream code,\nbut I\u0027ll come back and do that later.\n\nBug: http://b/177003648\nTest: treehugger\nChange-Id: I081255aaafd62718b85956c5502911a1cc80225d\n"
    },
    {
      "commit": "b19fc79350aef43afc7b8370aa67eb5211fb6cf5",
      "tree": "2ad22469f04879ca7dc3070b6d2b803ba2273ed4",
      "parents": [
        "423351439e154e2123a391cda336a8ecf6ceefd3",
        "651f1fa509f4d113fef1424ae99bca16aac01b5f"
      ],
      "author": {
        "name": "Adam Barth",
        "email": "abarth@google.com",
        "time": "Sat Jan 09 04:33:15 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 09 04:33:15 2021 +0000"
      },
      "message": "Merge \"Make the atomic load explicit\""
    },
    {
      "commit": "5e466b63ae74f24357a3d1aa5234f68078b071a3",
      "tree": "7746cce3f2cf6878bf151271659dde9798cab348",
      "parents": [
        "bd84f549fcb6ce5fe37d9e4399421fc885043224"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jan 06 14:30:10 2021 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jan 08 17:30:37 2021 +0000"
      },
      "message": "Suppress SetHeapTaggingLevel warning under hwasan.\n\nThis is expected behavior.\n\nBug: b/135772972\nTest: logcat on any hwasan device\n\nChange-Id: I38b235859000ca271f1b1beaeab6ed6645ec6a08\n"
    },
    {
      "commit": "bd84f549fcb6ce5fe37d9e4399421fc885043224",
      "tree": "8816d5e6be62f534ca31ab3fa0025d8d07f42b7d",
      "parents": [
        "e09fc24a94c1a196b8930f8f26c6f5f8c1a47d06",
        "e9efd05fe4e57602e21f3b3969641524129bb0cb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 08 01:42:28 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 08 01:42:28 2021 +0000"
      },
      "message": "Merge \"Fix -Wnewline-eof\""
    },
    {
      "commit": "651f1fa509f4d113fef1424ae99bca16aac01b5f",
      "tree": "b474af881f127fd9156a618e01ee3ed633e72da1",
      "parents": [
        "e09fc24a94c1a196b8930f8f26c6f5f8c1a47d06"
      ],
      "author": {
        "name": "Adam Barth",
        "email": "abarth@google.com",
        "time": "Thu Jan 07 21:29:18 2021 +0000"
      },
      "committer": {
        "name": "Adam Barth",
        "email": "abarth@google.com",
        "time": "Fri Jan 08 01:21:52 2021 +0000"
      },
      "message": "Make the atomic load explicit\n\nTechnically, std::atomic does not have an operator(). Previously, this\ncode was relying on an implicit behavior of our C++ standard library in\norder to compile. When compiling this code against a different C++\nstandard library, I encountered a compiler error on these lines.\n\nThis CL makes the std::atomic load() operation explicit, makes it\nclearer what this code is actually doing and makes it conform better to\nthe C++ standard library spec rather than a particular implmentation.\n\nChange-Id: I7f255dffc0a3d8e07c973c18e9ba4098c4b5843e\n"
    },
    {
      "commit": "e9efd05fe4e57602e21f3b3969641524129bb0cb",
      "tree": "6cf839bd2091a7013ca50fa72b496dd33bb610a0",
      "parents": [
        "be77febd61bf6aca3d44969e9611854f39d91d18"
      ],
      "author": {
        "name": "Adam Barth",
        "email": "abarth@google.com",
        "time": "Thu Jan 07 21:29:08 2021 +0000"
      },
      "committer": {
        "name": "Adam Barth",
        "email": "abarth@google.com",
        "time": "Thu Jan 07 22:56:55 2021 +0000"
      },
      "message": "Fix -Wnewline-eof\n\nTechnically, C requires that all source files end with a newline. In\npractice, most compilers will accept source files without a newline, but\nit does trigger the -Wnewline-eof warning.\n\nChange-Id: I64a92b82f4d5724cd8b45821cfd59eb3de39514b\n"
    },
    {
      "commit": "e09fc24a94c1a196b8930f8f26c6f5f8c1a47d06",
      "tree": "d57d36117763936f8663395e17e51172497af7b2",
      "parents": [
        "286b3d4b8ce9506e8ee851dd124b1ec312c2c46d",
        "8564b8d9e61580bef3bd5018cf63e37c78e40053"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Jan 07 03:43:52 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 07 03:43:52 2021 +0000"
      },
      "message": "Merge \"Use ELF notes to set the desired memory tagging level.\""
    },
    {
      "commit": "8564b8d9e61580bef3bd5018cf63e37c78e40053",
      "tree": "31105008dfcd942690f7143595121c2ab5d2bde8",
      "parents": [
        "dec48bdd9ee090f3b0e3ff22dcac4689a146e8d0"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Dec 15 13:55:32 2020 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jan 06 16:08:18 2021 -0800"
      },
      "message": "Use ELF notes to set the desired memory tagging level.\n\nUse a note in executables to specify\n(none|sync|async) heap tagging level. To be extended with (heap x stack x\nglobals) in the future. A missing note disables all tagging.\n\nBug: b/135772972\nTest: bionic-unit-tests (in a future change)\n\nChange-Id: Iab145a922c7abe24cdce17323f9e0c1063cc1321\n"
    },
    {
      "commit": "be77febd61bf6aca3d44969e9611854f39d91d18",
      "tree": "f48871062146a25200cb15be785916f06732ad5f",
      "parents": [
        "5ec23f14b5c2b97490ea5d8e53d819b4c6355785",
        "8540c54b496e67cfca2723bc380b208b1f69cce1"
      ],
      "author": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Tue Jan 05 22:44:51 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 05 22:44:51 2021 +0000"
      },
      "message": "Merge \"[Tagged Pointers] Point to SAC documentation in abort message.\""
    },
    {
      "commit": "8540c54b496e67cfca2723bc380b208b1f69cce1",
      "tree": "e20e395b4b563111bd2f08a00670e30c77e0f0c8",
      "parents": [
        "d7a9e2514b716f19294046fbd389c7d021631509"
      ],
      "author": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Tue Jan 05 12:56:17 2021 -0800"
      },
      "committer": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Tue Jan 05 13:10:21 2021 -0800"
      },
      "message": "[Tagged Pointers] Point to SAC documentation in abort message.\n\n\u003cEOM\u003e\n\nTest: atest CtsTaggingHostTestCases\nBug: 145604058\nChange-Id: Ie3a77d4050e2ab99a03a119244ba75da974f251b\n"
    },
    {
      "commit": "95ca52a7d69f3bdb0df1b2f4d488f83a24e56e10",
      "tree": "dbb4ef3bdbd8c49a1446f3fea728b4e29b97b3ef",
      "parents": [
        "ac5e61fe00e0aed892abd0c5f709f9e6e3645833"
      ],
      "author": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Thu Dec 03 19:03:55 2020 +0100"
      },
      "committer": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Tue Dec 15 16:52:58 2020 +0100"
      },
      "message": "Reland: Soft-enable MAC address restrictions with allowlist.\n\nSoft-limits apps from calling bind() on NETLINK_ROUTE sockets, and\ngetting link info through getifaddrs(), while still allowing apps on the\nallowlist to temporarily perform these actions.\n\nThis is different from existing behavior, where apps targeting an API\nlevel \u003c 30 were exempted from this restriction.\n\nActual enforcement will happen through SELinux (as is currently the\ncase for apps targeting API \u003e\u003d 30). This temporary change will then be\nreverted.\n\nIf you arrived at this change due to an app showing unexpected behavior,\nplease file a bug at go/netlink-bug.\n\nBug: 170188668\nBug: 170214442\nTest: Call bind() on NETLINK_ROUTE for an app on the allowlist.\nTest: Call bind() on NETLINK_ROUTE for an app not on the allowlist.\nTest: Call getifaddrs() for an app on the allowlist.\nTest: Call getifaddrs() for an app not on the allowlist.\nTest: Call bind() on a AF_UNIX socket with its protocol set to\nNETLINK_ROUTE, confirm it can succeed.\nTest: Verify that previously broken apps are no longer broken.\n\nChange-Id: I8738f7912fdc816e0d30205557728ff9e84bf7e6\n"
    },
    {
      "commit": "9e97280414141da3aa76c2c0e185c3eb1221568d",
      "tree": "ab44c05c889a436a3c45e418297b64c0a76d8877",
      "parents": [
        "7dcea5e8e20e6635838d8a66e1ea45f233da615e"
      ],
      "author": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Mon Dec 14 14:14:23 2020 +0100"
      },
      "committer": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Mon Dec 14 14:14:23 2020 +0100"
      },
      "message": "Revert \"Soft-enable MAC address restrictions with allowlist.\"\n\nRevert \"Updates CTS tests for MAC address restrictions.\"\n\nRevert submission 1518603-soft-restrict-mac\n\nReason for revert: Missing type check\nReverted Changes:\nI0488932de:Soft-enable MAC address restrictions with allowlis...\nIdb9d940e4:Updates CTS tests for MAC address restrictions.\nI9461f287e:Return anonymized MAC for apps targeting SDK \u003c 30\n\nChange-Id: I7e8e593518088ff5c8f6083b34e6966852475b9b\n"
    },
    {
      "commit": "5c8d48ae787ad6617a256e8dfdda95870a8e5994",
      "tree": "c494dbdf3ea991ba4dc9e0d693df3aaceb670757",
      "parents": [
        "0ed9f701222c1551f608b3440ff2c201a896a1cc"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Fri Dec 11 06:54:54 2020 -0800"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Fri Dec 11 06:54:54 2020 -0800"
      },
      "message": "Remove unused \u0027err\u0027 assignment\n\nThis was a little confusing because a quick glance suggested that\n\u0027err\u0027 was getting the value of getsockopt(), when actually it was\ngetting the result of the \u0027\u003c\u0027 operation.  Since \u0027err\u0027 wasn\u0027t\nbeing used, we clarify by just removing it altogether.\n\nTest: TreeHugger\nChange-Id: I1ff80812b460973e9d512a558623e0c44c2ecf09\n"
    },
    {
      "commit": "0ed9f701222c1551f608b3440ff2c201a896a1cc",
      "tree": "7553febf1176838185d3d99a5512cce2965a087e",
      "parents": [
        "a8eff56a8c625fe4cc8b70e705d7c4acbc5641e9",
        "0ba499896a6f1c86f48f2a0b2e596df6ecbb2b2e"
      ],
      "author": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Fri Dec 11 11:01:40 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 11 11:01:40 2020 +0000"
      },
      "message": "Merge \"Soft-enable MAC address restrictions with allowlist.\""
    },
    {
      "commit": "0ba499896a6f1c86f48f2a0b2e596df6ecbb2b2e",
      "tree": "7a2283a6a128751c1bca32ff32a40acdeced22ae",
      "parents": [
        "d911c669ae6fb1bbb52e6197d18cfdd5d184cfcb"
      ],
      "author": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Thu Dec 03 19:03:55 2020 +0100"
      },
      "committer": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Thu Dec 10 11:55:45 2020 +0100"
      },
      "message": "Soft-enable MAC address restrictions with allowlist.\n\nSoft-limits apps from calling bind() on NETLINK_ROUTE sockets, and\ngetting link info through getifaddrs(), while still allowing apps on the\nallowlist to temporarily perform these actions.\n\nThis is different from existing behavior, where apps targeting an API\nlevel \u003c 30 were exempted from this restriction.\n\nActual enforcement will happen through SELinux (as is currently the\ncase for apps targeting API \u003e\u003d 30). This temporary change will then be\nreverted.\n\nIf you arrived at this change due to an app showing unexpected behavior,\nplease file a bug at go/netlink-bug.\n\nBug: 170188668\nBug: 170214442\nTest: Call bind() on NETLINK_ROUTE for an app on the allowlist.\nTest: Call bind() on NETLINK_ROUTE for an app not on the allowlist.\nTest: Call getifaddrs() for an app on the allowlist.\nTest: Call getifaddrs() for an app not on the allowlist.\nChange-Id: I0488932deea2a7211e55a24bc33bfa3cfb16fba2\n"
    },
    {
      "commit": "1f2e000c8060001319716bc235c0e170a247c8d1",
      "tree": "7ba0a6d38c8e141754b143f27576bc1d67bacbd9",
      "parents": [
        "12afdf0fa76ebb081769cea2f9dc2961cc04adb9",
        "2cefcb1b9c88a946a92842a5dffee90bebed80cd"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Wed Dec 09 19:21:56 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 09 19:21:56 2020 +0000"
      },
      "message": "Merge changes from topics \"Ic7ea0f075751f8f077612617802775d2d0a799dc\", \"Iec02ae89f4a3d2ffe298817240f404e54b109a52\"\n\n* changes:\n  Add a bionic-benchmarks-static target.\n  Make our definition of std::nothrow weak.\n"
    },
    {
      "commit": "439ebbd3492ad3a8b8398fa80b0860baeb50a40e",
      "tree": "5bcaa629808b35484cefbcda47d91c1dcbc21171",
      "parents": [
        "925431a072737d4c1bbf18f3da7ab24a25486870"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 18:51:42 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 08 22:26:06 2020 -0800"
      },
      "message": "Simplify and improve tempnam() and tmpnam().\n\nThey\u0027re both obsolescent in POSIX.1-2008, and you really shouldn\u0027t be\nusing them, but since we can\u0027t actually delete them...\n\nThis change makes them both obey $TMPDIR if set, and fall back to\n/data/local/tmp otherwise. That\u0027s as good as we\u0027ve managed for anything\nelse such as tmpfile(3).\n\nAlso add some tests.\n\nBug: http://b/174682340\nTest: treehugger\nChange-Id: Ieef99dcc2062f84b2b7cbae046787fdfe975e772\n"
    },
    {
      "commit": "9397bdd13f8e54855d0cda2a150c1bca98126a86",
      "tree": "cfb4fd2072d2938f1e3a764c9b5f89956f4bba79",
      "parents": [
        "1e32ae2da25876a64f6f69a802c7fa2c290fcc00"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Dec 08 14:26:21 2020 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Dec 08 14:40:30 2020 -0800"
      },
      "message": "Make our definition of std::nothrow weak.\n\nWe can sometimes fail to link a static executable because of\nduplicate definitions of std::nothrow in bionic/libc/bionic/new.cpp\nand external/libcxx/src/new.cpp. Fix it by making our definition\nweak since it doesn\u0027t matter which one ends up being chosen.\n\nChange-Id: Iec02ae89f4a3d2ffe298817240f404e54b109a52\n"
    },
    {
      "commit": "2210b8d542113c76e24d6ce99d292f87d337b12d",
      "tree": "409d9ef9dc9c1bf9f4b344534eadc01437860f33",
      "parents": [
        "50a7621b3fc493ffbb72aa23e29a4f1727dc1f51"
      ],
      "author": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Wed Nov 25 16:48:54 2020 -0800"
      },
      "committer": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Mon Nov 30 10:49:03 2020 -0800"
      },
      "message": "[Tagged Pointers] Allow probing the current TP level w/ locking.\n\naosp/1484976 introduced a breaking change where\nDisableMemoryMitigations() now indiscriminately turns tagged pointers\noff. When android_mallopt(M_DISABLE_MEMORY_MITIGATIONS) is called, the\ncorrect behaviour is:\n - In SYNC/ASYNC MTE mode -\u003e disable all tagged pointers.\n - If all tagged pointers are already disabled -\u003e nop.\n - If we\u0027re in TBI mode -\u003e nop (keep the TBI mode as-is).\n\nIn order to do that we have to allow probing of the current heap tagging\nmode. In order to prevent TOCTOU between GetHeapTaggingLevel() and\nSetHeapTaggingLevel(), we expose a global mutex that should be held when\ncalling these functions.\n\nBug: 174263432\nTest: atest CtsTaggingHostTestCases on Flame\nChange-Id: Ia96f7269d542c9041270458806aee36766d2fbbb\n"
    },
    {
      "commit": "1e32ae2da25876a64f6f69a802c7fa2c290fcc00",
      "tree": "6653c02f1fb19f4a3e3ca5b87f9bda34dd0d1e63",
      "parents": [
        "50a7621b3fc493ffbb72aa23e29a4f1727dc1f51",
        "53211a98dc902a1cc7a24477169dd65a06779473"
      ],
      "author": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Wed Nov 25 09:59:25 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 25 09:59:25 2020 +0000"
      },
      "message": "Merge \"Revert^2 \"Soft-enables new MAC address restrictions.\"\""
    },
    {
      "commit": "742a003db6bf6eacb7cab12b96a4fac03d8bd4da",
      "tree": "1cc46835801c1bcddbe28a33682c3eb996210069",
      "parents": [
        "097846e25b32b566100b2f377fe6d120efb04b75"
      ],
      "author": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Thu Nov 19 16:01:14 2020 -0800"
      },
      "committer": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Thu Nov 19 16:01:14 2020 -0800"
      },
      "message": "[GWP-ASan] Remove include.\n\nUnnecessary include, and the file was deleted with upstream changes.\n\nBug: N/A\nTest: cd external/gwp_asan \u0026\u0026 atest\nChange-Id: Id8facff0c5e382aa639ce158b7b5862ce157aa25\n"
    },
    {
      "commit": "097846e25b32b566100b2f377fe6d120efb04b75",
      "tree": "c05ec280eb91589f986384f74a83c95d009fc7de",
      "parents": [
        "92b8588f17b563bac398b5c3d9f69875d116911f",
        "9eb85bf70ccad3b80a7e9fb25ff1be017e71205d"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Wed Nov 18 20:57:36 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 18 20:57:36 2020 +0000"
      },
      "message": "Merge \"Change the android_mallopt(M_SET_HEAP_TAGGING_LEVEL) API.\""
    },
    {
      "commit": "9eb85bf70ccad3b80a7e9fb25ff1be017e71205d",
      "tree": "21ca8edc983eb615924abbc7e5f75fd35dc7a91e",
      "parents": [
        "7433096f06a22522c1723b6fef71fdea0f5eba96"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Mon Nov 02 13:35:28 2020 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Wed Nov 18 10:24:29 2020 -0800"
      },
      "message": "Change the android_mallopt(M_SET_HEAP_TAGGING_LEVEL) API.\n\n- Make it apply to every thread, and thus remove the restriction\n  that it must be called while the program is single threaded.\n- Make it change TCF0 itself (on all threads), instead of requiring\n  callers to do it themselves, which can be error prone.\n\nAnd update all of the call sites.\n\nChange the implementation of\nandroid_mallopt(M_DISABLE_MEMORY_MITIGATIONS) to call\nandroid_mallopt(M_SET_HEAP_TAGGING_LEVEL) internally. This avoids\ncrashes during startup that were observed when the two mallopts\nupdated TCF0 unaware of each other.\n\nI wouldn\u0027t expect there to be any out-of-tree callers at this point,\nbut it\u0027s worth noting that the new interface is backwards compatible\nwith the old one because it strictly expands the set of situations in\nwhich the API can be used (i.e. situations where there are multiple\nthreads running or where TCF0 hadn\u0027t been updated beforehand).\n\nBug: 135772972\nChange-Id: I7746707898ff31ef2e0af01c4f55ba90b72bef51\n"
    },
    {
      "commit": "53211a98dc902a1cc7a24477169dd65a06779473",
      "tree": "0e0ccfce4ab8015ca5efc70b7171ea71ce7b439f",
      "parents": [
        "259776d8ffcb64679e9c8d3459c2ec3a68a9e061"
      ],
      "author": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Mon Nov 16 10:19:34 2020 +0000"
      },
      "committer": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Mon Nov 16 12:53:49 2020 +0000"
      },
      "message": "Revert^2 \"Soft-enables new MAC address restrictions.\"\n\n259776d8ffcb64679e9c8d3459c2ec3a68a9e061\n\nThe original change was reverted due to InterfaceParamsTest failing.\nThis test has now been fixed in r.android.com/1498525.\nThe original change message is below.\n\nUpdates getifaddrs() to behave as if RTM_GETLINK requests are not\nallowed for non-system apps. This is different from previous behavior,\nwhere apps targeting an API level \u003c 30 were exempted from this\nrestriction.\n\nActual enforcement happens in SELinux. This change:\n- Soft-enables the behavior until SELinux changes are in place\n- Prevents logspam from SELinux denials after they are in place\n\nBug: 170188668\nTest: atest bionic-unit-tests-static\nTest: atest NetworkInterfaceTest\nTest: Connect to Wi-Fi network\nTest: Call getifaddrs() directly from within an app.\nTest: Call NetworkInterface#getNetworkInterfaces() from within an app.\n\nChange-Id: Ia9f61819f8fdf878c0e67e57de7e893fb3b1c233\n"
    },
    {
      "commit": "92b8588f17b563bac398b5c3d9f69875d116911f",
      "tree": "a1fd3cbcfa12b4cd72ed04a858c9d2c850bb6960",
      "parents": [
        "7433096f06a22522c1723b6fef71fdea0f5eba96",
        "259776d8ffcb64679e9c8d3459c2ec3a68a9e061"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Sat Nov 14 01:59:33 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Nov 14 01:59:33 2020 +0000"
      },
      "message": "Merge \"Revert \"Soft-enables new MAC address restrictions.\"\""
    },
    {
      "commit": "259776d8ffcb64679e9c8d3459c2ec3a68a9e061",
      "tree": "ec71dd4be0fc0c7ca7917f3b2f968f2346827f07",
      "parents": [
        "18286ed4659a7796cce9d5e44dd4791f4225b89c"
      ],
      "author": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri Nov 13 22:27:15 2020 +0000"
      },
      "committer": {
        "name": "Tej Singh",
        "email": "singhtejinder@google.com",
        "time": "Fri Nov 13 22:27:15 2020 +0000"
      },
      "message": "Revert \"Soft-enables new MAC address restrictions.\"\n\nRevert \"Enforce RTM_GETLINK restrictions on all 3p apps\"\n\nRevert \"Updates tests for untrusted app MAC address restrictions\"\n\nRevert submission 1450615-mac-address-restrictions\n\nReason for revert: DroidMonitor: Potential culprit for Bug 173243616 - verifying through Forrest before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted\n\nReverted Changes:\nI08c709b2b:Enforce RTM_GETLINK restrictions on all 3p apps\nI95d124ae8:Soft-enables new MAC address restrictions.\nI5392f8339:Updates tests for untrusted app MAC address restri...\nI9d214c5d0:Return anonymized MAC for apps targeting SDK \u003c 30\n\nChange-Id: If09920b24370077d647d60cfda7fc0a110b77851\n"
    },
    {
      "commit": "7433096f06a22522c1723b6fef71fdea0f5eba96",
      "tree": "b8135c08e8a16a9489a98b934c5109fdb80ba594",
      "parents": [
        "8037f54614ab60f2d91371f1647c4a055c86f23c",
        "18286ed4659a7796cce9d5e44dd4791f4225b89c"
      ],
      "author": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Thu Nov 12 17:07:11 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 12 17:07:11 2020 +0000"
      },
      "message": "Merge \"Soft-enables new MAC address restrictions.\""
    },
    {
      "commit": "56f1c406a5d5ac8068b9c0092eada0aae2d7c77d",
      "tree": "316bc204926511ac3c52eb9b405d3372122c1c84",
      "parents": [
        "e9eae5153948ec32abd36dfcbe889c4b1a024515",
        "a5c4b17e13bf19e44413f252f66707449eac5783"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Wed Nov 04 01:32:49 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 04 01:32:49 2020 +0000"
      },
      "message": "Merge \"Clear PAC bits in android_unsafe_frame_pointer_chase().\""
    },
    {
      "commit": "de30635eb67282b37454dc0d3f67507feb172967",
      "tree": "8c9d46b1b7c0c245c33efb14ed919dfec88baae8",
      "parents": [
        "10c2875934c9f47b39c1ffd9a3ecbe63d59f3183"
      ],
      "author": {
        "name": "Matthew Maurer",
        "email": "mmaurer@google.com",
        "time": "Fri Oct 23 09:55:33 2020 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Nov 02 17:28:41 2020 -0800"
      },
      "message": "Put __*_ARRAY__ symbols before prioritized init/fini funcs\n\nA constructor or destructor function with an integral priority is\nplaced in an .init_array or .fini_array section with the priority\nsuffixed to the section name:\n - __attribute__((constructor)) \u003d\u003d\u003e .init_array\n - __attribute__((constructor(42))) \u003d\u003d\u003e .init_array.42\n\nThe suffixed init/fini sections appear before the unsuffixed sections,\nso the prioritized functions appeared before the __{INIT,FINI}_ARRAY__\nsymbols and were dropped when the symbols were used.\n\nThe (static) linker doesn\u0027t recognize priority suffixes on\n.preinit_array.\n\nThis bug affected .init_array and .fini_array for static executables.\nFor dynamic executables, only .fini_array was affected, because\n.init_array is handled by the dynamic loader instead, which uses\nDT_INIT_ARRAY[SZ]. For DSOs, neither is affected, because the two\nsections are only handled by the dynamic loader.\n\nThis patch also fixes a minor inconsistency where dynamic init/preinit\nwere passed argc/argv/envp, but static were not.\n\nBug: http://b/170983066\nTest: bionic-unit-tests\nChange-Id: I0fffa776e5d9bdb6f8af06b4c1af148236742fef\n"
    },
    {
      "commit": "a5c4b17e13bf19e44413f252f66707449eac5783",
      "tree": "24cc0ef78706eac6d9369ed20c73ca0e7409e247",
      "parents": [
        "6dc330a714d9578b17a9535b9c5f3379d2a90bf4"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Oct 30 11:38:55 2020 -0700"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Oct 30 14:36:37 2020 -0700"
      },
      "message": "Clear PAC bits in android_unsafe_frame_pointer_chase().\n\nBug: 172057932\nChange-Id: Ie0eb4800a6699f2094070e97e5157d4e9c186097\n"
    },
    {
      "commit": "bf383283d9a480f9725bc34b0ab0f2fb1b126aa6",
      "tree": "07056d57ca4429b414a06e184befbc264da9741b",
      "parents": [
        "c3ecfb623f2c8190a3763b4a4a4716bea0032fac"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Tue Oct 27 03:23:02 2020 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Oct 29 07:52:54 2020 +0900"
      },
      "message": "getgrnam, getgrgid, getpwnam, getpwuid for host\n\nThe functions now read /etc/group and /etc/passwd on host machines.\nAndroid-specific IDs are not recognized in the host.\n\ngetpwent and getgrent are still not working though. They require a\nbigger refactoring to sequentially advance in the database files.\n\nBug: 171718702\nTest: run assemble_cvd in aosp_cf_arm64_phone\nChange-Id: Ie8da382a467bbd0bffac7b4b8592cd871db80181\n"
    },
    {
      "commit": "c3ecfb623f2c8190a3763b4a4a4716bea0032fac",
      "tree": "a99779230881f3bcbc833be241d74b51a9ae368a",
      "parents": [
        "40aed73b5fc41256d55d7b099e388aee4f56f32c",
        "8dd649deac465f15d22b305bcb35f873643c8c59"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 26 19:28:27 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 26 19:28:27 2020 +0000"
      },
      "message": "Merge \"system(3) uses /bin/sh when built for host\""
    },
    {
      "commit": "8dd649deac465f15d22b305bcb35f873643c8c59",
      "tree": "9b22cf1a657e662ff0025a416a0df2d65baacdbb",
      "parents": [
        "cf878313b0834b780ba6ffdc91b972371007f16e"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Oct 26 22:01:17 2020 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Oct 26 22:02:53 2020 +0900"
      },
      "message": "system(3) uses /bin/sh when built for host\n\n/system/bin/sh exists only on Android. When Bionic is built for the\nhost, use the standard /bin/sh.\n\nBug: 159685774\nTest: run aosp_cf_arm64_phone on rockpi4\nChange-Id: Idf4028c134abc128f203fc4d3be591f06b8fe8ff\n"
    },
    {
      "commit": "72b1aaf68e9c4c07b09c44578880ed4209c0f02c",
      "tree": "fafb0190ec1539c61aba458c04d2b0d8516a3294",
      "parents": [
        "3f09b0ac2e6a3875f2c1cd947ab01f95198aa751",
        "de523c02bbea1923ee5fbe9d1d60a905f6e965b0"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Oct 21 00:44:50 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 21 00:44:50 2020 +0000"
      },
      "message": "Merge \"Fix __cxa_atexit run-time regression with many registrations\""
    },
    {
      "commit": "c0d50d4a37467e6c0f9a6b3721651b3b0fc37eba",
      "tree": "5aaa85fd66d47677b181cd8ec8f4bf4354cfac74",
      "parents": [
        "bb34f8ddd3411852395affc6d588487cfe37c830"
      ],
      "author": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Tue Oct 20 15:44:20 2020 +0100"
      },
      "committer": {
        "name": "Victor Chang",
        "email": "vichang@google.com",
        "time": "Tue Oct 20 15:44:20 2020 +0100"
      },
      "message": "Replace libandroidicu usage in bionic with the new libicu.so available in NDK\n\nBug: 160350521\nTest: atest CtsBionicTestCases\nChange-Id: Id5fa76872ec295674eb1bed3b66e037a04fe6bf8\n"
    },
    {
      "commit": "de523c02bbea1923ee5fbe9d1d60a905f6e965b0",
      "tree": "ca34781ef3496b4b83303bce9f038231bba91433",
      "parents": [
        "b88edc6739d2582597e6164edf49cdcc669abcbc"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Oct 09 05:08:36 2020 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Oct 20 01:10:33 2020 -0700"
      },
      "message": "Fix __cxa_atexit run-time regression with many registrations\n\nWhen an array element is added or removed, make only the relevant page\nwritable, rather than the entire array. The entire array is still made\nwritable during recompaction and expansion.\n\nThis change fixes most of a large regression in __cxa_atexit runtime\n(blueline, taskset 10, performance governor, 100000 registrations,\ntimes are in seconds)\n - Q: _Exit\u003d0.292380, exit\u003d0.626801\n - R: _Exit\u003d28.435082, exit\u003d95.785110\n - new: _Exit\u003d0.352285, exit\u003d0.713893\n\nTest: bionic unit tests\nTest: adb shell taskset 10 \\\n  /data/benchmarktest64/bionic-spawn-benchmarks/bionic-spawn-benchmarks \\\n  --benchmark_filter\u003d\u0027atexit\u0027 \\\n  --benchmark_display_aggregates_only\u003dtrue \\\n  --benchmark_repetitions\u003d10\nBug: http://b/168043760\nChange-Id: I88cc15c29c9890b422b7f621f29f98a03ca1f886\n"
    },
    {
      "commit": "ddbcea2c113bd419fb9dd6f29c3232eaea3a1088",
      "tree": "ee20d46a4f182b8749096244e2deca398c520ece",
      "parents": [
        "e4f7c6d70b04f9fd01aab5f8a1c0063d4445d8e9",
        "9c08f4fecc5a8179426c4436071e6a451396eb38"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 15 20:11:00 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 15 20:11:00 2020 +0000"
      },
      "message": "Merge \"pthread_cond: only call futex_wake when there are waiters\""
    },
    {
      "commit": "9c08f4fecc5a8179426c4436071e6a451396eb38",
      "tree": "d7c9587b18b018d91c0da6b0d24100e005f0bac4",
      "parents": [
        "dcbc8ec29a148b0a3fdf675d91b77141325a3a36"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Wed Oct 07 17:11:28 2020 +0000"
      },
      "committer": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Thu Oct 15 16:16:07 2020 +0000"
      },
      "message": "pthread_cond: only call futex_wake when there are waiters\n\npthread_cond_pulse would unconditionally call futex, which meant that\na number of processes were spending a significant amount of time in\npthread_cond_broadcast and pthread_cond_signal when there were no\nthreads waiting on that pthread_cond_t.\n\nThis change adds a counter to the 64-bit pthread_cond_t struct and\nonly calls futex() in cases where there is a nonzero waiter count. The\n32-bit pthread_cond_t is unchanged due to compatibility reasons.\n\nTest: no pthread_cond_broadcast/signal stacks without try_to_wake_up\nin SurfaceFlinger\nbug: 168831708\n\nChange-Id: I105e1345cd2a3a75f98cd0acf316e790ba1716f0\n"
    },
    {
      "commit": "19f84868f457486b7170c9130c7526bd1c55c849",
      "tree": "86705970ed1ab4748be148108dc967d562b78aee",
      "parents": [
        "dcbc8ec29a148b0a3fdf675d91b77141325a3a36"
      ],
      "author": {
        "name": "Vy Nguyen",
        "email": "vyng@google.com",
        "time": "Wed Sep 23 21:43:31 2020 -0400"
      },
      "committer": {
        "name": "Vy Nguyen",
        "email": "vyng@google.com",
        "time": "Thu Oct 15 10:28:19 2020 -0400"
      },
      "message": "Fix bug in finding another thread\u0027s TCB.\n\nChange-Id: I06c86ca0c077b464fc6c9fbdf5b89889a26da5fb\n"
    },
    {
      "commit": "dcbc8ec29a148b0a3fdf675d91b77141325a3a36",
      "tree": "8e96c323f88b28560ec6711e403ebbbef5a7e513",
      "parents": [
        "08a43426a0bcbc53cd2a33b3624bc6b3f7176117",
        "0cdf132f84022b2a05082095733d530e31d72d61"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Oct 09 21:05:02 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 09 21:05:02 2020 +0000"
      },
      "message": "Merge changes from topic \"I81ece86ace916eb6b435ab516cd431ec4b48a3bf\"\n\n* changes:\n  Expose per-process memory init.\n  Add an API for per-process disabling memory initialization.\n"
    },
    {
      "commit": "5d3aa86cd1fe2e8b1920003b14b9a0c91153b111",
      "tree": "e17b86fb2a85a913c20d5f91405ef524e7c0c1c8",
      "parents": [
        "4edf74ab1ae2da4bda80d19f4c014e983c74903d"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Sep 11 15:05:17 2020 -0700"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Oct 08 14:02:36 2020 -0700"
      },
      "message": "Add an API for per-process disabling memory initialization.\n\nIntroduce an android_mallopt(M_DISABLE_MEMORY_MITIGATIONS) API call\nthat may be used to disable zero- or pattern-init on non-MTE hardware,\nor memory tagging on MTE hardware. The intent is that this function\nmay be called at any time, including when there are multiple threads\nrunning.\n\nDisabling zero- or pattern-init is quite trivial, we just need to set\na global variable to 0 via a Scudo API call (although there will be\nsome separate work required on the Scudo side to make this operation\nthread-safe).\n\nIt is a bit more tricky to disable MTE across a process, because\nthe kernel does not provide an API for disabling tag checking in all\nthreads in a process, only per-thread. We need to send a signal to each\nof the process\u0027s threads with a handler that issues the required prctl\ncall, and lock thread creation for the duration of the API call to\navoid races between thread enumeration and calls to pthread_create().\n\nBug: 135772972\nChange-Id: I81ece86ace916eb6b435ab516cd431ec4b48a3bf\n"
    },
    {
      "commit": "18286ed4659a7796cce9d5e44dd4791f4225b89c",
      "tree": "0e0ccfce4ab8015ca5efc70b7171ea71ce7b439f",
      "parents": [
        "08a43426a0bcbc53cd2a33b3624bc6b3f7176117"
      ],
      "author": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Fri Sep 18 13:27:25 2020 +0200"
      },
      "committer": {
        "name": "Bram Bonné",
        "email": "brambonne@google.com",
        "time": "Tue Oct 06 13:42:19 2020 +0200"
      },
      "message": "Soft-enables new MAC address restrictions.\n\nUpdates getifaddrs() to behave as if RTM_GETLINK requests are not\nallowed for non-system apps. This is different from previous behavior,\nwhere apps targeting an API level \u003c 30 were exempted from this\nrestriction.\n\nActual enforcement happens in SELinux. This change:\n- Soft-enables the behavior until SELinux changes are in place\n- Prevents logspam from SELinux denials after they are in place\n\nBug: 170188668\nTest: atest bionic-unit-tests-static\nTest: atest NetworkInterfaceTest\nTest: Connect to Wi-Fi network\nTest: Call getifaddrs() directly from within an app.\nTest: Call NetworkInterface#getNetworkInterfaces() from within an app.\n\nChange-Id: I95d124ae81bcb26583db5ad01d95d441d52f973c\n"
    },
    {
      "commit": "b752dd53fdf5316529fd3ee2497ac180e9d947a2",
      "tree": "efaf180a6f69f6366884536548c395e419400826",
      "parents": [
        "9494caa7e857c9e9d323dd58212d833f75b3362c"
      ],
      "author": {
        "name": "Evgeny Eltsin",
        "email": "eaeltsin@google.com",
        "time": "Fri Oct 02 14:41:04 2020 +0200"
      },
      "committer": {
        "name": "Evgeny Eltsin",
        "email": "eaeltsin@google.com",
        "time": "Fri Oct 02 14:41:04 2020 +0200"
      },
      "message": "Mark __progname as weak for native_bridge\n\nBug: 167968941\nTest: m\nChange-Id: I636fab0bbf8e5565fb017940e6128c4bed3bab30\n"
    },
    {
      "commit": "6427f39ba9a77ba6d83de5f9b79fedc66edf5522",
      "tree": "c2219da363a7e793b649246467eab91b4f7b901d",
      "parents": [
        "b967e793a5b2e7f1742121797d35326400f41852"
      ],
      "author": {
        "name": "Victor Khimenko",
        "email": "khim@google.com",
        "time": "Mon Sep 28 20:35:12 2020 +0200"
      },
      "committer": {
        "name": "Victor Khimenko",
        "email": "khim@google.com",
        "time": "Mon Sep 28 20:36:39 2020 +0200"
      },
      "message": "Make __clone_for_fork pure native bridge mode abstraction\n\nIn native build of libc it would be inlined and in native bridge mode\nit\u0027s noinline, extern \"C\" and thus could be easily intercepted.\n\nTest: m (without weak symbols in native bridge mode x86+arm build would be broken)\n\nChange-Id: I67759858a5bc2174dce1db9732fdbd89ba7689cc\n"
    },
    {
      "commit": "a1e3f2c50253c67f3ed647ae64a066751dc4b857",
      "tree": "ffd279a7c6f929f5bc4bc60a5e8cdaec596de45e",
      "parents": [
        "bba9153c5c4de2251a004a50f0be6681504e7af4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 10 18:26:08 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 11 08:56:58 2020 -0700"
      },
      "message": "Expose a function to reset the stack protector for the zygote.\n\nThis is already covered by the existing test by virtue of being used for\nall threads.\n\nBug: http://b/168258494\nTest: treehugger\nChange-Id: I5c872fd7f30a4c79de1d70e7702f4b12d4e94cd3\n"
    },
    {
      "commit": "1e1c7845aab0542306f61d8e8c880aca096ea336",
      "tree": "52b7a55510ae7546065f536023a9bd29bde112cd",
      "parents": [
        "1e0d28b9c27ee5ea5dda08b6a2048dbce8ccd8cf"
      ],
      "author": {
        "name": "Bowgo Tsai",
        "email": "bowgotsai@google.com",
        "time": "Mon Aug 24 15:19:52 2020 +0800"
      },
      "committer": {
        "name": "Bowgo Tsai",
        "email": "bowgotsai@google.com",
        "time": "Tue Aug 25 02:26:30 2020 +0000"
      },
      "message": "bionic_systrace: moving global static variables\n\nSome global static variables are only used within a single function,\nso moving them inside the function which requires them. This also\nensures those static variables of class types are initialized before\nthey are being used.\n\nFor example, this is needed for CachedProperty(), as some of the\nmember method, e.g., CachedProperty().Get(), might be invoked,\ne.g., in __libc_preinit(), before the constructor is invoked.\nThis happens after we added property trace points in commit\nId2b93acb2ce02b308c0e4889f836159151af3b46.\n\nFor g_lock, we don\u0027t move them because it can be initialized by setting\nits memory to 0. And it\u0027s used in two functions.\n  https://android.googlesource.com/platform/bionic/+/refs/heads/master/libc/private/bionic_lock.h\n\nBug: 147275573\nTest: atest CtsBionicTestCases\nTest: adb shell perfetto -o /data/misc/perfetto-traces/test_trace -t 10s bionic sysprop\nChange-Id: I99565ce2442d34f33830778915c737eed834f8b3\n"
    },
    {
      "commit": "d0ecf0b30d180a52735ee677c48456176260e9cb",
      "tree": "f65c6c4c099257bb2137bf3c739909ea2e93e9b7",
      "parents": [
        "3ec750e035db74f954ee25c5f9f4357490fe2224"
      ],
      "author": {
        "name": "Bowgo Tsai",
        "email": "bowgotsai@google.com",
        "time": "Mon Apr 13 13:07:43 2020 +0800"
      },
      "committer": {
        "name": "Bowgo Tsai",
        "email": "bowgotsai@google.com",
        "time": "Wed Aug 19 12:47:01 2020 +0800"
      },
      "message": "Adding system property tracing\n\nIntroducing a new systrace tag, TRACE_TAG_SYSPROP, for use with\nsystem property.\n\nFor property set, the tracing is added in __system_property_set() instead of\n__system_property_update() / __system_property_add() so we can record\ncontrol properties like ctl.*, sys.powerctl.*, etc.., which won\u0027t be\nupdated via the latter two functions.\n\nBug: 147275573\nTest: atest CtsBionicTestCases\nTest: adb shell perfetto -o /data/misc/perfetto-traces/test_trace -t 10s bionic\nTest: adb shell perfetto -o /data/misc/perfetto-traces/test_trace -t 10s sysprop\nTest: adb shell /data/benchmarktest64/bionic-benchmarks/bionic-benchmarks \\\n      --benchmark_filter\u003dBM_property --bionic_cpu\u003d4, then compares the results\n      of property benchmarks before and after the change, didn\u0027t see\n      significant difference.\n\nChange-Id: Id2b93acb2ce02b308c0e4889f836159151af3b46\nMerged-In: Id2b93acb2ce02b308c0e4889f836159151af3b46\n(cherry picked from commit 26970c34937e2339876d6ba335a56769d6f0d75e)\n"
    },
    {
      "commit": "1c502d46b35892dd00728c31b00e9c5fa99fb2eb",
      "tree": "bb9ee6151781e6b70dd1f1acf3df13cb8a0536c8",
      "parents": [
        "d4d7efc1f8971824b580443745a3c32652c58031",
        "7cebf835f310650f67b254295a685918681656fc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 13 21:27:09 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 13 21:27:09 2020 +0000"
      },
      "message": "Merge \"Various coverage improvements.\""
    },
    {
      "commit": "d4d7efc1f8971824b580443745a3c32652c58031",
      "tree": "cc3f587c137ca18755a10d5e4ec00fecd629edf9",
      "parents": [
        "aadcb078907f23ba719f0ca180aad4f425cf1b0f",
        "d500751443dbd841445f019428099aae42bac007"
      ],
      "author": {
        "name": "Vy Nguyen",
        "email": "vyng@google.com",
        "time": "Thu Aug 13 19:58:03 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 13 19:58:03 2020 +0000"
      },
      "message": "Merge \"Add a thread-properties API (Based on proposal at https://sourceware.org/glibc/wiki/ThreadPropertiesAPI)\""
    },
    {
      "commit": "7cebf835f310650f67b254295a685918681656fc",
      "tree": "daf485447fccb691750149c465b2c629adf6e305",
      "parents": [
        "a4110def5cec22306313a34fff64b5810c9b1792"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 14:25:41 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 15:52:14 2020 -0700"
      },
      "message": "Various coverage improvements.\n\nMostly from extra test cases, but also:\n\n* Move the fgets size \u003c 0 assertion into fgets.\n\n* Use ELF aliases for strtoq/strtouq rather than duplicating code.\n\n* Don\u0027t check uname() succeeded, since it can\u0027t fail.\n\nTest: treehugger\nChange-Id: I2e6b3b88b0a3eb16bd68be68b9bc9f40d8043291\n"
    },
    {
      "commit": "aadcb078907f23ba719f0ca180aad4f425cf1b0f",
      "tree": "7cd3652ab2730e9507b8e2ef0119de792d2df578",
      "parents": [
        "d4da7b17a2d2f3a7095a84bbb40a416e0b97f104",
        "fce31870886ca101bf359508f0ce6be076433da4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 22:13:11 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 12 22:13:11 2020 +0000"
      },
      "message": "Merge \"Cleanup for #inclusivefixit.\""
    },
    {
      "commit": "d500751443dbd841445f019428099aae42bac007",
      "tree": "2c55d14b68aad215315d927885a12c427c58b451",
      "parents": [
        "f08e70a0d9a02cbec89be682d665c2c2896c968f"
      ],
      "author": {
        "name": "Vy Nguyen",
        "email": "vyng@google.com",
        "time": "Tue Jul 14 17:37:04 2020 -0400"
      },
      "committer": {
        "name": "Vy Nguyen",
        "email": "vyng@google.com",
        "time": "Tue Aug 11 16:51:43 2020 +0000"
      },
      "message": "Add a thread-properties API\n(Based on proposal at https://sourceware.org/glibc/wiki/ThreadPropertiesAPI)\n\nThis includes API to:\n - locate static and dynamic TLS\n - register thread-exit and  dynamic TLS creation/destruction callbacks\n\nChange-Id: Icd9d29a5b2f47495395645e19d3b2c96826f19c8\n"
    },
    {
      "commit": "f08e70a0d9a02cbec89be682d665c2c2896c968f",
      "tree": "7837d33f60e0ae0badde9a70b42ad7aa0749328a",
      "parents": [
        "5ca9a152454ced44a2c79816e0b05a7ed35670b8",
        "9a1d3976f195e815649e103b5b930bacb02029b0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 10 15:41:13 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 10 15:41:13 2020 +0000"
      },
      "message": "Merge \"Reimplement our no-op utmp.h functions more simply.\""
    },
    {
      "commit": "9a1d3976f195e815649e103b5b930bacb02029b0",
      "tree": "7a93427efd7de5f1955b2d20d0e9d4ac761411ca",
      "parents": [
        "eebb1ec687cb162c02b74fe5f409f88b53773ae5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 07 15:55:02 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 07 17:07:31 2020 -0700"
      },
      "message": "Reimplement our no-op utmp.h functions more simply.\n\nNow we\u0027re being marked down for our poor coverage, we may as well remove\nmore broken cruft. Despite the amount of effort that seems to have gone\ninto pututline(), it wasn\u0027t working with the other utmp.h functions (in\nparticular, utmpname()), and wasn\u0027t declared in the header file!\n\nTest: treehugger\nChange-Id: I1a583984189c751168c11c01431433f96f8c548b\n"
    },
    {
      "commit": "2dbea434d103567e911f068f73170d7808e071da",
      "tree": "4ed53c7969e81d7ddb948edb3eab2042047b02dc",
      "parents": [
        "422b2044ea4b5ce7375330814074d141423c32f9"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Jun 14 14:19:22 2019 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Aug 07 13:10:51 2020 -0700"
      },
      "message": "Make swab(3) inline prior to API 28.\n\nTest: make checkbuild\nBug: https://stackoverflow.com/q/54392471/632035\nChange-Id: Iaeb55231ea2395d7e1e31be63034f5db19025060\n"
    },
    {
      "commit": "422b2044ea4b5ce7375330814074d141423c32f9",
      "tree": "cf388611419cc481cc411d144ae53f2feb50296d",
      "parents": [
        "cc8f1ea9e14c88e813ef901cfe3e0c62273e60d2",
        "5633caa285899527bffddb32cf1e33906a63edcd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 07 20:01:17 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 07 20:01:17 2020 +0000"
      },
      "message": "Merge \"Switch to musl memmem (via OpenBSD).\""
    },
    {
      "commit": "cc8f1ea9e14c88e813ef901cfe3e0c62273e60d2",
      "tree": "9f137e2fed5180595b32f9cc8c90c59a7ec1c16d",
      "parents": [
        "6900a09fe7db47acbf995b09ef79c17417d121c3",
        "f69030095de19470aa6c0b5ea469ac77a2e0407e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 07 05:52:52 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 07 05:52:52 2020 +0000"
      },
      "message": "Merge \"Allow native_bridge to intercept __get_thread()-\u003estack_top\""
    },
    {
      "commit": "5633caa285899527bffddb32cf1e33906a63edcd",
      "tree": "aa1510ef1cab9132be19da9c9f7b0a9babc31481",
      "parents": [
        "0f4bdb04fb4b803bbf19850c86cc9270d64a06b9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 06 14:32:43 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 06 14:33:48 2020 -0700"
      },
      "message": "Switch to musl memmem (via OpenBSD).\n\nSimilar to the musl strstr. This patch also increases test coverage for\nmemmem, again similar to the strstr tests.\n\nTest: treehugger\nChange-Id: I7f4a2ab93a610cb692994d06d2512976e657ae9f\n"
    },
    {
      "commit": "7591bb5ee187f6eac38ad310efe05066f79b0c1d",
      "tree": "6a4061c9eacacc48173a47b2f5bf63fa9343093f",
      "parents": [
        "d9fc1a72d9abdef841340d3b9df4b20aa88aec8f",
        "fb65ee4c47f374fd75e6e994f32edc4224c6442a"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Aug 04 17:47:36 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 04 17:47:36 2020 +0000"
      },
      "message": "Merge \"SCUDO fill options only when USE_SCUDO\""
    }
  ],
  "next": "61be80182cb9bb668e0449d0fe04a88cec19e529"
}
