)]}'
{
  "log": [
    {
      "commit": "4a92ffd3029e9e38c3a55222676a126db5a3b962",
      "tree": "433d790ddfffcfb36b0b362e8c968ee2e6197a55",
      "parents": [
        "ebceea8e85ad2897a5ce8575b81f18fdd7aa0320"
      ],
      "author": {
        "name": "Victor Khimenko",
        "email": "khim@google.com",
        "time": "Wed Mar 01 20:36:13 2017 +0100"
      },
      "committer": {
        "name": "Victor Khimenko",
        "email": "khim@google.com",
        "time": "Wed Mar 01 20:43:42 2017 +0100"
      },
      "message": "Stop using __system_property_area__\n\nApparently that \"backdoor\" is no longer needed - the proper way is\nto reinitialize properties:\n    https://android-review.googlesource.com/#/c/181794/24/tests/system_properties_test.cpp\n\nAlso removes mentions of libnativehelper test (it no longer uses\n__system_property_area__) and removes useless \"extern\" declaration\n(actual use was removed long ago).\n\nTest: refactoring CL, existsing tests still pass\n\nBUG\u003d21852512\nBUG\u003d34114501\n\nChange-Id: I2223cab2fcb671ea180ad4470a7aba5c9cd20bd8\n"
    },
    {
      "commit": "6391e1a44d4a183cb1fc092fc62c4e30f59429c5",
      "tree": "95d7fc5c55a2310babc87890d15f6f32c5edbcfd",
      "parents": [
        "5927b04ce7d9d4727a4a644f8af4040b8dab5d0a"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 23 17:57:14 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 24 14:00:04 2017 -0800"
      },
      "message": "libc: __system_property_set uses writev to write atomically\n\n__system_property_set sometimes produces broken_pipe error\nwhen trying to write a property.\n\nThis change improves error messages and uses writev() instead\nof sequence of send() calls.\n\nBug: http://b/35381074\nTest: bionic-unit-tests --gtest_filter\u003dprop*\nChange-Id: I7a5b169c015db4e6b720370e58662de8206d1086\n"
    },
    {
      "commit": "40c885a4d18dd1e4480615ddd00c9f035dc08567",
      "tree": "58adbfd0852a7bb1d51122339b6a00e27bb6bcaf",
      "parents": [
        "40854235256c3f51f9ea866f5f8ef03240c00123"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 16 17:13:04 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 21 14:36:24 2017 -0800"
      },
      "message": "Add timeout support to __system_property_wait.\n\nBug: http://b/35201172\nTest: ran tests\nChange-Id: I3a78813bf3cd50d1b308ecb3c742f923606c0cc4\n"
    },
    {
      "commit": "a0d374d587ec18d437d0dd15ba1332aceaa188af",
      "tree": "a9466c8841140cf70290c54d50354f245ea3a9db",
      "parents": [
        "132768084e24119c337e56fd110b97a23e5593c2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 10 18:13:46 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 13 13:30:10 2017 -0800"
      },
      "message": "Add __system_property_wait and return the serial in __system_property_read_callback.\n\nIn order to implement android::base::WaitForProperty well, we need a way to\nwait not for *any* property to change (__system_property_wait_any), but to\nspecifically wait for the property represented by a given `prop_info` to\nchange.\n\nThe android::base::WaitForProperty implementation, like attempts to cache\nsystem properties in the past, also needs a way to keep serials and values\nin sync, but the existing functions don\u0027t provide a cheap way to get a\nconsistent snapshot. Change the __system_property_read_callback callback\u0027s\ntype to include the serial corresponding to the given value.\n\nAdd a test, slightly clean up some of the existing tests (and name them to\ninclude the names of the functions they\u0027re testing, in our usual style).\n\nBug: http://b/35201172\nTest: ran tests\nChange-Id: Ibc8ebe2e88eef1e333a1bd3dd7f68135f1ba7fb5\n"
    },
    {
      "commit": "8e7396c9d733c73226f3bfa31241cd311b451cf3",
      "tree": "833fc173575d6617e7051fbd126e98fde1c80700",
      "parents": [
        "44bea80d31bfda28008e0a9116f65aab5d85206d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 31 08:24:43 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 31 08:24:43 2017 -0800"
      },
      "message": "s/NULL/nullptr/ in system properties code.\n\ngerrit still hasn\u0027t sent out the mail asking for this in an earlier code\nreview...\n\nBug: http://b/33926793\nTest: builds and boots.\nChange-Id: I080de633e50e47f9a052211d47da96b971b16424\n"
    },
    {
      "commit": "9160ed9bb76f64d1237393dcabf098f9c52f5b3d",
      "tree": "73e17c96f06ffc5621ff164d7e5dd88394902363",
      "parents": [
        "a5066640cc7274e317bf3bae2d960986d58dbbbd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 17:54:57 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 17:54:57 2017 -0800"
      },
      "message": "clang-format system_properties.cpp.\n\nAsked for on a previous code review.\n\nBug: http://b/33926793\nTest: builds and boots.\nChange-Id: Idf34804896149db5edbddf4ed88396a5df7f708a\n"
    },
    {
      "commit": "93e272d00a4155600227ce485f028c1fa8580f2c",
      "tree": "85937ca63918dbe52c62d395d384efc9c0c86618",
      "parents": [
        "0c6f806b1d7c13b8a03c8e64797ab0159976e244",
        "34f0cfa3a8d9d93d6f397993179de2f1951e96c7"
      ],
      "author": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Mon Jan 30 19:16:16 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 30 19:16:17 2017 +0000"
      },
      "message": "Merge \"property_contexts: split into platform and non-platform components\""
    },
    {
      "commit": "f8562c5f8f0a8df88bd864b8c64eeb9b8905b97d",
      "tree": "b5f9e89d8683da813350e680a1e19882473e8485",
      "parents": [
        "6a9e0c8f15dee1b1b7c5cd7f8e058c2b18683bbc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 26 16:48:57 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 27 16:19:59 2017 -0800"
      },
      "message": "Remove backwards compatibility for old system properties.\n\nNo-one is directly upgrading from pre-K to O...\n\nAlso move more implementation details out of the header file.\n\nBug: http://b/33926793\nTest: boots\nChange-Id: I7a0936acbb1cea8a3b2cd6797ec53ba7e4a050f3\n"
    },
    {
      "commit": "34f0cfa3a8d9d93d6f397993179de2f1951e96c7",
      "tree": "99f50890c87a2f7209bf75eef989de29cfa40a3e",
      "parents": [
        "577a944200e445f806964b7fb5dbd38633f4ae07"
      ],
      "author": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Tue Dec 27 17:37:44 2016 -0800"
      },
      "committer": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Fri Jan 27 13:12:32 2017 -0800"
      },
      "message": "property_contexts: split into platform and non-platform components\n\nBug: 33746484\nBug: 34370523\nTest: Successfully boot with original service and property contexts.\nTest: Successfully boot with split serivce and property contexts.\nTest: Incremental build works on sailfish (reported in b/34370523)\nTest: adb sideload works with aosp updater (reported in b/34370523)\n\nChange-Id: Idf24856193032a8bc89ec384a72451e578a9d5ac\nSigned-off-by: Sandeep Patil \u003csspatil@google.com\u003e\n"
    },
    {
      "commit": "cafd3553751dfb524316884fb213eb80c75a26a2",
      "tree": "9accfb894608a6c131aa011490cce799f0160abe",
      "parents": [
        "16b2a4de143a026b8d467b7d242126adcf67242b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 12:39:33 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 14:19:03 2017 -0800"
      },
      "message": "Do not send 0 byte string content.\n\nTrying to send even 0 bytes to closed socket leads to\nbroken pipe error. Sometimes property service is just\nquick enough and closes the socket between send(valuelen)\nand send(value) in the case where valuelen is 0.\n\nBug: http://b/34670529\nTest: adb reboot 20 times and make sure phone service did not fail\nTest: run bionic-unit-tests --gtest_filter\u003dprop*\nChange-Id: I96f90ca6fe1790614e7efd3015bffed1ef1e9040\n"
    },
    {
      "commit": "16b2a4de143a026b8d467b7d242126adcf67242b",
      "tree": "56e0d6455248408f5c485c8a5403bb970441f7a8",
      "parents": [
        "40250bb6837da0eb0f0882efd07bdaefb3f304b1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 20:43:29 2017 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 12:58:18 2017 -0800"
      },
      "message": "Revert \"Revert \"Remove limit of system property name length\"\"\n\nThis reverts commit 489f58b5eaedd5a80635bb3a7b39e97037c585f6.\nBug: http://b/33926793\nBug: http://b/34670529\nTest: Run bionic-unit-tests --gtest_filter\u003dprop*\n\nChange-Id: Id4e94652dc2310a21f5b7bd3af098bf79df3f380\n"
    },
    {
      "commit": "489f58b5eaedd5a80635bb3a7b39e97037c585f6",
      "tree": "af22a101af7a53336af2669978e9a507f589fbd5",
      "parents": [
        "5c1ce278f31bc6fc338b9b951f1adc7c2b343d7c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 18:39:04 2017 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 18:39:04 2017 +0000"
      },
      "message": "Revert \"Remove limit of system property name length\"\n\nThis reverts commit 5c1ce278f31bc6fc338b9b951f1adc7c2b343d7c.\nBug: http://b/33926793\nBug: http://b/34670529\n\nChange-Id: I0dc4a8ae55576c69b34b2958d8e664f7066b9c54\n"
    },
    {
      "commit": "5c1ce278f31bc6fc338b9b951f1adc7c2b343d7c",
      "tree": "0652006476a923c95c16837640a52f9298322a35",
      "parents": [
        "7844b4c5dbd0be9ea4212a523da2dd6a4804032c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Dec 03 11:26:38 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jan 23 11:21:18 2017 -0800"
      },
      "message": "Remove limit of system property name length\n\nThis change introduces new __system_property_read_callback\nmethod to use in place of deprecated __system_property_read\n__system_property_set() and get() should just work but now\ndo not have limit on system property names.\n\nBug: http://b/33926793\nTest: boot device, run adb shell propget\nTest: boot device with old version of init (protocol v1)\nTest: run bionic-unit-tests --gtest_filter\u003dprop*\nChange-Id: I619fb5a7e27a272aac30011579665f6160888bc7\n"
    },
    {
      "commit": "dbfa1bd292213af9e5a7c64f4bf00d1f48a123eb",
      "tree": "e96474267a790c5c82b0b375279fa036630eef5e",
      "parents": [
        "0b6d0a8b38861eb53072e500ed1641a9d84f4513",
        "e2f5ea14c5d76d66c978dd42090366d4f0e96f40"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Wed Jan 18 16:33:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 18 16:33:32 2017 +0000"
      },
      "message": "Merge \"Revert \"property_contexts: split into platform and non-platform components\"\""
    },
    {
      "commit": "e2f5ea14c5d76d66c978dd42090366d4f0e96f40",
      "tree": "fe089ec40970a76f11107534632b1fc5789660ed",
      "parents": [
        "8213615461f7d39620e44f73980acc6107c76ac7"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Wed Jan 18 15:37:18 2017 +0000"
      },
      "committer": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Wed Jan 18 15:37:18 2017 +0000"
      },
      "message": "Revert \"property_contexts: split into platform and non-platform components\"\n\nThis reverts commit 8213615461f7d39620e44f73980acc6107c76ac7.\n\nChange-Id: Id2982eafadc5d1c307b60c1f8abe78df8dc8b82e\n"
    },
    {
      "commit": "0b6d0a8b38861eb53072e500ed1641a9d84f4513",
      "tree": "906e9b548b553f080f415ff595da8afb484264ad",
      "parents": [
        "8d0e0d495209f3bdc20edf0e5c2aa219b4cbe217",
        "8213615461f7d39620e44f73980acc6107c76ac7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 18 06:09:02 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 18 06:09:02 2017 +0000"
      },
      "message": "Merge \"property_contexts: split into platform and non-platform components\""
    },
    {
      "commit": "907fcc98b20c6520be424fbe40ff17a5652f00e5",
      "tree": "6ede6effd480d05edd4296c8b539613c754944e7",
      "parents": [
        "0625beb2709007e01b59edde7b6d5d4fe502ae6b",
        "581b9f661bc7d32691ac5e5ee8eac38a8807aa09"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 11 01:57:56 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 11 01:57:56 2017 +0000"
      },
      "message": "Merge \"Hide __system_property_add/update, deprecate find_nth\""
    },
    {
      "commit": "581b9f661bc7d32691ac5e5ee8eac38a8807aa09",
      "tree": "2100650f26ccb76348855e2747f86c77926dba3a",
      "parents": [
        "fb07c36bc061db4ca5d8348ff6bc1e60b6c53191"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jan 09 11:05:52 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 10 13:41:27 2017 -0800"
      },
      "message": "Hide __system_property_add/update, deprecate find_nth\n\nThese functions are supposed to be used only by the\nproperty service.\n\n__system_property_find_nth is deprecated and no longer part\nof NDK. Call to this function will result in abort for apps\ntargeting Android O.\n\nBug: http://b/34114501\nTest: bionic-unit-tests --gtest_filter\u003dprop*\nChange-Id: I9846965bf248e2ddf45cd7b293618245bbd87145\n"
    },
    {
      "commit": "8213615461f7d39620e44f73980acc6107c76ac7",
      "tree": "7484701d6df8c7aaf9b60bb4d01cdf2b48be8b8c",
      "parents": [
        "fb07c36bc061db4ca5d8348ff6bc1e60b6c53191"
      ],
      "author": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Tue Dec 27 17:37:44 2016 -0800"
      },
      "committer": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Mon Jan 09 16:34:14 2017 -0800"
      },
      "message": "property_contexts: split into platform and non-platform components\n\nBug: 33746484\nTest: Successfully boot with original service and property contexts.\nTest: Successfully boot with split serivce and property contexts.\n\nChange-Id: Id1acb8c4273c6f93396e8cf7a063571a2bf08786\nSigned-off-by: Sandeep Patil \u003csspatil@google.com\u003e\n"
    },
    {
      "commit": "bb59d4724978d633eca1fb7a30c3d0970c8d5e52",
      "tree": "e1101bf6ce7e3fc147d28803e3d24100f42d6720",
      "parents": [
        "d26267b8b9b6ad8e4726b76455077ea824ad2094"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jan 06 12:04:29 2017 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jan 06 12:07:20 2017 -0800"
      },
      "message": "Make /dev/__properties__ 0711\n\nDon\u0027t allow processes to read the contents of the directory\n/dev/__properties__. This is an implementation detail of the properties\nsystem that processes shouldn\u0027t be concerned with.\n\nTest: Device boots and no problems reading individual properties.\nTest: ls -la /dev/__properties__ fails\nChange-Id: I00130fe4529525935654bff91e3cc59253b86e26\n"
    },
    {
      "commit": "62e3a078aa7b156139b1a2cec77e1a84eb10c5a4",
      "tree": "b37425943e0cd7284b319d6cad98bd71dcfdc8bb",
      "parents": [
        "9ee905f12fa0aeb4ae0df708e15d2ffcfaf58000"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 03 12:08:05 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 03 12:08:05 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings.\n\nBug: 28341362\nChange-Id: I84effbdfa1b9b39328a909b7f70fe17e7ee316c8\n"
    },
    {
      "commit": "8352475c756663fb22fce851a5ff9b9d8320f4de",
      "tree": "787da5e520fe3a9426e9cb5fb3fb4ea39105c84e",
      "parents": [
        "ced73ee45e04a991ce1295a38364568a17884eed"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Jan 26 15:27:07 2016 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Jan 26 23:51:01 2016 +0000"
      },
      "message": "Replace snprintf() with __libc_format_buffer()\n\nIf snprintf() is called from the linker, it may erroneously return a\nnull string.  The libc internal __libc_format_buffer() does not have\nthis problem, so it is now used instead.\n\nBug: 26756577\n\nChange-Id: I37a97e27f59b3c0a087f54a6603cc3aff7f07522\n"
    },
    {
      "commit": "e97ce31fe768f6383234d809eef144f049210a5e",
      "tree": "d58ffcc743723e687ac24f8c9bb4841efb9edad1",
      "parents": [
        "c5fd81ab2524a06be907d9c5234e79346bbbbd7c"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Jan 06 18:52:52 2016 +0000"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Jan 06 19:13:54 2016 +0000"
      },
      "message": "Revert \"system_properties.cpp: special case ro.* properties\"\n\nThis reverts commit c5fd81ab2524a06be907d9c5234e79346bbbbd7c.\n\nBug: 26416032\n\nChange-Id: Id2d6761fdf55efa28c0b08b597daaa5cd381d758\n"
    },
    {
      "commit": "c5fd81ab2524a06be907d9c5234e79346bbbbd7c",
      "tree": "4c6bd98ff76eb21ec69e8ba264bcf03613d4b83b",
      "parents": [
        "507d6f2a51f907f46b5d4bfe32b5a826ad7dd25f"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jan 05 16:19:24 2016 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jan 05 16:30:17 2016 -0800"
      },
      "message": "system_properties.cpp: special case ro.* properties\n\nCurrently, reads of ro.* properties are treated differently than\nwrites of ro.* properties. When writing an ro.* property, we ignore\nthe \"ro.\" portion of the property, and base the security decision\non the label of the remaining portion.\n\nSee https://android.googlesource.com/platform/system/core/+/e7a9e52740c952c623f7842ffa1d09b58b45e552/init/property_service.cpp\nline 120-126\n\nFor example, for writing, the label associated with\n\"ro.build.fingerprint\" comes from the /property_contexts file\nentry:\n\n  # ro.build.fingerprint is either set in /system/build.prop, or is\n  # set at runtime by system_server.\n  build.fingerprint       u:object_r:fingerprint_prop:s0\n\nHowever, we fail to follow this same special case when sorting\nproperties into files. Instead, ro.build.fingerprint is assigned\nu:object_r:default_prop:s0 instead of u:object_r:fingerprint_prop:s0\n\nIgnore the \"ro.\" portion when sorting properties into files.\nThis will make reads and writes of properties use the same label.\n\nBug: 21852512\nChange-Id: Ie88ffc6b78b31fc8ddf370ae27c218546fb25a83\n"
    },
    {
      "commit": "b417169d80cdf975c71b03de247ea2365e83c229",
      "tree": "6e80ff774fd361a1f5d3c16ddde63917a632ff1a",
      "parents": [
        "e371ae68ac0d6d39cacf5edc893bda2f4a61e883"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Dec 09 15:48:15 2015 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Dec 11 11:16:21 2015 -0800"
      },
      "message": "Reset access to system properties on reinitialization\n\nTreat subsequent calls to __system_properties_init() as a\nreinitialization of system properties and revoke access to prop files\nthat have been previously mapped but that the process\u0027s current context\ndoes not have access to.  Additionally reset the no_access_ flag in\ncase permissions have loosened and previously unaccessible files can now\nbe accessed.\n\nThis is meant to work around an issue that setcon() does not revoke\nmmap() mappings, so we must manually revoke them after a successful\nsetcon() call.\n\nBug 26114086\n\nChange-Id: I4d690abb6817283ca64ac26ea4c1dad398a98fbc\n"
    },
    {
      "commit": "21eadee6e97c08485c9ec52a8f44cabd4261bf4a",
      "tree": "d2ea6f70043e7651890534babfd9529875d9f901",
      "parents": [
        "0b40c13a5a2da127cb1203d33a3d170671b39247"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Dec 04 15:53:25 2015 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Dec 04 15:55:32 2015 -0800"
      },
      "message": "Do not create prop files for ctl.* properties\n\nChange-Id: Ia6660c68c9e0cb89938751dbc0747ee038394778\n"
    },
    {
      "commit": "6ed51c0e8542922f8ceb2659a7921e0af096d734",
      "tree": "229abd75c12e808b76cdbed10eeeda4b6afb0316",
      "parents": [
        "2452cf3c332fdfdae6b6b27b57acaa6786a91c87"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Dec 04 11:34:42 2015 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Dec 04 13:26:47 2015 -0800"
      },
      "message": "add checks for initialization for system properties\n\nIf a __system_property* function is called before\n__system_properties_init() then the app will will abort.  This commit\nreturns either an error code or a safe return value instead.\n\nBug 26027140\n\nChange-Id: I95ffd143e9563658ab67a397991e84fb4c46ab77\n"
    },
    {
      "commit": "845e24a05e56003d0ac35d904bfc02f5dac762f1",
      "tree": "ac0688fb1d79676bc131fdacf6ad5a774ca054d1",
      "parents": [
        "376b94f1e777375eb9ebb04a882b898aafa94625"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Dec 03 15:38:52 2015 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Dec 03 15:40:23 2015 -0800"
      },
      "message": "Remove c++14\u0027isms from system_properties\n\nChange-Id: If78e7d2770e8f8321f0d1824c3c52f93820dd325\n"
    },
    {
      "commit": "49a309ff6a8349cbd1625711497743463638bebf",
      "tree": "934a2a6d0b469f2345a733b414e26c6654fd6020",
      "parents": [
        "9cbabd8fe5ef3834682996ff23b4a5325e0586cb"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Sep 23 16:09:47 2015 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Dec 02 15:17:03 2015 -0800"
      },
      "message": "Separate properties by selabel\n\nThe purpose of this change is to add read access control to the property\nspace.\n\nIn the current design, a process either has access to the single\n/dev/__properties__ file and therefore all properties that it contains\nor it has access to no properties.  This change separates properties\ninto multiple property files based on their selabel, which allows\ncreation of sepolicies that allow read access of only specific sets of\nproperties to specific domains.\n\nBug 21852512\n\nChange-Id: Ice265db79201ca811c6b6cf6d851703f53224f03\n"
    },
    {
      "commit": "926ebe109424baa407b2cd938ba053b5c0b8ce7c",
      "tree": "6640c7e3394c261b9c5a142cd223b0e58b042630",
      "parents": [
        "0e6542b75b2f3ca155b452782d2122f34f807485"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Sep 23 15:34:40 2015 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Nov 09 17:22:44 2015 -0800"
      },
      "message": "Refactor prop_area into a class\n\nBug 21852512\n\nChange-Id: I432bf592f1a71a046c32616fc334ad77c220f0ca\n"
    },
    {
      "commit": "bfd65279a5a9018b01f71773270e462f1b9a7768",
      "tree": "c210894537fb3f3b68a300da67bd539fae9ae243",
      "parents": [
        "682a240c5d6a479ed3b8187ea99044627bf2394c"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Apr 24 09:31:32 2015 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Apr 27 07:44:03 2015 -0700"
      },
      "message": "bionic: add __system_property_area_serial()\n\nAdds a new _internal_ function. Provide a global serial number to\nsupport more efficient private caching algorithms. This allows\nto skip re-running the __system_property_find() call on misses until\nthere is a global change in the properties. This call is a read\nbarrier, the property data to be read following this call will be\nread sequentially and up to date.\n\nBug: 19544788\nChange-Id: I58e6a92baa0f3e8e7b9ec79b10af6d56407dab48\n"
    },
    {
      "commit": "b8ce47421727f7621f3e00043d535e35cd904852",
      "tree": "a2d35e197034b900f4b70cadddccf11958926dad",
      "parents": [
        "ee17e8800418a74e21dba11658234363cf6f6032"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 10 21:35:56 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 24 10:41:53 2015 -0800"
      },
      "message": "Switch system_properties.cpp from bionic atomic operations to stdatomic.\n\nBug: 17177189\nChange-Id: I42e05ad1c490cc7a8040138151afc0ee72a9b63f\n"
    },
    {
      "commit": "0dc39f9952c5e3a3121ea77357bb264ef0f8ded7",
      "tree": "7c19c0e5fda4bceccb0b0e0a1542a661f8c10f55",
      "parents": [
        "e8a95624b6ee37f7ee85f0318f1fccd916292ebd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 22 17:43:09 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 22 17:43:09 2014 -0700"
      },
      "message": "Fix a couple more cases of missing CLOEXEC.\n\nThe debuggerd case can probably never happen, because you\u0027re crashing at this\npoint anyway. The system property one seems possible though.\n\nChange-Id: Idba6a4f1d68587ec5b320d1e25f0b6a987ea32a0\n"
    },
    {
      "commit": "f73183f1a34df22b62a3d0bbf82e18d5797c9cde",
      "tree": "1bc3c9a47180aaeb2f734e835034a3f6b9ac9d00",
      "parents": [
        "7b87d441b0f2aa3ad5021ab6bd879a995a1bc2ce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 26 16:20:59 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 26 16:20:59 2014 -0700"
      },
      "message": "More cases where libc should use O_CLOEXEC.\n\nChange-Id: Idfa111aeebc5deca2399dae919e8b72eb54c23c0\n"
    },
    {
      "commit": "1e8587a479fd8b1ce9b594298a93f517816e8f15",
      "tree": "4333a0ac6fbfcd2a9ae3e11090485cc45c955625",
      "parents": [
        "c5d6df6f2fe57fd5aadbd9ebb131023234c30a0c"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Aug 19 14:07:55 2014 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Aug 19 14:50:54 2014 -0700"
      },
      "message": "Work around atomic_load(const T*) issues.\n\nBug:17067219\nChange-Id: I78e753bcf03464f5f05c3f37e394f2727d282589\n"
    },
    {
      "commit": "30214b901e8dbec9ec11230187a8e71fc8a04014",
      "tree": "b81bf8ff795f3191c5f139893ffc29b4d4624092",
      "parents": [
        "1c5e415f8c4cd2cb10ad1d1cf660d17161132772"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Jul 31 15:53:22 2014 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Aug 08 11:34:25 2014 -0700"
      },
      "message": "Add memory ordering constraint, convert to C11 atomics\n\nAdd an ordering constraint/fence to __system_property_serial.\nThis slows down a read on a Nexus 5 from about 50 to about 70 ns,\nbut avoids the possibility of seeing an inconsistent property value.\nUse C11 atomic operations where easy and appropriate.\nThis code remains not fully C++11 memory model conformant, but\nI would now expect the generated code to now be correct with current compilers.\n\nBug:14970171\nChange-Id: I0891ff1d0f914ae5c3857e3d76b6a7c8a4a07d83\n"
    },
    {
      "commit": "03eebcb6e8762e668a0d3af6bb303cccb88c5b81",
      "tree": "3c5053d90eb3d1fac8c21fa390367a911e188191",
      "parents": [
        "64dfbd242cddc3ef95576e27e3940d68b89b5fce"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jun 13 13:57:51 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jun 18 14:23:46 2014 -0700"
      },
      "message": "Move common macros into bionic_macros.h.\n\nBug: 15590152\nChange-Id: I730636613ef3653f68c5ab1d43b53beaf8e0dc25\n"
    },
    {
      "commit": "d5ed63a6a8290de88802172ce178656fbafe70c6",
      "tree": "97bb7a00c975041f6e297fe7ff53a8b116f405bf",
      "parents": [
        "f97d8713a265f44279819ba6b245dd81aada34da"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 21 18:27:40 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 21 18:30:00 2014 -0700"
      },
      "message": "Hide most of the private futex functions.\n\nAlso hide part of the system properties compatibility code, since\nwe needed to touch that to keep it building.\n\nI\u0027ll remove __futex_syscall4 and futex in a later patch.\n\nBug: 11156955\nChange-Id: Ibbf42414c5bb07fb9f1c4a169922844778e4eeae\n"
    },
    {
      "commit": "3e786987b5fb3272b37dd955fe13fc67a8ddc880",
      "tree": "5db3139cf8d8bbf6a1ea70ff00f584433268d042",
      "parents": [
        "bc7f8a791b4a510914fd5cac713415acb80fb806"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 17:02:09 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 17:02:09 2014 -0700"
      },
      "message": "Remove the unused __system_property_wait.\n\nThis isn\u0027t declared in any header file.\n\nBug: 14970171\nChange-Id: Ib9fce61343dfb6b6ccd7e1430e1a6e34e4e869df\n"
    },
    {
      "commit": "8eac9af24ea7e570e0b297bcd6ac8a46ba3ecc39",
      "tree": "d69e6b95bccca6e095b5e320198c552c9ee0e398",
      "parents": [
        "b2c3c803f0f4a50acfdc31eb28bd83b48a0026fe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 09 19:12:08 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 09 19:12:08 2014 -0700"
      },
      "message": "Bring in google3-style DISALLOW_* macros.\n\nI\u0027ve been meaning to do this for a very long time...\n\nChange-Id: Ia8c16eee7c026c3c9505399948485fb778fb0152\n"
    },
    {
      "commit": "879d33049946fa2293a61dbdb20addace953922b",
      "tree": "6711f84820764224551d9dfec174251c5c94ff0a",
      "parents": [
        "01cd78854afe5707f0d5b2b8418de07a55f8fde4"
      ],
      "author": {
        "name": "jiaguo",
        "email": "jiaguo@marvell.com",
        "time": "Thu Mar 13 17:39:58 2014 +0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 13 12:42:52 2014 -0700"
      },
      "message": "property: fix getting dirty serial value\n\n__system_property_serial just returned serial value without\nchecking if it is dirty, so check and wait until serial\nvalue is not dirty before return\n\nChange-Id: If485b6251b5555b004912c66c7c2cb455a7fdbdc\nSigned-off-by: jiaguo \u003cjiaguo@marvell.com\u003e\n"
    },
    {
      "commit": "37e9570bce0ec5c08eab53935905f1e3a133dea2",
      "tree": "cfe25aecdd5c335ea85f54a8c525f7692a110b7f",
      "parents": [
        "c6d96bb8673a4f44d84f3beaa5ed4fec1484f0ad"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 24 11:05:02 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 24 11:05:02 2014 +0000"
      },
      "message": "Fix 64-bit build.\n\nA warning about signed vs unsigned comparison was converted\ninto an error here :\n\n ...\n struct stat st;\n if (st.st_size \u003e sizeof(prop_area) {\n ...\n\nst_size is either an off64_t, which is a signed type. It\u0027s\nworth investigating why this didn\u0027t trigger a warning on 32 bit,\nwhere it\u0027s signed as well.\n\nChange-Id: Ib2622bd5c444ddcfa7fb2141f00332cbb4a0818b\n"
    },
    {
      "commit": "c9ae21a5c3b2e1baafe50f752e2e07e343d39530",
      "tree": "80d3c9ac31b5c5662b70aacd9c03d9d798ceafae",
      "parents": [
        "3572fbc8cd01d90a7f0c65a15c79abf1ece144ef"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Feb 19 17:59:05 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 24 10:45:35 2014 +0000"
      },
      "message": "Move system_properties over to C++.\n\nThis change constitutes the minimum amount of\nwork required to move the code over to C++, address\ncompiler warnings, and to make it const correct and\nidiomatic (within the constraints of being called\nfrom C code).\n\nbug: 13058886\n\nChange-Id: Ic78cf91b7c8e8f07b4ab0781333a9e243763298c\n"
    }
  ]
}
